source: rtems/bsps/include/umon/cli.h @ 2afb22b

5
Last change on this file since 2afb22b 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: 5.0 KB
Line 
1/**
2 *  @file
3 *
4 *  @ingroup shared_cli
5 *
6 *  @brief Header file for Command Line Interface related stuff
7 */
8
9/*  Based upon code from MicroMonitor 1.17 from http://www.umonfw.com/
10 *  which includes this notice:
11 *
12 **************************************************************************
13 *  General notice:
14 *  This code is part of a boot-monitor package developed as a generic base
15 *  platform for embedded system designs.  As such, it is likely to be
16 *  distributed to various projects beyond the control of the original
17 *  author.  Please notify the author of any enhancements made or bugs found
18 *  so that all may benefit from the changes.  In addition, notification back
19 *  to the author will allow the new user to pick up changes that may have
20 *  been made by other users after this version of the code was distributed.
21 *
22 *  Note1: the majority of this code was edited with 4-space tabs.
23 *  Note2: as more and more contributions are accepted, the term "author"
24 *         is becoming a mis-representation of credit.
25 *
26 *  Original author:    Ed Sutter
27 *  Email:              esutter@alcatel-lucent.com
28 *  Phone:              908-582-2351
29 **************************************************************************
30 *
31 *  Ed Sutter has been informed that this code is being used in RTEMS.
32 *
33 *  This code was reformatted by Joel Sherrill from OAR Corporation and
34 *  Fernando Nicodemos <fgnicodemos@terra.com.br> from NCB - Sistemas
35 *  Embarcados Ltda. (Brazil) to be more compliant with RTEMS coding
36 *  standards and to eliminate C++ style comments.
37 */
38
39#ifndef _cli_h
40#define _cli_h
41
42#ifdef __cplusplus
43extern "C" {
44#endif
45
46/**
47 *  @defgroup shared_cli Command table structure
48 *
49 *  @ingroup shared_umon
50 *
51 *  @brief Command table structure used by the monitor:
52 */
53
54struct  monCommand {
55    char    *name;                                      /* Name of command seen by user. */
56    int     (*func)(int,char **);       /* Called when command is invoked. */
57    char    **helptxt;                          /* Help text (see notes below). */
58        long    flags;                                  /* Single-bit flags for various uses */
59                                                                        /* (see the CMDFLAG_XXX macros). */
60};
61
62#ifdef __cplusplus
63}
64#endif
65
66/* Bits currently assigned to command flags used in the monCommand
67 * structure...
68 */
69#define CMDFLAG_NOMONRC 1
70
71/* Maximum size of a command line:
72 */
73#ifndef CMDLINESIZE
74#define CMDLINESIZE     128
75#endif
76
77/* Maximum number of arguments in a command line:
78 */
79#define ARGCNT          24
80
81/* Definitions for docommand() return values:
82 *
83 * Note that the CMD_SUCCESS, CMD_FAILURE and CMD_PARAM_ERROR are return
84 * values used by the local command code also.  The remaining errors
85 * (CMD_LINE_ERROR, CMD_ULVL_DENIED and CMD_NOT_FOUND) are used only by
86 # the docommand() function.
87 *
88 *      CMD_SUCCESS:
89 *              Everything worked ok.
90 *      CMD_FAILURE:
91 *              Command parameters were valid, but command itself failed for some other
92 *              reason. The docommand() function does not print a message here, it
93 *              is assumed that the error message was printed by the local function.
94 *      CMD_PARAM_ERROR:
95 *              Command line did not parse properly.  Control was passed to a
96 *              local command function, but argument syntax caused it to choke.
97 *              In this case docommand() will print out the generic CLI syntax error
98 *              message.
99 *      CMD_LINE_ERROR:
100 *              Command line itself was invalid.  Too many args, invalid shell var
101 *              syntax, etc.. Somekind of command line error prior to checking for
102 *              the command name-to-function match.
103 *      CMD_ULVL_DENIED:
104 *              Command's user level is higher than current user level, so access
105 *              is denied.
106 *      CMD_NOT_FOUND:
107 *              Since these same return values are used for each command function
108 *              plus the docommand() function, this error indicates that docommand()
109 *              could not even find the command in the command table.
110 *      CMD_MONRC_DENIED:
111 *              The command cannot execute because it is considered illegal
112 *              when run from within the monrc file.
113 */
114#define CMD_SUCCESS                     0
115#define CMD_FAILURE                     -1
116#define CMD_PARAM_ERROR         -2
117#define CMD_LINE_ERROR          -3
118#define CMD_ULVL_DENIED         -4
119#define CMD_NOT_FOUND           -5
120#define CMD_MONRC_DENIED        -6
121
122/* Notes on help text array:
123 * The monitor's CLI processor assumes that every command's help text
124 * array abides by a few basic rules...
125 * First of all, it assumes that every array has AT LEAST two strings.
126 * The first string in the array of strings is assumed to be a one-line
127 * abstract describing the command.
128 * The second string in the array of strings is assumed to be a usage
129 * message that describes the syntax of the arguments needed by the command.
130 * If this second string is an empty string (""), the docommand() prints out
131 * a generic usage string indicating that there are no options or arguements
132 * to apply to the command.
133 * All remaining lines are formatted based on the needs of the individual
134 * command and the final string is a null pointer to let the CLI processor
135 * know where the end is.
136 * Following is an example help text array...
137 *
138 *      char *HelpHelp[] = {
139 *                      "Display command set",
140 *                      "-[d] [commandname]",
141 *                      "Options:",
142 *                      " -d   list commands and descriptions",
143 *                      0,
144 *      };
145 *
146 */
147#endif
Note: See TracBrowser for help on using the repository browser.