diff options
Diffstat (limited to 'xc/config/cf/bsdiLib.rules')
-rw-r--r-- | xc/config/cf/bsdiLib.rules | 246 |
1 files changed, 246 insertions, 0 deletions
diff --git a/xc/config/cf/bsdiLib.rules b/xc/config/cf/bsdiLib.rules new file mode 100644 index 000000000..fc1dd8dc2 --- /dev/null +++ b/xc/config/cf/bsdiLib.rules @@ -0,0 +1,246 @@ +XCOMM $XFree86: xc/config/cf/bsdiLib.rules,v 3.1 2000/05/18 00:33:16 dawes Exp $ + +/* + * BSDI shared library rules (converted from SVr4/Linux rules) + */ + +#ifndef HasSharedLibraries +#define HasSharedLibraries YES +#endif +#ifndef ForceNormalLib +#define ForceNormalLib YES +#endif +#ifndef SharedDataSeparation +#define SharedDataSeparation NO +#endif +#ifndef SharedCodeDef +#define SharedCodeDef /**/ +#endif +#ifndef SharedLibraryDef +#define SharedLibraryDef /**/ +#endif +#ifndef ShLibIncludeFile +#define ShLibIncludeFile <bsdiLib.tmpl> +#endif +#ifndef SharedLibraryLoadFlags +#define SharedLibraryLoadFlags -shared +#endif +#ifndef PositionIndependentCFlags +#define PositionIndependentCFlags -fPIC +#endif +#ifndef PositionIndependentCplusplusFlags +#define PositionIndependentCplusplusFlags -fPIC +#endif +#ifndef BaseShLibReqs +#define BaseShLibReqs -lc +#endif +#ifndef RanlibInstFlags +#define RanlibInstFlags -t +#endif +#ifndef SharedCCLdCmd +/* NOT $(CC), which is probably 'shlicc'. */ +#define SharedCCLdCmd cc +#endif + +/* + * InstallSharedLibrary - generate rules to install the shared library. + */ +#ifndef InstallSharedLibrary +#define InstallSharedLibrary(libname,rev,dest) @@\ +install:: Concat(lib,libname.so.rev) @@\ + MakeDir($(DESTDIR)dest) @@\ + $(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) Concat(lib,libname.so.rev) $(DESTDIR)dest @@\ + $(RM) Concat($(DESTDIR)dest/lib,libname.so) @@\ + $(LN) Concat(lib,libname.so.rev) Concat($(DESTDIR)dest/lib,libname.so) +#endif /* InstallSharedLibrary */ + +/* + * InstallSharedLibraryData - generate rules to install the shared library data + */ +#ifndef InstallSharedLibraryData +#define InstallSharedLibraryData(libname,rev,dest) +#endif /* InstallSharedLibraryData */ + + +/* + * SharedLibraryTarget - generate rules to create a shared library; + * build it into a different name so that we do not hose people by having + * the library gone for long periods. + */ +#ifndef SharedLibraryTarget +#ifdef UseInstalled +#define LinkBuildSonameLibrary(lib) true +#else +#define LinkBuildSonameLibrary(lib) (RemoveFile($(BUILDLIBDIR)/lib); \ + cd $(BUILDLIBDIR); $(LN) $(BUILDINCTOP)/$(CURRENT_DIR)/lib .) +#endif + +#define SharedLibraryTarget(libname,rev,solist,down,up) @@\ +AllTarget(Concat(lib,libname.so.rev)) @@\ + @@\ +Concat(lib,libname.so.rev): solist @@\ + $(RM) $@~ @@\ + @SONAME=`echo $@ | sed 's/\.[^\.]*$$//'`; set -x; \ @@\ + (cd down; $(CCENVSETUP) SharedCCLdCmd -o up/$@~ $(SHLIBLDFLAGS) \ + -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ + $(RM) $$SONAME; $(LN) $@ $$SONAME; \ + LinkBuildSonameLibrary($$SONAME) @@\ + $(RM) $@ @@\ + $(MV) $@~ $@ @@\ + $(RM) Concat(lib,libname.so) @@\ + $(LN) $@ Concat(lib,libname.so) @@\ + LinkBuildLibrary($@) @@\ + LinkBuildLibrary(Concat(lib,libname.so)) @@\ + @@\ +clean:: @@\ + @SONAME=`echo Concat(lib,libname.so.rev) | sed 's/\.[^\.]*$$//'`; \ @@\ + set -x; $(RM) $$SONAME @@\ + $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so) + +#endif /* SharedLibraryTarget */ + +/* + * SharedDepLibraryTarget - generate rules to create a shared library; + * build it into a different name so that we do not hose people by having + * the library gone for long periods. + */ +#ifndef SharedDepLibraryTarget +#define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up) @@\ +AllTarget(Concat(lib,libname.so.rev)) @@\ + @@\ +Concat(lib,libname.so.rev): deplist @@\ + $(RM) $@~ @@\ + @SONAME=`echo $@ | sed 's/\.[^\.]*$$//'`; set -x; \ @@\ + (cd down; $(CCENVSETUP) SharedCCLdCmd -o up/$@~ $(SHLIBLDFLAGS) \ + -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ + $(RM) $$SONAME; $(LN) $@ $$SONAME; \ + LinkBuildSonameLibrary($$SONAME) @@\ + $(RM) $@ @@\ + $(MV) $@~ $@ @@\ + $(RM) Concat(lib,libname.so) @@\ + $(LN) $@ Concat(lib,libname.so) @@\ + LinkBuildLibrary($@) @@\ + LinkBuildLibrary(Concat(lib,libname.so)) @@\ + @@\ +clean:: @@\ + @SONAME=`echo Concat(lib,libname.so.rev) | sed 's/\.[^\.]*$$//'`; \ @@\ + set -x; $(RM) $$SONAME @@\ + $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so) + +#endif /* SharedDepLibraryTarget */ + +#ifndef SharedDepModuleTarget +#define SharedDepModuleTarget(name,deps,solist) @@\ +AllTarget(name) @@\ + @@\ +name: deps @@\ + $(RM) $@~ @@\ + $(CCENVSETUP) SharedCCLdCmd -o $@~ $(SHLIBLDFLAGS) \ + solist $(REQUIREDLIBS) BaseShLibReqs @@\ + $(RM) $@ @@\ + $(MV) $@~ $@ @@\ + @@\ +clean:: @@\ + $(RM) name + +#endif /* SharedDepModuleTarget */ + + +/* + * SharedLibraryDataTarget - generate rules to create shlib data file; + */ +#ifndef SharedLibraryDataTarget +#define SharedLibraryDataTarget(libname,rev,salist) +#endif /* SharedLibraryTarget */ + +/* + * Hacks for BSD/OS static shared libraries. + * We replace the normal library build and install rules. + */ + +SHLIB_MAP=$${SHLIB_MAP-/etc/shlib.map} + +#define BsdiStaticLibraryName(libname)Concat(Concat(lib,libname),_s) +#define BsdiStaticStubLibraryName(libname)BsdiStaticLibraryName(libname).a + +#define MakeBsdiStaticSharedLibrary(libname) \ + @SHARED=; \ + eval $$( (echo 'MAP() { [ "X$$1" = "X-l'libname'" ] || return 0;' \ + 'echo "TADDR=$$2;";' \ + 'echo "DADDR=$$3;";' \ + 'echo "SHARED=$$5;";' \ + 'shift 5; echo "ARGS='"'"'"$$@"'"'"';";' \ + 'exit 0; }'; cat $(SHLIB_MAP)) | sh); \ + [ -n "$$SHARED" ] || exit 0; \ + echo building static shared libname library; \ + shlib -m $(SHLIB_MAP) -t $$TADDR -d $$DADDR \ + -n BsdiStaticLibraryName(libname) \ + -s BsdiStaticStubLibraryName(libname) \ + $$( [ -f 'loader.lib'libname'.c' ] && \ + echo -b 'loader.lib'libname'.c') \ + $$( [ -f 'lib'libname'.const' ] && \ + echo -c 'lib'libname'.const') \ + $$( [ -f 'lib'libname'.except' ] && \ + echo -e 'lib'libname'.except') \ + $$( [ -f $$SHARED ] && echo -i $$SHARED) \ + $$ARGS LibraryTargetName(libname) + +#define InstallBsdiStaticSharedLibrary(libname) \ + @SHARED=; \ + eval $$( (echo 'MAP() { [ "X$$1" = "X-l'libname'" ] || return 0;' \ + 'echo "SHARED=$$5;";' \ + 'echo "STUB=$$(dirname $$4)/$$(basename $$5).a;";' \ + 'exit 0; }'; cat $(SHLIB_MAP)) | sh); \ + [ -n "$$SHARED" ] || exit 0; \ + echo installing static shared libname library; \ + $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) \ + BsdiStaticLibraryName(libname) $(DESTDIR)$$SHARED; \ + $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) \ + BsdiStaticStubLibraryName(libname) $(DESTDIR)$$STUB; \ + RanLibrary($(RANLIBINSTFLAGS) $(DESTDIR)$$STUB) @@\ + -@eval $$( (echo 'MAP() { [ "X$$1" = "X-l'libname'" ] || return 0;' \ + 'echo "LDIR=$$(dirname $$4)"; exit 0; }'; \ + cat $(SHLIB_MAP)) | sh); \ + [ -f Concat(loader.lib,libname.c) ] && \ + $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) \ + Concat(loader.lib,libname.c) \ + $(DESTDIR)$$LDIR/Concat(loader.lib,libname.c); \ + [ -f Concat(lib,libname.const) ] && \ + $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) \ + Concat(lib,libname.const) \ + $(DESTDIR)$$LDIR/Concat(lib,libname.const); \ + [ -f Concat(lib,libname.except) ] && \ + $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) \ + Concat(lib,libname.except) \ + $(DESTDIR)$$LDIR/Concat(lib,libname.except); exit 0 + +#ifndef UnsharedLibraryTarget +#define UnsharedLibraryTarget(libname,objlist,down,up) @@\ +AllTarget(LibraryTargetName(libname)) @@\ + @@\ +LibraryTargetName(libname): objlist @@\ + RemoveFile($@) @@\ + (cd down; MakeLibrary(up/$@,objlist)) @@\ + RanLibrary($@) @@\ + _LinkBuildLibrary($@) @@\ + MakeBsdiStaticSharedLibrary(libname) @@\ + @@\ +clean:: @@\ + $(RM) BsdiStaticLibraryName(libname) BsdiStaticStubLibraryName(libname) +#endif /* UnsharedLibraryTarget */ + +#ifndef UnsharedLibraryTarget3 +#define UnsharedLibraryTarget3(libname,objlist1,objlist2,objlist3,down,up) @@\ + UnsharedLibraryTarget(libname,objlist1 objlist2 objlist3,down,up) +#endif /* UnsharedLibraryTarget3 */ + +#ifndef InstallLibrary +#define InstallLibrary(libname,dest) @@\ +install:: LibraryTargetName(libname) @@\ + MakeDir($(DESTDIR)dest) @@\ + $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) \ + LibraryTargetName(libname) $(DESTDIR)dest @@\ + RanLibrary($(RANLIBINSTFLAGS) \ + $(DESTDIR)dest/LibraryTargetName(libname)) @@\ + InstallBsdiStaticSharedLibrary(libname) +#endif /* InstallLibrary */ |