1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
/*
* Server Library imakefile info - this contains any special
* redefinitions, etc. that Imakefiles in the various server library
* subtrees will need.
*
* Before including this, you must set the following boolean variables:
* DoSharedLib, DoNormalLib, DoDebugLib, DoProfileLib
*
*/
#ifndef DoNormalLib
#define DoNormalLib YES
#endif
#ifndef LibraryDefines
#define LibraryDefines StandardDefines
#endif
#ifndef LibraryCDebugFlags
#define LibraryCDebugFlags DefaultCDebugFlags
#endif
#ifndef SeparateSharedCompile
#define SeparateSharedCompile YES
#endif
#ifndef SharedServerLibraryDef
#define SharedServerLibraryDef $(__NOOP__)
#endif
#ifndef LibraryCcCmd
#if DoSharedLib && defined(SharedLibraryCcCmd)
#define LibraryCcCmd SharedLibraryCcCmd
#else
#define LibraryCcCmd CcCmd
#endif
#endif
#ifndef LibraryCCOptions
#if DoSharedLib && defined(SharedLibraryCCOptions)
#define LibraryCCOptions SharedLibraryCCOptions
#else
#define LibraryCCOptions DefaultCCOptions
#endif
#endif
#if DoDebugLib
#define _DebuggedLibMkdir() LibMkdir(debugger)
#define _DebuggedObjCompile(options) DebuggedLibObjCompile(options)
#define _DebuggedCleanDir() LibCleanDir(debugger)
#else
#define _DebuggedLibMkdir() $(_NULLCMD_)
#define _DebuggedObjCompile(options) $(_NULLCMD_)
#define _DebuggedCleanDir() $(_NULLCMD_)
#endif
#if DoProfileLib
#define _ProfiledLibMkdir() LibMkdir(profiled)
#define _ProfiledObjCompile(options) ProfiledLibObjCompile(options)
#define _ProfiledCleanDir() LibCleanDir(profiled)
#else
#define _ProfiledLibMkdir() $(_NULLCMD_)
#define _ProfiledObjCompile(options) $(_NULLCMD_)
#define _ProfiledCleanDir() $(_NULLCMD_)
#endif
#if !DoNormalLib
#define _NormalLibMkdir() $(_NULLCMD_)
#define _NormalObjCompile(options) $(_NULLCMD_)
#define _NormalCleanDir() $(_NULLCMD_)
#else
#if DoSharedLib && SeparateSharedCompile
#define _NormalLibMkdir() LibMkdir(unshared)
#define _NormalObjCompile(options) UnsharedLibObjCompile(options)
#define _NormalCleanDir() LibCleanDir(unshared)
#else
#define _NormalLibMkdir() $(_NULLCMD_)
#define _NormalObjCompile(options) NormalLibObjCompile(options)
#define _NormalCleanDir() $(_NULLCMD_)
#endif
#endif
#if !DoSharedLib || (DoNormalLib && !SeparateSharedCompile)
#define _SharedObjCompile(options) $(_NULLCMD_)
#else
#if SeparateSharedCompile
#define _SharedObjCompile(options) NormalSharedLibObjCompile(options)
#else
#define _SharedObjCompile(options) NormalLibObjCompile(options)
#endif
#endif
#define SRCsuf c
#define Isuf i
#ifndef LibraryObjectRule
#define LibraryObjectRule() @@\
all:: @@\
_DebuggedLibMkdir() @@\
_ProfiledLibMkdir() @@\
_NormalLibMkdir() @@\
@@\
includes:: @@\
_DebuggedLibMkdir() @@\
_ProfiledLibMkdir() @@\
_NormalLibMkdir() @@\
@@\
.SRCsuf.Osuf: @@\
_DebuggedObjCompile($(_NOOP_)) @@\
_ProfiledObjCompile($(_NOOP_)) @@\
_NormalObjCompile($(_NOOP_)) @@\
_SharedObjCompile(SharedServerLibraryDef) @@\
@@\
clean:: @@\
_DebuggedCleanDir() @@\
_ProfiledCleanDir() @@\
_NormalCleanDir() @@\
#endif /* LibraryObjectRule */
#ifndef SpecialLibObjectRule
#define SpecialLibObjectRule(objs,depends,options) @@\
objs: depends @@\
_DebuggedObjCompile(options) @@\
_ProfiledObjCompile(options) @@\
_NormalObjCompile(options) @@\
_SharedObjCompile(options) @@\
#endif /* SpecialLibObjectRule */
#ifndef SpecialCLibObjectRule
#define SpecialCLibObjectRule(basename,depends,options) @@\
SpecialLibObjectRule(basename.Osuf,basename.SRCsuf depends,options) @@\
@@\
basename.Isuf: basename.SRCsuf depends @@\
CPPOnlyCompile(basename.SRCsuf,options) @@\
@@\
CenterLoadTarget(debug_src,basename.SRCsuf,NullParameter,$(ALLDEFINES) options)
#endif /* SpecialCLibObjectRule */
#if DoSharedLib
LibraryObjectRule()
#else
NormalLibraryObjectRule()
#endif
|