summaryrefslogtreecommitdiff
path: root/xc/config/cf/bsdiLib.rules
diff options
context:
space:
mode:
Diffstat (limited to 'xc/config/cf/bsdiLib.rules')
-rw-r--r--xc/config/cf/bsdiLib.rules246
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 */