111d341caSmrgXCOMM $XFree86: xc/config/cf/bsdiLib.rules,v 3.3 2003/10/09 22:43:18 herrb Exp $ 211d341caSmrg 311d341caSmrg/* 411d341caSmrg * BSDI shared library rules (converted from SVr4/Linux rules) 511d341caSmrg */ 611d341caSmrg 711d341caSmrg#ifndef HasSharedLibraries 811d341caSmrg#define HasSharedLibraries YES 911d341caSmrg#endif 1011d341caSmrg#ifndef ForceNormalLib 1111d341caSmrg#define ForceNormalLib YES 1211d341caSmrg#endif 1311d341caSmrg#ifndef SharedDataSeparation 1411d341caSmrg#define SharedDataSeparation NO 1511d341caSmrg#endif 1611d341caSmrg#ifndef SharedCodeDef 1711d341caSmrg#define SharedCodeDef /**/ 1811d341caSmrg#endif 1911d341caSmrg#ifndef SharedLibraryDef 2011d341caSmrg#define SharedLibraryDef /**/ 2111d341caSmrg#endif 2211d341caSmrg#ifndef ShLibIncludeFile 2311d341caSmrg#define ShLibIncludeFile <bsdiLib.tmpl> 2411d341caSmrg#endif 2511d341caSmrg#ifndef SharedLibraryLoadFlags 2611d341caSmrg#define SharedLibraryLoadFlags -shared 2711d341caSmrg#endif 2811d341caSmrg#ifndef PositionIndependentCFlags 2911d341caSmrg#define PositionIndependentCFlags -fPIC 3011d341caSmrg#endif 3111d341caSmrg#ifndef PositionIndependentCplusplusFlags 3211d341caSmrg#define PositionIndependentCplusplusFlags -fPIC 3311d341caSmrg#endif 3411d341caSmrg#ifndef BaseShLibReqs 3511d341caSmrg#define BaseShLibReqs -lc 3611d341caSmrg#endif 3711d341caSmrg#ifndef RanlibInstFlags 3811d341caSmrg#define RanlibInstFlags -t 3911d341caSmrg#endif 4011d341caSmrg#ifndef SharedCCLdCmd 4111d341caSmrg/* NOT $(CC), which is probably 'shlicc'. */ 4211d341caSmrg#define SharedCCLdCmd cc 4311d341caSmrg#endif 4411d341caSmrg 4511d341caSmrg/* 4611d341caSmrg * InstallSharedLibrary - generate rules to install the shared library. 4711d341caSmrg */ 4811d341caSmrg#ifndef InstallSharedLibrary 4911d341caSmrg#define InstallSharedLibrary(libname,rev,dest) @@\ 5011d341caSmrginstall:: Concat(lib,libname.so.rev) @@\ 5111d341caSmrg MakeDir($(DESTDIR)dest) @@\ 5211d341caSmrg $(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) Concat(lib,libname.so.rev) $(DESTDIR)dest @@\ 5311d341caSmrg $(RM) Concat($(DESTDIR)dest/lib,libname.so) @@\ 5411d341caSmrg $(LN) Concat(lib,libname.so.rev) Concat($(DESTDIR)dest/lib,libname.so) 5511d341caSmrg#endif /* InstallSharedLibrary */ 5611d341caSmrg 5711d341caSmrg/* 5811d341caSmrg * InstallSharedLibraryData - generate rules to install the shared library data 5911d341caSmrg */ 6011d341caSmrg#ifndef InstallSharedLibraryData 6111d341caSmrg#define InstallSharedLibraryData(libname,rev,dest) 6211d341caSmrg#endif /* InstallSharedLibraryData */ 6311d341caSmrg 6411d341caSmrg 6511d341caSmrg/* 6611d341caSmrg * SharedLibraryTarget - generate rules to create a shared library; 6711d341caSmrg * build it into a different name so that we do not hose people by having 6811d341caSmrg * the library gone for long periods. 6911d341caSmrg */ 7011d341caSmrg#ifndef SharedLibraryTarget 7111d341caSmrg#define SharedLibraryTarget(libname,rev,solist,down,up) @@\ 7211d341caSmrgAllTarget(Concat(lib,libname.so.rev)) @@\ 7311d341caSmrg @@\ 7411d341caSmrgConcat(lib,libname.so.rev): solist @@\ 7511d341caSmrg $(RM) $@~ @@\ 7611d341caSmrg @SONAME=`echo $@ | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; set -x; \ @@\ 7711d341caSmrg (cd down; $(CCENVSETUP) SharedCCLdCmd -o up/$@~ $(SHLIBLDFLAGS) \ 7811d341caSmrg -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ 7911d341caSmrg $(RM) $$SONAME; $(LN) $@ $$SONAME; \ 8011d341caSmrg LinkBuildSonameLibrary($$SONAME) @@\ 8111d341caSmrg $(RM) $@ @@\ 8211d341caSmrg $(MV) $@~ $@ @@\ 8311d341caSmrg $(RM) Concat(lib,libname.so) @@\ 8411d341caSmrg $(LN) $@ Concat(lib,libname.so) @@\ 8511d341caSmrg LinkBuildLibrary($@) @@\ 8611d341caSmrg LinkBuildLibrary(Concat(lib,libname.so)) @@\ 8711d341caSmrg @@\ 8811d341caSmrgclean:: @@\ 8911d341caSmrg @SONAME=`echo Concat(lib,libname.so.rev) | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\ 9011d341caSmrg set -x; $(RM) $$SONAME @@\ 9111d341caSmrg $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so) 9211d341caSmrg 9311d341caSmrg#endif /* SharedLibraryTarget */ 9411d341caSmrg 9511d341caSmrg/* 9611d341caSmrg * SharedDepLibraryTarget - generate rules to create a shared library; 9711d341caSmrg * build it into a different name so that we do not hose people by having 9811d341caSmrg * the library gone for long periods. 9911d341caSmrg */ 10011d341caSmrg#ifndef SharedDepLibraryTarget 10111d341caSmrg#define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up) @@\ 10211d341caSmrgAllTarget(Concat(lib,libname.so.rev)) @@\ 10311d341caSmrg @@\ 10411d341caSmrgConcat(lib,libname.so.rev): deplist @@\ 10511d341caSmrg $(RM) $@~ @@\ 10611d341caSmrg @SONAME=`echo $@ | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; set -x; \ @@\ 10711d341caSmrg (cd down; $(CCENVSETUP) SharedCCLdCmd -o up/$@~ $(SHLIBLDFLAGS) \ 10811d341caSmrg -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ 10911d341caSmrg $(RM) $$SONAME; $(LN) $@ $$SONAME; \ 11011d341caSmrg LinkBuildSonameLibrary($$SONAME) @@\ 11111d341caSmrg $(RM) $@ @@\ 11211d341caSmrg $(MV) $@~ $@ @@\ 11311d341caSmrg $(RM) Concat(lib,libname.so) @@\ 11411d341caSmrg $(LN) $@ Concat(lib,libname.so) @@\ 11511d341caSmrg LinkBuildLibrary($@) @@\ 11611d341caSmrg LinkBuildLibrary(Concat(lib,libname.so)) @@\ 11711d341caSmrg @@\ 11811d341caSmrgclean:: @@\ 11911d341caSmrg @SONAME=`echo Concat(lib,libname.so.rev) | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\ 12011d341caSmrg set -x; $(RM) $$SONAME @@\ 12111d341caSmrg $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so) 12211d341caSmrg 12311d341caSmrg#endif /* SharedDepLibraryTarget */ 12411d341caSmrg 12511d341caSmrg#ifndef SharedDepModuleTarget 12611d341caSmrg#define SharedDepModuleTarget(name,deps,solist) @@\ 12711d341caSmrgAllTarget(name) @@\ 12811d341caSmrg @@\ 12911d341caSmrgname: deps @@\ 13011d341caSmrg $(RM) $@~ @@\ 13111d341caSmrg $(CCENVSETUP) SharedCCLdCmd -o $@~ $(SHLIBLDFLAGS) \ 13211d341caSmrg solist $(REQUIREDLIBS) BaseShLibReqs @@\ 13311d341caSmrg $(RM) $@ @@\ 13411d341caSmrg $(MV) $@~ $@ @@\ 13511d341caSmrg @@\ 13611d341caSmrgclean:: @@\ 13711d341caSmrg $(RM) name 13811d341caSmrg 13911d341caSmrg#endif /* SharedDepModuleTarget */ 14011d341caSmrg 14111d341caSmrg 14211d341caSmrg/* 14311d341caSmrg * SharedLibraryDataTarget - generate rules to create shlib data file; 14411d341caSmrg */ 14511d341caSmrg#ifndef SharedLibraryDataTarget 14611d341caSmrg#define SharedLibraryDataTarget(libname,rev,salist) 14711d341caSmrg#endif /* SharedLibraryTarget */ 14811d341caSmrg 14911d341caSmrg/* 15011d341caSmrg * Hacks for BSD/OS static shared libraries. 15111d341caSmrg * We replace the normal library build and install rules. 15211d341caSmrg */ 15311d341caSmrg 15411d341caSmrgSHLIB_MAP=$${SHLIB_MAP-/etc/shlib.map} 15511d341caSmrg 15611d341caSmrg#define BsdiStaticLibraryName(libname)Concat(Concat(lib,libname),_s) 15711d341caSmrg#define BsdiStaticStubLibraryName(libname)BsdiStaticLibraryName(libname).a 15811d341caSmrg 15911d341caSmrg#define MakeBsdiStaticSharedLibrary(libname) \ 16011d341caSmrg @SHARED=; \ 16111d341caSmrg eval $$( (echo 'MAP() { [ "X$$1" = "X-l'libname'" ] || return 0;' \ 16211d341caSmrg 'echo "TADDR=$$2;";' \ 16311d341caSmrg 'echo "DADDR=$$3;";' \ 16411d341caSmrg 'echo "SHARED=$$5;";' \ 16511d341caSmrg 'shift 5; echo "ARGS='"'"'"$$@"'"'"';";' \ 16611d341caSmrg 'exit 0; }'; cat $(SHLIB_MAP)) | sh); \ 16711d341caSmrg [ -n "$$SHARED" ] || exit 0; \ 16811d341caSmrg echo building static shared libname library; \ 16911d341caSmrg shlib -m $(SHLIB_MAP) -t $$TADDR -d $$DADDR \ 17011d341caSmrg -n BsdiStaticLibraryName(libname) \ 17111d341caSmrg -s BsdiStaticStubLibraryName(libname) \ 17211d341caSmrg $$( [ -f 'loader.lib'libname'.c' ] && \ 17311d341caSmrg echo -b 'loader.lib'libname'.c') \ 17411d341caSmrg $$( [ -f 'lib'libname'.const' ] && \ 17511d341caSmrg echo -c 'lib'libname'.const') \ 17611d341caSmrg $$( [ -f 'lib'libname'.except' ] && \ 17711d341caSmrg echo -e 'lib'libname'.except') \ 17811d341caSmrg $$( [ -f $$SHARED ] && echo -i $$SHARED) \ 17911d341caSmrg $$ARGS LibraryTargetName(libname) 18011d341caSmrg 18111d341caSmrg#define InstallBsdiStaticSharedLibrary(libname) \ 18211d341caSmrg @SHARED=; \ 18311d341caSmrg eval $$( (echo 'MAP() { [ "X$$1" = "X-l'libname'" ] || return 0;' \ 18411d341caSmrg 'echo "SHARED=$$5;";' \ 18511d341caSmrg 'echo "STUB=$$(dirname $$4)/$$(basename $$5).a;";' \ 18611d341caSmrg 'exit 0; }'; cat $(SHLIB_MAP)) | sh); \ 18711d341caSmrg [ -n "$$SHARED" ] || exit 0; \ 18811d341caSmrg echo installing static shared libname library; \ 18911d341caSmrg $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) \ 19011d341caSmrg BsdiStaticLibraryName(libname) $(DESTDIR)$$SHARED; \ 19111d341caSmrg $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) \ 19211d341caSmrg BsdiStaticStubLibraryName(libname) $(DESTDIR)$$STUB; \ 19311d341caSmrg RanLibrary($(RANLIBINSTFLAGS) $(DESTDIR)$$STUB) @@\ 19411d341caSmrg -@eval $$( (echo 'MAP() { [ "X$$1" = "X-l'libname'" ] || return 0;' \ 19511d341caSmrg 'echo "LDIR=$$(dirname $$4)"; exit 0; }'; \ 19611d341caSmrg cat $(SHLIB_MAP)) | sh); \ 19711d341caSmrg [ -f Concat(loader.lib,libname.c) ] && \ 19811d341caSmrg $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) \ 19911d341caSmrg Concat(loader.lib,libname.c) \ 20011d341caSmrg $(DESTDIR)$$LDIR/Concat(loader.lib,libname.c); \ 20111d341caSmrg [ -f Concat(lib,libname.const) ] && \ 20211d341caSmrg $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) \ 20311d341caSmrg Concat(lib,libname.const) \ 20411d341caSmrg $(DESTDIR)$$LDIR/Concat(lib,libname.const); \ 20511d341caSmrg [ -f Concat(lib,libname.except) ] && \ 20611d341caSmrg $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) \ 20711d341caSmrg Concat(lib,libname.except) \ 20811d341caSmrg $(DESTDIR)$$LDIR/Concat(lib,libname.except); exit 0 20911d341caSmrg 21011d341caSmrg#ifndef UnsharedLibraryTarget 21111d341caSmrg#define UnsharedLibraryTarget(libname,objlist,down,up) @@\ 21211d341caSmrgAllTarget(LibraryTargetName(libname)) @@\ 21311d341caSmrg @@\ 21411d341caSmrgLibraryTargetName(libname): objlist @@\ 21511d341caSmrg RemoveFile($@) @@\ 21611d341caSmrg (cd down; MakeLibrary(up/$@,objlist)) @@\ 21711d341caSmrg RanLibrary($@) @@\ 21811d341caSmrg _LinkBuildLibrary($@) @@\ 21911d341caSmrg MakeBsdiStaticSharedLibrary(libname) @@\ 22011d341caSmrg @@\ 22111d341caSmrgclean:: @@\ 22211d341caSmrg $(RM) BsdiStaticLibraryName(libname) BsdiStaticStubLibraryName(libname) 22311d341caSmrg#endif /* UnsharedLibraryTarget */ 22411d341caSmrg 22511d341caSmrg#ifndef UnsharedLibraryTarget3 22611d341caSmrg#define UnsharedLibraryTarget3(libname,objlist1,objlist2,objlist3,down,up) @@\ 22711d341caSmrg UnsharedLibraryTarget(libname,objlist1 objlist2 objlist3,down,up) 22811d341caSmrg#endif /* UnsharedLibraryTarget3 */ 22911d341caSmrg 23011d341caSmrg#ifndef InstallLibrary 23111d341caSmrg#define InstallLibrary(libname,dest) @@\ 23211d341caSmrginstall:: LibraryTargetName(libname) @@\ 23311d341caSmrg MakeDir($(DESTDIR)dest) @@\ 23411d341caSmrg $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) \ 23511d341caSmrg LibraryTargetName(libname) $(DESTDIR)dest @@\ 23611d341caSmrg RanLibrary($(RANLIBINSTFLAGS) \ 23711d341caSmrg $(DESTDIR)dest/LibraryTargetName(libname)) @@\ 23811d341caSmrg InstallBsdiStaticSharedLibrary(libname) 23911d341caSmrg#endif /* InstallLibrary */ 240