source: rtems/cpukit/include/rtems/posix/config.h @ 55b69ed

5
Last change on this file since 55b69ed 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.2 KB
Line 
1/**
2 * @file
3 *
4 * @brief User Defined Configuration Parameters Specific For The POSIX API
5 *
6 * This include file contains the table of user defined configuration
7 * parameters specific for the POSIX API.
8 */
9
10/*
11 *  COPYRIGHT (c) 1989-2014.
12 *  On-Line Applications Research Corporation (OAR).
13 *
14 *  The license and distribution terms for this file may be
15 *  found in the file LICENSE in this distribution or at
16 *  http://www.rtems.org/license/LICENSE.
17 */
18
19#ifndef _RTEMS_POSIX_CONFIG_H
20#define _RTEMS_POSIX_CONFIG_H
21
22#include <stdint.h>
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
28/**
29 *  @defgroup ClassicConfig Configuration
30 *
31 *  @ingroup ClassicRTEMS
32 *
33 *  This encapsulates functionality related to the application's configuration
34 *  of the Classic API including the maximum number of each class of objects.
35 */
36/**@{*/
37
38/**
39 *  For now, we are only allowing the user to specify the entry point
40 *  and stack size for POSIX initialization threads.
41 */
42typedef struct {
43  /** This is the entry point for a POSIX initialization thread. */
44  void       *(*thread_entry)(void *);
45  /** This is the stack size for a POSIX initialization thread. */
46  int       stack_size;
47} posix_initialization_threads_table;
48
49/**
50 *  The following records define the POSIX Configuration Table.
51 *  The information contained in this table is required in all
52 *  RTEMS systems which include POSIX threads support, whether
53 *  single or multiprocessor.  This table primarily defines the
54 *  following:
55 *
56 *     + required number of each object type
57 */
58typedef struct {
59  /**
60   * This field contains the maximum number of POSIX API
61   * threads which are configured for this application.
62   */
63  uint32_t                            maximum_threads;
64
65  /**
66   * This field contains the maximum number of POSIX API
67   * timers which are configured for this application.
68   */
69  uint32_t                            maximum_timers;
70
71  /**
72   * This field contains the maximum number of POSIX API
73   * queued signals which are configured for this application.
74   */
75  uint32_t                            maximum_queued_signals;
76
77  /**
78   * This field contains the maximum number of POSIX API
79   * message queues which are configured for this application.
80   */
81  uint32_t                            maximum_message_queues;
82
83  /**
84   * This field contains the maximum number of POSIX API
85   * semaphores which are configured for this application.
86   */
87  uint32_t                            maximum_semaphores;
88
89  /**
90   * Maximum configured number of POSIX Shared memory objects.
91   */
92  uint32_t                            maximum_shms;
93
94  /**
95   * This field contains the number of POSIX API Initialization
96   * threads listed in @a User_initialization_thread_table.
97   */
98  uint32_t                            number_of_initialization_threads;
99
100  /**
101   * This field contains the list of POSIX API Initialization threads.
102   */
103  posix_initialization_threads_table *User_initialization_threads_table;
104} posix_api_configuration_table;
105
106/**
107 * @brief POSIX API configuration table.
108 *
109 * This is the POSIX API Configuration Table expected to be generated
110 * by confdefs.h.
111 */
112extern posix_api_configuration_table Configuration_POSIX_API;
113
114/**@}*/
115#ifdef __cplusplus
116}
117#endif
118
119#endif
120/* end of include file */
Note: See TracBrowser for help on using the repository browser.