source: rtems/cpukit/include/rtems/rtems/config.h @ e8e914b3

5
Last change on this file since e8e914b3 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: 3.7 KB
Line 
1/**
2 * @file rtems/rtems/config.h
3 *
4 * @defgroup ClassicConfig Configuration
5 *
6 * @ingroup ClassicRTEMS
7 * @brief Configuration Table
8 *
9 * This include file contains the table of user defined configuration
10 * parameters specific for the RTEMS API.
11 */
12
13/* COPYRIGHT (c) 1989-2013.
14 * On-Line Applications Research Corporation (OAR).
15 *
16 * The license and distribution terms for this file may be
17 * found in the file LICENSE in this distribution or at
18 * http://www.rtems.org/license/LICENSE.
19 */
20
21#ifndef _RTEMS_RTEMS_CONFIG_H
22#define _RTEMS_RTEMS_CONFIG_H
23
24#include <rtems/rtems/types.h>
25#include <rtems/rtems/tasks.h>
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
31/**
32 *  @defgroup ClassicConfig Configuration
33 *
34 *  @ingroup ClassicRTEMS
35 *
36 *  This encapsulates functionality related to the application's configuration
37 *  of the Classic API including the maximum number of each class of objects.
38 */
39/**@{*/
40
41/**
42 *  The following records define the Configuration Table.  The
43 *  information contained in this table is required in all
44 *  RTEMS systems, whether single or multiprocessor.  This
45 *  table primarily defines the following:
46 *
47 *     + required number of each object type
48 */
49typedef struct {
50  /**
51   * This field contains the maximum number of Classic API
52   * Tasks which are configured for this application.
53   */
54  uint32_t                    maximum_tasks;
55
56  /**
57   * This field contains the maximum number of Classic API
58   * Timers which are configured for this application.
59   */
60  uint32_t                    maximum_timers;
61
62  /**
63   * This field contains the maximum number of Classic API
64   * Semaphores which are configured for this application.
65   */
66  uint32_t                    maximum_semaphores;
67
68  /**
69   * This field contains the maximum number of Classic API
70   * Message Queues which are configured for this application.
71   */
72  uint32_t                    maximum_message_queues;
73
74  /**
75   * This field contains the maximum number of Classic API
76   * Partitions which are configured for this application.
77   */
78  uint32_t                    maximum_partitions;
79
80  /**
81   * This field contains the maximum number of Classic API
82   * Regions which are configured for this application.
83   */
84  uint32_t                    maximum_regions;
85
86  /**
87   * This field contains the maximum number of Classic API
88   * Dual Ported Memory Areas which are configured for this
89   * application.
90   */
91  uint32_t                    maximum_ports;
92
93  /**
94   * This field contains the maximum number of Classic API
95   * Rate Monotonic Periods which are configured for this
96   * application.
97   */
98  uint32_t                    maximum_periods;
99
100  /**
101   * This field contains the maximum number of Classic API
102   * Barriers which are configured for this application.
103   */
104  uint32_t                    maximum_barriers;
105
106  /**
107   * This field contains the number of Classic API Initialization
108   * Tasks which are configured for this application.
109   */
110  uint32_t                    number_of_initialization_tasks;
111
112  /**
113   * This field is the set of Classic API Initialization
114   * Tasks which are configured for this application.
115   */
116  rtems_initialization_tasks_table *User_initialization_tasks_table;
117} rtems_api_configuration_table;
118
119/**
120 *  @brief RTEMS API Configuration Table
121 *
122 *  This is the RTEMS API Configuration Table expected to be generated
123 *  by confdefs.h.
124 */
125extern rtems_api_configuration_table Configuration_RTEMS_API;
126
127/**@}*/
128
129/**
130 *  This macro returns the number of Classic API semaphores configured.
131 */
132#define rtems_configuration_get_maximum_semaphores() \
133        rtems_configuration_get_rtems_api_configuration()->maximum_semaphores
134
135#ifdef __cplusplus
136}
137#endif
138
139/**@}*/
140
141#endif
142/* end of include file */
Note: See TracBrowser for help on using the repository browser.