1
XCOMM $XFree86: xc/config/cf/nto.rules,v 1.4 2002/01/16 00:40:00 keithp Exp $
2
XCOMM Rules for QNX/Neutrino
3
XCOMM Note that some of these will disappear when we stop cross-compiling
5
#ifndef HasSharedLibraries
6
#define HasSharedLibraries YES
9
#ifndef SharedDataSeparation
10
#define SharedDataSeparation NO
13
#define SharedCodeDef /**/
15
#ifndef SharedLibraryDef
16
#define SharedLibraryDef /**/
18
#ifndef SharedLibraryLoadFlags
19
#define SharedLibraryLoadFlags -shared
21
#ifndef PositionIndependentCFlags
22
#define PositionIndependentCFlags -fPIC
24
#ifndef PositionIndependentCplusplusFlags
25
#define PositionIndependentCplusplusFlags -fPIC
28
#define LinkFile(tofile, fromfile) @@\
30
$(CP) fromfile tofile @@\
39
#define ObjectFromSpecialSource(dst, src, flags) @@\
40
NoConfigRec(dst.c) @@\
46
SpecialCObjectRule(dst,NullParameter,flags) @@\
56
#define ObjectFromSpecialAsmSource(dst, src, flags) @@\
62
AssembleObject(flags) @@\
65
CPPOnlyAsm(dst,flags) @@\
72
XCOMM Special rule ComplexHostProgramTarget needed to compile
73
XCOMM our utilities locally because we are cross-compiling...
76
#define ComplexHostProgramTarget(program) @@\
79
CFLAGS=$(TOP_INCLUDES) $(INCLUDES) $(BOOTSTRAPCFLAGS) @@\
81
EXTRA_LOAD_FLAGS = @@\
84
AllTarget(program) @@\
86
program: $(OBJS) $(DEPLIBS) @@\
87
RemoveTargetProgram($@) @@\
88
HostLinkRule($@,$(_NOOP_),$(OBJS),$(DEPLIBS) $(LOCAL_LIBRARIES)) @@\
93
RemoveFile(ProgramTargetName(program))
95
XCOMM And this rule is again for a host simple host program when cross-compiling.
98
#define SimpleHostProgramTarget(program) @@\
102
ComplexHostProgramTarget(program)
105
#ifndef FixupLibReferences
106
#define FixupLibReferences() @@\
107
XMULIBONLY = -lXmu @@\
108
XMULIB = $(XMULIBONLY) $(XTOOLLIB) $(XLIB)
111
#ifndef SharedLibraryTarget
113
#define LinkBuildSonameLibrary(lib) true
115
#define LinkBuildSonameLibrary(lib) (RemoveFile($(BUILDLIBDIR)/lib); \
116
cd $(BUILDLIBDIR); $(LN) $(BUILDINCTOP)/$(CURRENT_DIR)/lib .)
119
#define SharedLibraryTarget(libname,rev,solist,down,up) @@\
120
AllTarget(Concat(lib,libname.so.rev)) @@\
122
Concat(lib,libname.so.rev): solist $(EXTRALIBRARYDEPS) @@\
124
@SONAME=`echo $@ | sed 's/\.[^\.]*$$//'`; set -x; \ @@\
125
(cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\
126
$(RM) $$SONAME; $(LN) $@ $$SONAME; \ @@\
127
LinkBuildSonameLibrary($$SONAME) @@\
130
@if $(SOSYMLINK); then (set -x; \ @@\
131
$(RM) Concat(lib,libname.so); \ @@\
132
$(LN) $@ Concat(lib,libname.so)); fi @@\
133
LinkBuildLibrary($@) @@\
134
LinkBuildLibrary(Concat(lib,libname.so)) @@\
137
@MAJREV=`expr rev : '\([^.]*\)'`; \ @@\
138
set -x; $(RM) Concat(lib,libname.so.$$MAJREV) @@\
139
$(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so)
142
* InstallSharedLibrary - generate rules to install the shared library.
143
* NOTE: file must be executable, hence "INSTBINFLAGS"
145
#ifndef InstallSharedLibrary
146
#define InstallSharedLibrary(libname,rev,dest) @@\
147
install:: Concat(lib,libname.so.rev) @@\
148
MakeDir($(DESTDIR)dest) @@\
149
$(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) Concat(lib,libname.so.rev) $(DESTDIR)dest @@\
150
@T=`echo Concat($(DESTDIR)dest/lib,libname.so.rev) | sed 's/\.[^\.]*$$//'`;\
151
set -x; $(RM) $$T && $(LN) Concat(lib,libname.so.rev) $$T @@\
152
@if $(SOSYMLINK); then (set -x; \
153
$(RM) Concat($(DESTDIR)dest/lib,libname.so); \ @@\
154
$(LN) Concat(lib,libname.so.rev) Concat($(DESTDIR)dest/lib,libname.so)); fi
155
#endif /* InstallSharedLibrary */
158
* SharedLibraryDataTarget - generate rules to create shlib data file;
160
#ifndef SharedLibraryDataTarget
161
#define SharedLibraryDataTarget(libname,rev,salist)
162
#endif /* SharedLibraryTarget */
165
* InstallSharedLibraryData - generate rules to install the shared library data
167
#ifndef InstallSharedLibraryData
168
#define InstallSharedLibraryData(libname,rev,dest)
169
#endif /* InstallSharedLibraryData */
171
#define BaseShLibReqs
176
* ServerTargetWithFlags - generate rules to compile, link, and relink a server
178
#ifndef ServerTargetWithFlags
179
#define ServerTargetWithFlags(server,subdirs,objects,libs,syslibs,flags) @@\
180
AllTarget(ProgramTargetName(server)) @@\
181
ProgramTargetName(server): subdirs objects libs @@\
182
MoveToBakFile($@) @@\
183
LinkRule($@,$(LDOPTIONS),objects,libs $(LDLIBS) syslibs) @@\
185
Concat(load,server): @@\
186
MoveToBakFile(ProgramTargetName(server)) @@\
187
LinkRule(ProgramTargetName(server),$(LDOPTIONS),objects,libs $(LDLIBS) syslibs) @@\
189
loadX:: Concat(load,server) @@\
191
SentinelProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\
192
SentinelLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\
193
PurifyProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\
194
PurifyLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\
195
ProofProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\
196
ProofLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\
198
InstallProgramWithFlags(server,$(BINDIR),flags) @@\
201
RemoveFile(ProgramTargetName(server))
202
#endif /* ServerTargetWithFlags */
205
* SharedDepLibraryTarget - generate rules to create a shared library.
207
#ifndef SharedDepLibraryTarget
209
#ifndef LinkBuildSonameLibrary
210
#define LinkBuildSonameLibrary(lib) true
213
#ifndef LinkBuildSonameLibrary
214
#define LinkBuildSonameLibrary(lib) (RemoveFile($(BUILDLIBDIR)/lib); \
215
cd $(BUILDLIBDIR); $(LN) $(BUILDINCTOP)/$(CURRENT_DIR)/lib .)
219
#define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up) @@\
220
AllTarget(Concat(lib,libname.so.rev)) @@\
222
Concat(lib,libname.so.rev): deplist $(EXTRALIBRARYDEPS) @@\
224
@SONAME=`echo $@ | sed 's/\.[^\.]*$$//'`; set -x; \ @@\
225
(cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\
226
$(RM) $$SONAME; $(LN) $@ $$SONAME; \ @@\
227
LinkBuildSonameLibrary($$SONAME) @@\
230
@if $(SOSYMLINK); then (set -x; \ @@\
231
$(RM) Concat(lib,libname.so); \ @@\
232
$(LN) $@ Concat(lib,libname.so)); fi @@\
233
LinkBuildLibrary($@) @@\
234
LinkBuildLibraryMaybe(Concat(lib,libname.so),$(SOSYMLINK)) @@\
237
@MAJREV=`expr rev : '\([^.]*\)'`; \ @@\
238
set -x; $(RM) Concat(lib,libname.so.$$MAJREV) @@\
239
$(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so)
241
#endif /* SharedDepLibraryTarget */
243
#ifndef SharedDepModuleTarget
244
#define SharedDepModuleTarget(name,deps,solist) @@\
250
$(CC) -o $@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS) BaseShLibReqs @@\
257
#endif /* SharedDepModuleTarget */