1XCOMM $XFree86: xc/config/cf/nto.rules,v 1.7 2003/10/09 22:43:18 herrb Exp $ 2XCOMM Rules for QNX/Neutrino 3XCOMM Note that some of these will disappear when we stop cross-compiling 4 5#ifndef HasSharedLibraries 6#define HasSharedLibraries YES 7#endif 8 9#ifndef SharedDataSeparation 10#define SharedDataSeparation NO 11#endif 12#ifndef SharedCodeDef 13#define SharedCodeDef /**/ 14#endif 15#ifndef SharedLibraryDef 16#define SharedLibraryDef /**/ 17#endif 18#ifndef SharedLibraryLoadFlags 19#define SharedLibraryLoadFlags -shared 20#endif 21#ifndef PositionIndependentCFlags 22#define PositionIndependentCFlags -fPIC 23#endif 24#ifndef PositionIndependentCplusplusFlags 25#define PositionIndependentCplusplusFlags -fPIC 26#endif 27 28#define LinkFile(tofile, fromfile) @@\ 29tofile:: fromfile @@\ 30 $(CP) fromfile tofile @@\ 31 @@\ 32includes:: tofile @@\ 33 @@\ 34depend:: tofile @@\ 35 @@\ 36clean:: @@\ 37 RemoveFile(tofile) 38 39#define ObjectFromSpecialSource(dst, src, flags) @@\ 40NoConfigRec(dst.c) @@\ 41 @@\ 42dst.c: src.c @@\ 43 RemoveFile($@) @@\ 44 $(CP) $? $@ @@\ 45 @@\ 46SpecialCObjectRule(dst,NullParameter,flags) @@\ 47 @@\ 48includes:: dst.c @@\ 49 @@\ 50depend:: dst.c @@\ 51 @@\ 52clean:: @@\ 53 RemoveFile(dst.c) 54 55 56#define ObjectFromSpecialAsmSource(dst, src, flags) @@\ 57dst.S: src.S @@\ 58 RemoveFile($@) @@\ 59 $(CP) $? $@ @@\ 60 @@\ 61dst.o: dst.S @@\ 62 AssembleObject(dst,flags) @@\ 63 @@\ 64dst.i: dst.S @@\ 65 CPPOnlyAsm(dst,flags) @@\ 66 @@\ 67depend:: dst.S @@\ 68 @@\ 69clean:: @@\ 70 RemoveFile(dst.S) 71 72XCOMM Special rule ComplexHostProgramTarget needed to compile 73XCOMM our utilities locally because we are cross-compiling... 74XCOMM 75 76#define ComplexHostProgramTarget(program) @@\ 77 CC=cc @@\ 78 STD_INCLUDES = @@\ 79 CFLAGS=$(TOP_INCLUDES) $(INCLUDES) $(BOOTSTRAPCFLAGS) @@\ 80 CCOPTIONS = @@\ 81 EXTRA_LOAD_FLAGS = @@\ 82 PROGRAM = program @@\ 83 @@\ 84AllTarget(program) @@\ 85 @@\ 86program: $(OBJS) $(DEPLIBS) @@\ 87 RemoveTargetProgram($@) @@\ 88 HostLinkRule($@,$(_NOOP_),$(OBJS),$(DEPLIBS) $(LOCAL_LIBRARIES)) @@\ 89 @@\ 90DependTarget() @@\ 91 @@\ 92clean:: @@\ 93 RemoveFile(ProgramTargetName(program)) 94 95XCOMM And this rule is again for a host simple host program when cross-compiling. 96XCOMM 97 98#define SimpleHostProgramTarget(program) @@\ 99 OBJS = program.o @@\ 100 SRCS = program.c @@\ 101 @@\ 102ComplexHostProgramTarget(program) 103 104 105#ifndef FixupLibReferences 106#define FixupLibReferences() @@\ 107XMULIBONLY = -lXmu @@\ 108XMULIB = $(XMULIBONLY) $(XTOOLLIB) $(XLIB) 109#endif 110 111#ifndef SharedLibraryTarget 112#define SharedLibraryTarget(libname,rev,solist,down,up) @@\ 113AllTarget(Concat(lib,libname.so.rev)) @@\ 114 @@\ 115Concat(lib,libname.so.rev): solist $(EXTRALIBRARYDEPS) @@\ 116 $(RM) $@~ @@\ 117 @SONAME=`echo $@ | sed 's/\.[^\.]*$$//'`; set -x; \ @@\ 118 (cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\ 119 $(RM) $$SONAME; $(LN) $@ $$SONAME; \ @@\ 120 LinkBuildSonameLibrary($$SONAME) @@\ 121 $(RM) $@ @@\ 122 $(MV) $@~ $@ @@\ 123 @if $(SOSYMLINK); then (set -x; \ @@\ 124 $(RM) Concat(lib,libname.so); \ @@\ 125 $(LN) $@ Concat(lib,libname.so)); fi @@\ 126 LinkBuildLibrary($@) @@\ 127 LinkBuildLibrary(Concat(lib,libname.so)) @@\ 128 @@\ 129clean:: @@\ 130 @MAJREV=`echo rev | sed 's/\.[^\.]*$$//'`; \ @@\ 131 set -x; $(RM) Concat(lib,libname.so.$$MAJREV) @@\ 132 $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so) 133#endif 134/* 135 * InstallSharedLibrary - generate rules to install the shared library. 136 * NOTE: file must be executable, hence "INSTBINFLAGS" 137 */ 138#ifndef InstallSharedLibrary 139#define InstallSharedLibrary(libname,rev,dest) @@\ 140install:: Concat(lib,libname.so.rev) @@\ 141 MakeDir($(DESTDIR)dest) @@\ 142 $(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) Concat(lib,libname.so.rev) $(DESTDIR)dest @@\ 143 @T=`echo Concat($(DESTDIR)dest/lib,libname.so.rev) | sed 's/\.[^\.]*$$//'`;\ 144 set -x; $(RM) $$T && $(LN) Concat(lib,libname.so.rev) $$T @@\ 145 @if $(SOSYMLINK); then (set -x; \ 146 $(RM) Concat($(DESTDIR)dest/lib,libname.so); \ @@\ 147 $(LN) Concat(lib,libname.so.rev) Concat($(DESTDIR)dest/lib,libname.so)); fi 148#endif /* InstallSharedLibrary */ 149 150/* 151 * SharedLibraryDataTarget - generate rules to create shlib data file; 152 */ 153#ifndef SharedLibraryDataTarget 154#define SharedLibraryDataTarget(libname,rev,salist) 155#endif /* SharedLibraryTarget */ 156 157/* 158 * InstallSharedLibraryData - generate rules to install the shared library data 159 */ 160#ifndef InstallSharedLibraryData 161#define InstallSharedLibraryData(libname,rev,dest) 162#endif /* InstallSharedLibraryData */ 163 164#define BaseShLibReqs 165 166 167 168/* 169 * ServerTargetWithFlags - generate rules to compile, link, and relink a server 170 */ 171#ifndef ServerTargetWithFlags 172#define ServerTargetWithFlags(server,subdirs,objects,libs,syslibs,flags) @@\ 173AllTarget(ProgramTargetName(server)) @@\ 174ProgramTargetName(server): subdirs objects libs @@\ 175 MoveToBakFile($@) @@\ 176 LinkRule($@,$(LDOPTIONS),objects,libs $(LDLIBS) syslibs) @@\ 177 @@\ 178Concat(load,server): @@\ 179 MoveToBakFile(ProgramTargetName(server)) @@\ 180 LinkRule(ProgramTargetName(server),$(LDOPTIONS),objects,libs $(LDLIBS) syslibs) @@\ 181 @@\ 182loadX:: Concat(load,server) @@\ 183 @@\ 184SentinelProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\ 185SentinelLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\ 186PurifyProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\ 187PurifyLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\ 188ProofProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\ 189ProofLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\ 190 @@\ 191InstallProgramWithFlags(server,$(BINDIR),flags) @@\ 192 @@\ 193clean:: @@\ 194 RemoveFile(ProgramTargetName(server)) 195#endif /* ServerTargetWithFlags */ 196 197/* 198 * SharedDepLibraryTarget - generate rules to create a shared library. 199 */ 200#ifndef SharedDepLibraryTarget 201#define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up) @@\ 202AllTarget(Concat(lib,libname.so.rev)) @@\ 203 @@\ 204Concat(lib,libname.so.rev): deplist $(EXTRALIBRARYDEPS) @@\ 205 $(RM) $@~ @@\ 206 @SONAME=`echo $@ | sed 's/\.[^\.]*$$//'`; set -x; \ @@\ 207 (cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\ 208 $(RM) $$SONAME; $(LN) $@ $$SONAME; \ @@\ 209 LinkBuildSonameLibrary($$SONAME) @@\ 210 $(RM) $@ @@\ 211 $(MV) $@~ $@ @@\ 212 @if $(SOSYMLINK); then (set -x; \ @@\ 213 $(RM) Concat(lib,libname.so); \ @@\ 214 $(LN) $@ Concat(lib,libname.so)); fi @@\ 215 LinkBuildLibrary($@) @@\ 216 LinkBuildLibraryMaybe(Concat(lib,libname.so),$(SOSYMLINK)) @@\ 217 @@\ 218clean:: @@\ 219 @MAJREV=`echo rev | sed 's/\.[^\.]*$$//'`; \ @@\ 220 set -x; $(RM) Concat(lib,libname.so.$$MAJREV) @@\ 221 $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so) 222 223#endif /* SharedDepLibraryTarget */ 224 225#ifndef SharedDepModuleTarget 226#define SharedDepModuleTarget(name,deps,solist) @@\ 227AllTarget(name) @@\ 228 229 @@\ 230name: deps @@\ 231 $(RM) $@~ @@\ 232 $(CC) -o $@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS) BaseShLibReqs @@\ 233 $(RM) $@ @@\ 234 $(MV) $@~ $@ @@\ 235 @@\ 236clean:: @@\ 237 $(RM) name 238 239#endif /* SharedDepModuleTarget */ 240 241