2 Copyright © 1995-2019, The AROS Development Team. All rights reserved.
4 Desc: Define the C structure for storing the command line options and the
13 #include "functionhead.h"
14 #include "stringlist.h"
16 enum command
{ CMD_UNSPECIFIED
, FILES
, LIBDEFS
, INCLUDES
, MAKEFILE
, WRITEFUNCLIST
, WRITEFD
, WRITESKEL
, WRITETHUNK
};
17 enum modtype
{ UNSPECIFIED
, LIBRARY
, MCC
, MUI
, MCP
, DEVICE
, RESOURCE
, IMAGE
, GADGET
,
18 DATATYPE
, CLASS
, HIDD
, USBCLASS
, HANDLER
21 enum optionbit
{ BIT_NOAUTOLIB
, BIT_NOEXPUNGE
, BIT_NORESIDENT
,
22 BIT_DUPBASE
, BIT_PERTASKBASE
, BIT_INCLUDES
, BIT_NOINCLUDES
,
23 BIT_STUBS
, BIT_NOSTUBS
, BIT_AUTOINIT
, BIT_NOAUTOINIT
,
24 BIT_RESAUTOINIT
, BIT_NOOPENCLOSE
, BIT_SELFINIT
,
25 BIT_STACKCALL
, BIT_RELLINKLIB
29 OPTION_NOAUTOLIB
= 1<<BIT_NOAUTOLIB
,
30 OPTION_NOEXPUNGE
= 1<<BIT_NOEXPUNGE
,
31 OPTION_NORESIDENT
= 1<<BIT_NORESIDENT
,
32 OPTION_DUPBASE
= 1<<BIT_DUPBASE
,
33 OPTION_PERTASKBASE
= 1<<BIT_PERTASKBASE
,
34 OPTION_INCLUDES
= 1<<BIT_INCLUDES
,
35 OPTION_NOINCLUDES
= 1<<BIT_NOINCLUDES
,
36 OPTION_STUBS
= 1<<BIT_STUBS
,
37 OPTION_NOSTUBS
= 1<<BIT_NOSTUBS
,
38 OPTION_AUTOINIT
= 1<<BIT_AUTOINIT
,
39 OPTION_NOAUTOINIT
= 1<<BIT_NOAUTOINIT
,
40 OPTION_RESAUTOINIT
= 1<<BIT_RESAUTOINIT
,
41 OPTION_NOOPENCLOSE
= 1<<BIT_NOOPENCLOSE
,
42 OPTION_SELFINIT
= 1<<BIT_SELFINIT
,
43 OPTION_STACKCALL
= 1<<BIT_STACKCALL
,
44 OPTION_RELLINKLIB
= 1<<BIT_RELLINKLIB
,
47 enum coptionbit
{ CBIT_PRIVATE
};
48 enum coptionflags
{ COPTION_PRIVATE
= 1<<CBIT_PRIVATE
};
50 enum intcfgbit
{ BIT_GENASTUBS
, BIT_NOREADFUNCS
};
53 CFG_GENASTUBS
= 1<<BIT_GENASTUBS
,
54 CFG_NOREADFUNCS
= 1<<BIT_NOREADFUNCS
/* all needed functions are available */
57 /* Classinfo is used to store the information of a BOOPSI class */
60 struct classinfo
*next
;
62 /* Type and name of the class */
63 enum modtype classtype
;
66 /* Priority with which the class will be initialized */
69 /* Additional options for the class */
70 enum coptionflags options
;
72 const char **boopsimprefix
;
73 char *classid
, *superclass
, *superclass_field
, *classptr_field
, *classptr_var
;
74 char *dispatcher
; /* == NULL when the generated dispatcher is used,
75 * otherwise it is the function name of the dispatcher */;
76 char *classdatatype
; /* The type of the data for every object */
78 struct functionhead
*methlist
;
80 /* Interfaces used in this class (only for HIDD classes) */
81 struct stringlist
*interfaces
;
85 /* interfaceinfo is used to store the information of a BOOPSI class */
88 struct interfaceinfo
*next
;
90 /* id and base name of the interface */
97 struct functionhead
*methodlist
;
98 struct functionhead
*attributelist
;
104 struct handlerinfo
*next
;
107 HANDLER_DOSTYPE
, /* FileSysResource registered */
108 HANDLER_DOSNODE
, /* Non-bootable DOS device */
109 HANDLER_RESIDENT
, /* AddSegment() registered */
113 int autodetect
; /* Autodetect priority (0 for not autodetectable) */
114 /* DeviceNode overrides */
115 int bootpri
; /* Boot priority */
116 int priority
; /* Task priority */
117 int stacksize
; /* Stacksize information */
118 int startup
; /* Startup id */
123 /* members that store filename and paths derived from argv */
124 char *conffile
, *confoverridefile
, *gendir
, *libgendir
, *genincdir
;
126 /* The name and type of the module */
127 char *modulename
, *modulenameupper
;
128 enum modtype modtype
;
131 char *includename
, *includenameupper
;
133 /* Flavour (sub-build) of the module */
136 /* Extra string to include in version */
139 /* firstlvo is the LVO number of the first user definable function
142 unsigned int firstlvo
;
145 enum command command
;
147 /* Name for variables and types */
148 char *basename
, *libbase
, *libbasetype
, *libbasetypeptrextern
;
151 /* The default path to put the module relative to SYS: */
154 /* The names of the fields in the custom library base for storing internal
157 char *sysbase_field
, *seglist_field
, *rootbase_field
, *oopbase_field
;
159 /* Some additional options, see optionsflags enum above */
160 enum optionflags options
;
162 /* Internal configuration flags */
163 enum intcfgflags intcfg
;
165 /* Further configuration data for the generated Resident struct */
166 char *datestring
, *copyright
;
168 unsigned int majorversion
, minorversion
;
171 /* In forcelist a list of basenames is present that need to be present in the
172 * static link library so that certain libraries are opened by a program
174 struct stringlist
*forcelist
;
176 /* Code to add to the generated files */
177 struct stringlist
*cdeflines
, *cdefprivatelines
, *stubprivatelines
, *startuplines
;
179 /* device specific data */
180 char *beginiofunc
, *abortiofunc
;
182 /* The functions of this module */
183 struct functionhead
*funclist
;
185 /* The classes defined in this module */
186 struct classinfo
*classlist
;
188 /* The interface defined in this module */
189 struct interfaceinfo
*interfacelist
;
191 /* The DOS IDs and handlers for this module */
193 struct handlerinfo
*handlerlist
;
195 /* Relative libraries used by this library
197 struct stringlist
*rellibs
;
200 /* Function prototypes */
202 struct config
*initconfig(int, char **);
204 char* getBanner(struct config
*);
205 void freeBanner(char*);