XCOMM $XFree86: xc/config/cf/darwinLib.rules,v 1.8 2003/10/09 22:43:18 herrb Exp $ /* * Darwin/Mac OS X shared library rules */ #ifndef UseElfFormat #define UseElfFormat NO #endif #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 #endif #ifndef SharedLibraryLoadFlags #define SharedLibraryLoadFlags -dynamiclib #endif #ifndef PositionIndependentCFlags #define PositionIndependentCFlags -dynamic #endif #ifndef ExtraLoadFlags #define ExtraLoadFlags /**/ #endif /* * InstallSharedLibrary - generate rules to install the shared library. */ #ifndef InstallSharedLibrary #define InstallSharedLibrary(libname,rev,dest) @@\ install:: Concat(lib,libname.rev.dylib) @@\ MakeDir($(DESTDIR)dest) @@\ $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) Concat(lib,libname.rev.dylib) $(DESTDIR)dest @@\ @MAJREV=`echo rev | sed 's/\([0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\ set -x; $(RM) Concat($(DESTDIR)dest/lib,libname.$$MAJREV.dylib) && \ @@\ $(LN) Concat(lib,libname.rev.dylib) Concat($(DESTDIR)dest/lib,libname.$$MAJREV.dylib) @@\ @if $(SOSYMLINK); then (set -x; \ @@\ $(RM) Concat($(DESTDIR)dest/lib,libname.dylib); \ @@\ $(LN) Concat(lib,libname.rev.dylib) Concat($(DESTDIR)dest/lib,libname.dylib)); fi #endif /* InstallSharedLibrary */ /* * 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 # define SharedLibraryTarget(libname,rev,solist,down,up) @@\ AllTarget(Concat(lib,libname.rev.dylib)) @@\ @@\ Concat(lib,libname.rev.dylib): solist $(EXTRALIBRARYDEPS) @@\ $(RM) $@~ @@\ @MAJREV=`echo rev | sed 's/\([0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\ INSTALLNAME=Concat(lib,libname.$$MAJREV.dylib); \ @@\ set -x; (cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -install_name $(USRLIBDIR)/$$INSTALLNAME -current_version rev -compatibility_version rev solist $(REQUIREDLIBS)); \ @@\ $(RM) $$INSTALLNAME; $(LN) $@ $$INSTALLNAME; \ @@\ LinkBuildSonameLibrary($$INSTALLNAME) @@\ $(RM) $@ @@\ $(MV) $@~ $@ @@\ @if $(SOSYMLINK); then (set -x; \ @@\ $(RM) Concat(lib,libname.dylib); \ @@\ $(LN) $@ Concat(lib,libname.dylib)); fi @@\ LinkBuildLibrary($@) @@\ LinkBuildLibraryMaybe(Concat(lib,libname.dylib),$(SOSYMLINK)) @@\ @@\ clean:: @@\ @MAJREV=`echo rev | sed 's/\([0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\ set -x; $(RM) Concat(lib,libname.$$MAJREV.dylib) @@\ $(RM) Concat(lib,libname.rev.dylib) Concat(lib,libname.dylib) #endif /* SharedLibraryTarget */ /* * SharedDepLibraryTarget - generate rules to create a shared library. */ #ifndef SharedDepLibraryTarget # define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up) @@\ AllTarget(Concat(lib,libname.rev.dylib)) @@\ @@\ Concat(lib,libname.rev.dylib): deplist $(EXTRALIBRARYDEPS) @@\ $(RM) $@~ @@\ @MAJREV=`echo rev | sed 's/\([0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\ INSTALLNAME=Concat(lib,libname.$$MAJREV.dylib); \ @@\ set -x; (cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -install_name $(USRLIBDIR)/$$INSTALLNAME -current_version rev -compatibility_version rev solist $(REQUIREDLIBS)); \ @@\ $(RM) $$INSTALLNAME; $(LN) $@ $$INSTALLNAME; \ @@\ LinkBuildSonameLibrary($$INSTALLNAME) @@\ $(RM) $@ @@\ $(MV) $@~ $@ @@\ @if $(SOSYMLINK); then (set -x; \ @@\ $(RM) Concat(lib,libname.dylib); \ @@\ $(LN) $@ Concat(lib,libname.dylib)); fi @@\ LinkBuildLibrary($@) @@\ LinkBuildLibraryMaybe(Concat(lib,libname.dylib),$(SOSYMLINK)) @@\ @@\ clean:: @@\ @MAJREV=`echo rev | sed 's/\([0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\ set -x; $(RM) Concat(lib,libname.$$MAJREV.dylib) @@\ $(RM) Concat(lib,libname.rev.dylib) Concat(lib,libname.dylib) #endif /* SharedDepLibraryTarget */ /* * SharedDepCplusplusLibraryTarget - generate rules to create a shared library. */ #ifndef SharedDepCplusplusLibraryTarget # define SharedDepCplusplusLibraryTarget(libname,rev,deplist,solist,down,up) @@\ AllTarget(Concat(lib,libname.rev.dylib)) @@\ @@\ Concat(lib,libname.rev.dylib): deplist $(EXTRALIBRARYDEPS) @@\ $(RM) $@~ @@\ @MAJREV=`echo rev | sed 's/\([0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\ INSTALLNAME=Concat(lib,libname.$$MAJREV.dylib); \ @@\ set -x; (cd down; $(CXX) -o up/$@~ $(SHLIBLDFLAGS) -install_name $(USRLIBDIR)/$$INSTALLNAME -current_version rev -compatibility_version rev solist $(REQUIREDLIBS)); \ @@\ $(RM) $$INSTALLNAME; $(LN) $@ $$INSTALLNAME; \ @@\ LinkBuildSonameLibrary($$INSTALLNAME) @@\ $(RM) $@ @@\ $(MV) $@~ $@ @@\ @if $(SOSYMLINK); then (set -x; \ @@\ $(RM) Concat(lib,libname.dylib); \ @@\ $(LN) $@ Concat(lib,libname.dylib)); fi @@\ LinkBuildLibrary($@) @@\ LinkBuildLibraryMaybe(Concat(lib,libname.dylib),$(SOSYMLINK)) @@\ @@\ clean:: @@\ @MAJREV=`echo rev | sed 's/\([0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\ set -x; $(RM) Concat(lib,libname.$$MAJREV.dylib) @@\ $(RM) Concat(lib,libname.rev.dylib) Concat(lib,libname.dylib) #endif /* SharedDepCplusplusLibraryTarget */ #ifndef SharedDepModuleTarget #define SharedDepModuleTarget(name,deps,solist) @@\ AllTarget(name) @@\ @@\ name: deps @@\ $(RM) $@~ @@\ $(CC) -o $@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS) @@\ $(RM) $@ @@\ $(MV) $@~ $@ @@\ @@\ clean:: @@\ $(RM) name #endif /* SharedDepModuleTarget */ /* * SharedLibraryDataTarget - generate rules to create shlib data file; */ #ifndef SharedLibraryDataTarget #define SharedLibraryDataTarget(libname,rev,salist) #endif /* SharedLibraryDataTarget */ #ifndef InstallSharedLibraryData #define InstallSharedLibraryData(libname,rev,dest) #endif /* InstallSharedLibraryData */