source: rtems/cpukit/include/libfdt_env.h @ 89ac281

5
Last change on this file since 89ac281 was 2afb22b, checked in by Chris Johns <chrisj@…>, on 12/23/17 at 07:18:56

Remove make preinstall

A speciality of the RTEMS build system was the make preinstall step. It
copied header files from arbitrary locations into the build tree. The
header files were included via the -Bsome/build/tree/path GCC command
line option.

This has at least seven problems:

  • The make preinstall step itself needs time and disk space.
  • Errors in header files show up in the build tree copy. This makes it hard for editors to open the right file to fix the error.
  • There is no clear relationship between source and build tree header files. This makes an audit of the build process difficult.
  • The visibility of all header files in the build tree makes it difficult to enforce API barriers. For example it is discouraged to use BSP-specifics in the cpukit.
  • An introduction of a new build system is difficult.
  • Include paths specified by the -B option are system headers. This may suppress warnings.
  • The parallel build had sporadic failures on some hosts.

This patch removes the make preinstall step. All installed header
files are moved to dedicated include directories in the source tree.
Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc,
etc. Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g.
erc32, imx, qoriq, etc.

The new cpukit include directories are:

  • cpukit/include
  • cpukit/score/cpu/@RTEMS_CPU@/include
  • cpukit/libnetworking

The new BSP include directories are:

  • bsps/include
  • bsps/@RTEMS_CPU@/include
  • bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include

There are build tree include directories for generated files.

The include directory order favours the most general header file, e.g.
it is not possible to override general header files via the include path
order.

The "bootstrap -p" option was removed. The new "bootstrap -H" option
should be used to regenerate the "headers.am" files.

Update #3254.

  • Property mode set to 100644
File size: 4.0 KB
Line 
1#ifndef _LIBFDT_ENV_H
2#define _LIBFDT_ENV_H
3/*
4 * libfdt - Flat Device Tree manipulation
5 * Copyright (C) 2006 David Gibson, IBM Corporation.
6 * Copyright 2012 Kim Phillips, Freescale Semiconductor.
7 *
8 * libfdt is dual licensed: you can use it either under the terms of
9 * the GPL, or the BSD license, at your option.
10 *
11 *  a) This library is free software; you can redistribute it and/or
12 *     modify it under the terms of the GNU General Public License as
13 *     published by the Free Software Foundation; either version 2 of the
14 *     License, or (at your option) any later version.
15 *
16 *     This library is distributed in the hope that it will be useful,
17 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
18 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 *     GNU General Public License for more details.
20 *
21 *     You should have received a copy of the GNU General Public
22 *     License along with this library; if not, write to the Free
23 *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
24 *     MA 02110-1301 USA
25 *
26 * Alternatively,
27 *
28 *  b) Redistribution and use in source and binary forms, with or
29 *     without modification, are permitted provided that the following
30 *     conditions are met:
31 *
32 *     1. Redistributions of source code must retain the above
33 *        copyright notice, this list of conditions and the following
34 *        disclaimer.
35 *     2. Redistributions in binary form must reproduce the above
36 *        copyright notice, this list of conditions and the following
37 *        disclaimer in the documentation and/or other materials
38 *        provided with the distribution.
39 *
40 *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
41 *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
42 *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
43 *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
44 *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
45 *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
46 *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
47 *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
48 *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
49 *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
50 *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
51 *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
52 *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
53 */
54
55#include <stddef.h>
56#include <stdint.h>
57#include <string.h>
58
59#ifdef __CHECKER__
60#define __force __attribute__((force))
61#define __bitwise __attribute__((bitwise))
62#else
63#define __force
64#define __bitwise
65#endif
66
67typedef uint16_t __bitwise fdt16_t;
68typedef uint32_t __bitwise fdt32_t;
69typedef uint64_t __bitwise fdt64_t;
70
71#define EXTRACT_BYTE(x, n)      ((unsigned long long)((uint8_t *)&x)[n])
72#define CPU_TO_FDT16(x) ((EXTRACT_BYTE(x, 0) << 8) | EXTRACT_BYTE(x, 1))
73#define CPU_TO_FDT32(x) ((EXTRACT_BYTE(x, 0) << 24) | (EXTRACT_BYTE(x, 1) << 16) | \
74                         (EXTRACT_BYTE(x, 2) << 8) | EXTRACT_BYTE(x, 3))
75#define CPU_TO_FDT64(x) ((EXTRACT_BYTE(x, 0) << 56) | (EXTRACT_BYTE(x, 1) << 48) | \
76                         (EXTRACT_BYTE(x, 2) << 40) | (EXTRACT_BYTE(x, 3) << 32) | \
77                         (EXTRACT_BYTE(x, 4) << 24) | (EXTRACT_BYTE(x, 5) << 16) | \
78                         (EXTRACT_BYTE(x, 6) << 8) | EXTRACT_BYTE(x, 7))
79
80static inline uint16_t fdt16_to_cpu(fdt16_t x)
81{
82        return (__force uint16_t)CPU_TO_FDT16(x);
83}
84static inline fdt16_t cpu_to_fdt16(uint16_t x)
85{
86        return (__force fdt16_t)CPU_TO_FDT16(x);
87}
88
89static inline uint32_t fdt32_to_cpu(fdt32_t x)
90{
91        return (__force uint32_t)CPU_TO_FDT32(x);
92}
93static inline fdt32_t cpu_to_fdt32(uint32_t x)
94{
95        return (__force fdt32_t)CPU_TO_FDT32(x);
96}
97
98static inline uint64_t fdt64_to_cpu(fdt64_t x)
99{
100        return (__force uint64_t)CPU_TO_FDT64(x);
101}
102static inline fdt64_t cpu_to_fdt64(uint64_t x)
103{
104        return (__force fdt64_t)CPU_TO_FDT64(x);
105}
106#undef CPU_TO_FDT64
107#undef CPU_TO_FDT32
108#undef CPU_TO_FDT16
109#undef EXTRACT_BYTE
110
111#endif /* _LIBFDT_ENV_H */
Note: See TracBrowser for help on using the repository browser.