XCOMM $OpenBSD: OpenBSDLib.rules,v 1.1.1.1 2006/11/25 16:15:51 matthieu Exp $ /* * OpenBSD shared library rules */ XCOMM $XFree86: xc/config/cf/OpenBSDLib.rules,v 1.10 2003/10/31 20:49:03 herrb Exp $ #ifndef UseElfFormat #define UseElfFormat NO #endif #ifndef HasSharedLibraries #define HasSharedLibraries YES #endif #ifndef ForceNormalLib #define ForceNormalLib YES #endif #ifndef UseRpath #define UseRpath YES #endif #ifndef BaseShLibReqs #define BaseShLibReqs /* -lc implied by $(CC) */ #endif #ifndef SharedDataSeparation #define SharedDataSeparation NO #endif #ifndef SharedCodeDef #define SharedCodeDef /**/ #endif #ifndef SharedLibraryDef #define SharedLibraryDef /**/ #endif #ifndef ShLibIncludeFile #define ShLibIncludeFile #endif #ifndef RpathLoadFlags #if UseRpath #define RpathLoadFlags -Wl,-rpath,$(USRLIBDIRPATH) #else #define RpathLoadFlags /**/ #endif #endif #ifndef LibraryRpathLoadFlags #define LibraryRpathLoadFlags RpathLoadFlags #endif #ifndef SharedLibraryLoadFlags #define SharedLibraryLoadFlags -shared PositionIndependentCFlags LibraryRpathLoadFlags #endif #ifndef PositionIndependentCFlags #define PositionIndependentCFlags -fPIC #endif #ifndef PositionIndependentCplusplusFlags #define PositionIndependentCplusplusFlags -fPIC #endif #if UseElfFormat #ifndef ExtraLoadFlags #ifdef UseInstalled #define ExtraLoadFlags RpathLoadFlags #else #define ExtraLoadFlags RpathLoadFlags -Wl,-rpath-link,$(BUILDLIBDIR) #endif #endif #ifndef HardCodeLibdirFlag #define HardCodeLibdirFlag RpathLoadFlags #endif #endif /* UseElfFormat */ /* * InstallSharedLibrary - generate rules to install the shared library. * NOTE: file must be executable, hence "INSTBINFLAGS" */ #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 #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 #define SharedLibraryTarget(libname,rev,solist,down,up) @@\ AllTarget(Concat(lib,libname.so.rev)) @@\ @@\ Concat(lib,libname.so.rev): solist @@\ $(RM) $@~ @@\ set -x; \ @@\ (cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$@\ @@\ solist $(REQUIREDLIBS) BaseShLibReqs); @@\ LinkBuildSonameLibrary($@) @@\ $(RM) $@ @@\ $(MV) $@~ $@ @@\ @@\ clean:: @@\ $(RM) Concat(lib,libname.so.rev) #endif /* SharedLibraryTarget */ /* * SharedDepLibraryTarget - generate rules to create a shared library. */ #ifndef SharedDepLibraryTarget #define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up) @@\ AllTarget(Concat(lib,libname.so.rev)) @@\ @@\ Concat(lib,libname.so.rev): deplist $(EXTRALIBRARYDEPS) @@\ $(RM) $@~ @@\ (cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS)) @@\ $(RM) $@ @@\ $(MV) $@~ $@ @@\ LinkBuildLibrary($@) @@\ @@\ clean:: @@\ $(RM) Concat(lib,libname.so.rev) #endif /* SharedDepLibraryTarget */ #ifndef SharedDepModuleTarget #define SharedDepModuleTarget(name,deps,solist) @@\ AllTarget(name) @@\ @@\ name: deps @@\ $(RM) $@~ @@\ $(CC) -o $@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS) @@\ $(RM) $@ @@\ $(MV) $@~ $@ @@\ @@\ clean:: @@\ $(RM) name #endif /* SharedDepModuleTarget */ #ifndef SharedDriModuleTarget #define SharedDriModuleTarget(name,deps,solist) @@\ AllTarget(name) @@\ @@\ name: deps @@\ $(RM) $@~ $@.map @@\ $(CC) -o $@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS) BaseShLibReqs @@\ $(RM) $@ $@.map @@\ $(MV) $@~ $@ @@\ @@\ clean:: @@\ $(RM) name @@\ $(RM) name.map #endif /* SharedDriModuleTarget */ /* * SharedLibraryDataTarget - generate rules to create shlib data file; */ #ifndef SharedLibraryDataTarget #define SharedLibraryDataTarget(libname,rev,salist) #endif /* SharedLibraryTarget */ /* * DynamicModuleTarget - build a module to be dynamically loaded */ #ifdef DynamicModuleTarget #undef DynamicModuleTarget #define DynamicModuleTarget(module,modlist) @@\ AllTarget(module) @@\ @@\ module: modlist @@\ RemoveFile($@) @@\ $(CC) -o $@ $(SHLIBLDFLAGS) modlist @@\ @@\ clean:: @@\ RemoveFile(module) #endif /* DynamicModuleTarget */