11c80d5b0SmrgXCOMM $XFree86: xc/config/cf/nto.rules,v 1.7 2003/10/09 22:43:18 herrb Exp $
211d341caSmrgXCOMM Rules for QNX/Neutrino
311d341caSmrgXCOMM Note that some of these will disappear when we stop cross-compiling
411d341caSmrg
511d341caSmrg#ifndef HasSharedLibraries
611d341caSmrg#define HasSharedLibraries YES
711d341caSmrg#endif
811d341caSmrg
911d341caSmrg#ifndef SharedDataSeparation
1011d341caSmrg#define SharedDataSeparation NO
1111d341caSmrg#endif
1211d341caSmrg#ifndef SharedCodeDef
1311d341caSmrg#define SharedCodeDef /**/
1411d341caSmrg#endif
1511d341caSmrg#ifndef SharedLibraryDef
1611d341caSmrg#define SharedLibraryDef /**/
1711d341caSmrg#endif
1811d341caSmrg#ifndef SharedLibraryLoadFlags
1911d341caSmrg#define SharedLibraryLoadFlags -shared
2011d341caSmrg#endif
2111d341caSmrg#ifndef PositionIndependentCFlags
2211d341caSmrg#define PositionIndependentCFlags -fPIC
2311d341caSmrg#endif
2411d341caSmrg#ifndef PositionIndependentCplusplusFlags
2511d341caSmrg#define PositionIndependentCplusplusFlags -fPIC
2611d341caSmrg#endif
2711d341caSmrg
2811d341caSmrg#define LinkFile(tofile, fromfile)				@@\
2911d341caSmrgtofile:: fromfile						@@\
3011d341caSmrg	$(CP) fromfile tofile					@@\
3111d341caSmrg								@@\
3211d341caSmrgincludes:: tofile						@@\
3311d341caSmrg								@@\
3411d341caSmrgdepend:: tofile							@@\
3511d341caSmrg								@@\
3611d341caSmrgclean::								@@\
3711d341caSmrg	RemoveFile(tofile)
3811d341caSmrg
3911d341caSmrg#define ObjectFromSpecialSource(dst, src, flags)		@@\
4011d341caSmrgNoConfigRec(dst.c)						@@\
4111d341caSmrg								@@\
4211d341caSmrgdst.c: src.c							@@\
4311d341caSmrg	RemoveFile($@)						@@\
4411d341caSmrg	$(CP) $? $@						@@\
4511d341caSmrg								@@\
4611d341caSmrgSpecialCObjectRule(dst,NullParameter,flags)			@@\
4711d341caSmrg								@@\
4811d341caSmrgincludes:: dst.c						@@\
4911d341caSmrg								@@\
5011d341caSmrgdepend:: dst.c							@@\
5111d341caSmrg								@@\
5211d341caSmrgclean::								@@\
5311d341caSmrg	RemoveFile(dst.c)
5411d341caSmrg
5511d341caSmrg
5611d341caSmrg#define ObjectFromSpecialAsmSource(dst, src, flags)		@@\
5711d341caSmrgdst.S: src.S							@@\
5811d341caSmrg	RemoveFile($@)						@@\
5911d341caSmrg	$(CP) $? $@						@@\
6011d341caSmrg								@@\
6111d341caSmrgdst.o: dst.S							@@\
6211d341caSmrg	AssembleObject(dst,flags)				@@\
6311d341caSmrg								@@\
6411d341caSmrgdst.i: dst.S							@@\
6511d341caSmrg	CPPOnlyAsm(dst,flags)					@@\
6611d341caSmrg								@@\
6711d341caSmrgdepend:: dst.S							@@\
6811d341caSmrg								@@\
6911d341caSmrgclean::								@@\
7011d341caSmrg	RemoveFile(dst.S)
7111d341caSmrg
721c80d5b0SmrgXCOMM Special rule ComplexHostProgramTarget needed to compile
7311d341caSmrgXCOMM our utilities locally because we are cross-compiling...
7411d341caSmrgXCOMM
7511d341caSmrg
7611d341caSmrg#define ComplexHostProgramTarget(program)			@@\
7711d341caSmrg           CC=cc						@@\
7811d341caSmrg           STD_INCLUDES =					@@\
7911d341caSmrg           CFLAGS=$(TOP_INCLUDES) $(INCLUDES) $(BOOTSTRAPCFLAGS)	@@\
8011d341caSmrg           CCOPTIONS =						@@\
8111d341caSmrg           EXTRA_LOAD_FLAGS =					@@\
8211d341caSmrg           PROGRAM = program					@@\
8311d341caSmrg								@@\
8411d341caSmrgAllTarget(program)						@@\
8511d341caSmrg								@@\
8611d341caSmrgprogram: $(OBJS) $(DEPLIBS)					@@\
8711d341caSmrg	RemoveTargetProgram($@)					@@\
8811d341caSmrg	HostLinkRule($@,$(_NOOP_),$(OBJS),$(DEPLIBS) $(LOCAL_LIBRARIES)) @@\
8911d341caSmrg								@@\
9011d341caSmrgDependTarget()							@@\
9111d341caSmrg								@@\
9211d341caSmrgclean::								@@\
9311d341caSmrg	RemoveFile(ProgramTargetName(program))
9411d341caSmrg
9511d341caSmrgXCOMM And this rule is again for a host simple host program when cross-compiling.
9611d341caSmrgXCOMM
9711d341caSmrg
9811d341caSmrg#define SimpleHostProgramTarget(program)			@@\
9911d341caSmrg         OBJS = program.o					@@\
10011d341caSmrg         SRCS = program.c					@@\
10111d341caSmrg								@@\
10211d341caSmrgComplexHostProgramTarget(program)
1031c80d5b0Smrg
10411d341caSmrg
10511d341caSmrg#ifndef FixupLibReferences
10611d341caSmrg#define FixupLibReferences()						@@\
10711d341caSmrgXMULIBONLY = -lXmu							@@\
10811d341caSmrgXMULIB = $(XMULIBONLY) $(XTOOLLIB) $(XLIB)
10911d341caSmrg#endif
11011d341caSmrg
11111d341caSmrg#ifndef SharedLibraryTarget
11211d341caSmrg#define SharedLibraryTarget(libname,rev,solist,down,up)			@@\
11311d341caSmrgAllTarget(Concat(lib,libname.so.rev))					@@\
11411d341caSmrg									@@\
11511d341caSmrgConcat(lib,libname.so.rev):  solist $(EXTRALIBRARYDEPS)			@@\
11611d341caSmrg	$(RM) $@~							@@\
11711d341caSmrg	@SONAME=`echo $@ | sed 's/\.[^\.]*$$//'`; set -x; \		@@\
11811d341caSmrg		(cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\
11911d341caSmrg		$(RM) $$SONAME; $(LN) $@ $$SONAME; \			@@\
12011d341caSmrg		LinkBuildSonameLibrary($$SONAME)			@@\
12111d341caSmrg	$(RM) $@ 							@@\
12211d341caSmrg	$(MV) $@~ $@							@@\
12311d341caSmrg	@if $(SOSYMLINK); then (set -x; \				@@\
12411d341caSmrg 	 $(RM) Concat(lib,libname.so); \				@@\
12511d341caSmrg	 $(LN) $@ Concat(lib,libname.so)); fi				@@\
12611d341caSmrg	LinkBuildLibrary($@)						@@\
12711d341caSmrg	LinkBuildLibrary(Concat(lib,libname.so))			@@\
12811d341caSmrg									@@\
12911d341caSmrgclean::									@@\
13011d341caSmrg	@MAJREV=`echo rev | sed 's/\.[^\.]*$$//'`; \			@@\
13111d341caSmrg	set -x; $(RM) Concat(lib,libname.so.$$MAJREV)			@@\
13211d341caSmrg	$(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so)
13311d341caSmrg#endif
13411d341caSmrg/*
13511d341caSmrg * InstallSharedLibrary - generate rules to install the shared library.
13611d341caSmrg * NOTE: file must be executable, hence "INSTBINFLAGS"
13711d341caSmrg */
13811d341caSmrg#ifndef InstallSharedLibrary
13911d341caSmrg#define	InstallSharedLibrary(libname,rev,dest)				@@\
14011d341caSmrginstall:: Concat(lib,libname.so.rev) 					@@\
14111d341caSmrg	MakeDir($(DESTDIR)dest)						@@\
14211d341caSmrg	$(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) Concat(lib,libname.so.rev) $(DESTDIR)dest @@\
14311d341caSmrg	@T=`echo Concat($(DESTDIR)dest/lib,libname.so.rev) | sed 's/\.[^\.]*$$//'`;\
14411d341caSmrg	  set -x; $(RM) $$T && $(LN) Concat(lib,libname.so.rev) $$T	@@\
14511d341caSmrg	@if $(SOSYMLINK); then (set -x; \
14611d341caSmrg	  $(RM) Concat($(DESTDIR)dest/lib,libname.so); \		@@\
14711d341caSmrg	  $(LN) Concat(lib,libname.so.rev) Concat($(DESTDIR)dest/lib,libname.so)); fi
14811d341caSmrg#endif /* InstallSharedLibrary */
14911d341caSmrg
15011d341caSmrg/*
15111d341caSmrg * SharedLibraryDataTarget - generate rules to create shlib data file;
15211d341caSmrg */
15311d341caSmrg#ifndef SharedLibraryDataTarget
15411d341caSmrg#define SharedLibraryDataTarget(libname,rev,salist)
15511d341caSmrg#endif /* SharedLibraryTarget */
15611d341caSmrg
15711d341caSmrg/*
15811d341caSmrg * InstallSharedLibraryData - generate rules to install the shared library data
15911d341caSmrg */
16011d341caSmrg#ifndef InstallSharedLibraryData
16111d341caSmrg#define	InstallSharedLibraryData(libname,rev,dest)
16211d341caSmrg#endif /* InstallSharedLibraryData */
16311d341caSmrg
16411d341caSmrg#define BaseShLibReqs
16511d341caSmrg
16611d341caSmrg
16711d341caSmrg
16811d341caSmrg/*
16911d341caSmrg * ServerTargetWithFlags - generate rules to compile, link, and relink a server
17011d341caSmrg */
17111d341caSmrg#ifndef ServerTargetWithFlags
17211d341caSmrg#define	ServerTargetWithFlags(server,subdirs,objects,libs,syslibs,flags) @@\
17311d341caSmrgAllTarget(ProgramTargetName(server))					@@\
17411d341caSmrgProgramTargetName(server): subdirs objects libs				@@\
17511d341caSmrg	MoveToBakFile($@)						@@\
17611d341caSmrg	LinkRule($@,$(LDOPTIONS),objects,libs $(LDLIBS) syslibs) 	@@\
17711d341caSmrg									@@\
17811d341caSmrgConcat(load,server):							@@\
17911d341caSmrg	MoveToBakFile(ProgramTargetName(server))			@@\
18011d341caSmrg	LinkRule(ProgramTargetName(server),$(LDOPTIONS),objects,libs $(LDLIBS) syslibs) @@\
18111d341caSmrg									@@\
18211d341caSmrgloadX:: Concat(load,server)						@@\
18311d341caSmrg									@@\
18411d341caSmrgSentinelProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\
18511d341caSmrgSentinelLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\
18611d341caSmrgPurifyProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\
18711d341caSmrgPurifyLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\
18811d341caSmrgProofProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\
18911d341caSmrgProofLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\
19011d341caSmrg									@@\
19111d341caSmrgInstallProgramWithFlags(server,$(BINDIR),flags)				@@\
19211d341caSmrg									@@\
19311d341caSmrgclean::									@@\
19411d341caSmrg	RemoveFile(ProgramTargetName(server))
19511d341caSmrg#endif /* ServerTargetWithFlags */
19611d341caSmrg
19711d341caSmrg/*
19811d341caSmrg * SharedDepLibraryTarget - generate rules to create a shared library.
19911d341caSmrg */
20011d341caSmrg#ifndef SharedDepLibraryTarget
20111d341caSmrg#define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up)	@@\
20211d341caSmrgAllTarget(Concat(lib,libname.so.rev))					@@\
20311d341caSmrg									@@\
20411d341caSmrgConcat(lib,libname.so.rev):  deplist $(EXTRALIBRARYDEPS)		@@\
20511d341caSmrg	$(RM) $@~							@@\
20611d341caSmrg	@SONAME=`echo $@ | sed 's/\.[^\.]*$$//'`; set -x; \		@@\
20711d341caSmrg		(cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\
20811d341caSmrg		$(RM) $$SONAME; $(LN) $@ $$SONAME; \			@@\
20911d341caSmrg		LinkBuildSonameLibrary($$SONAME)			@@\
21011d341caSmrg	$(RM) $@ 							@@\
21111d341caSmrg	$(MV) $@~ $@							@@\
21211d341caSmrg	@if $(SOSYMLINK); then (set -x; \				@@\
21311d341caSmrg	  $(RM) Concat(lib,libname.so); \				@@\
21411d341caSmrg	  $(LN) $@ Concat(lib,libname.so)); fi				@@\
21511d341caSmrg	LinkBuildLibrary($@)						@@\
21611d341caSmrg	LinkBuildLibraryMaybe(Concat(lib,libname.so),$(SOSYMLINK))	@@\
21711d341caSmrg									@@\
21811d341caSmrgclean::									@@\
21911d341caSmrg	@MAJREV=`echo rev | sed 's/\.[^\.]*$$//'`; \			@@\
22011d341caSmrg	set -x; $(RM) Concat(lib,libname.so.$$MAJREV)			@@\
22111d341caSmrg	$(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so)
22211d341caSmrg
22311d341caSmrg#endif /* SharedDepLibraryTarget */
22411d341caSmrg
22511d341caSmrg#ifndef SharedDepModuleTarget
22611d341caSmrg#define SharedDepModuleTarget(name,deps,solist)				@@\
22711d341caSmrgAllTarget(name)								@@\
22811d341caSmrg
22911d341caSmrg									@@\
23011d341caSmrgname: deps								@@\
23111d341caSmrg	$(RM) $@~							@@\
23211d341caSmrg	$(CC) -o $@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS) BaseShLibReqs @@\
23311d341caSmrg	$(RM) $@							@@\
23411d341caSmrg	$(MV) $@~ $@							@@\
23511d341caSmrg									@@\
23611d341caSmrgclean::									@@\
23711d341caSmrg	$(RM) name
23811d341caSmrg
23911d341caSmrg#endif /* SharedDepModuleTarget */
24011d341caSmrg
241