OpenBSDLib.rules revision 11d341ca
111d341caSmrgXCOMM $OpenBSD: OpenBSDLib.rules,v 1.1 2000/10/09 20:43:58 matthieu Exp $ 211d341caSmrg 311d341caSmrg 411d341caSmrg 511d341caSmrg 611d341caSmrg/* 711d341caSmrg * OpenBSD shared library rules 811d341caSmrg */ 911d341caSmrg 1011d341caSmrgXCOMM $XFree86: xc/config/cf/OpenBSDLib.rules,v 1.10 2003/10/31 20:49:03 herrb Exp $ 1111d341caSmrg 1211d341caSmrg#ifndef UseElfFormat 1311d341caSmrg#define UseElfFormat NO 1411d341caSmrg#endif 1511d341caSmrg 1611d341caSmrg#ifndef HasSharedLibraries 1711d341caSmrg#define HasSharedLibraries YES 1811d341caSmrg#endif 1911d341caSmrg#ifndef ForceNormalLib 2011d341caSmrg#define ForceNormalLib YES 2111d341caSmrg#endif 2211d341caSmrg 2311d341caSmrg#ifndef UseRpath 2411d341caSmrg#define UseRpath YES 2511d341caSmrg#endif 2611d341caSmrg 2711d341caSmrg#ifndef BaseShLibReqs 2811d341caSmrg#define BaseShLibReqs /* -lc implied by $(CC) */ 2911d341caSmrg#endif 3011d341caSmrg 3111d341caSmrg#ifndef SharedDataSeparation 3211d341caSmrg#define SharedDataSeparation NO 3311d341caSmrg#endif 3411d341caSmrg#ifndef SharedCodeDef 3511d341caSmrg#define SharedCodeDef /**/ 3611d341caSmrg#endif 3711d341caSmrg#ifndef SharedLibraryDef 3811d341caSmrg#define SharedLibraryDef /**/ 3911d341caSmrg#endif 4011d341caSmrg#ifndef ShLibIncludeFile 4111d341caSmrg#define ShLibIncludeFile <OpenBSDLib.tmpl> 4211d341caSmrg#endif 4311d341caSmrg#ifndef RpathLoadFlags 4411d341caSmrg#if UseRpath 4511d341caSmrg#define RpathLoadFlags -Wl,-rpath,$(USRLIBDIRPATH) 4611d341caSmrg#else 4711d341caSmrg#define RpathLoadFlags /**/ 4811d341caSmrg#endif 4911d341caSmrg#endif 5011d341caSmrg#ifndef LibraryRpathLoadFlags 5111d341caSmrg#define LibraryRpathLoadFlags RpathLoadFlags 5211d341caSmrg#endif 5311d341caSmrg#ifndef SharedLibraryLoadFlags 5411d341caSmrg#define SharedLibraryLoadFlags -shared PositionIndependentCFlags LibraryRpathLoadFlags 5511d341caSmrg#endif 5611d341caSmrg#ifndef PositionIndependentCFlags 5711d341caSmrg#define PositionIndependentCFlags -fPIC 5811d341caSmrg#endif 5911d341caSmrg#ifndef PositionIndependentCplusplusFlags 6011d341caSmrg#define PositionIndependentCplusplusFlags -fPIC 6111d341caSmrg#endif 6211d341caSmrg#if UseElfFormat 6311d341caSmrg#ifndef ExtraLoadFlags 6411d341caSmrg#ifdef UseInstalled 6511d341caSmrg#define ExtraLoadFlags RpathLoadFlags 6611d341caSmrg#else 6711d341caSmrg#define ExtraLoadFlags RpathLoadFlags -Wl,-rpath-link,$(BUILDLIBDIR) 6811d341caSmrg#endif 6911d341caSmrg#endif 7011d341caSmrg#ifndef HardCodeLibdirFlag 7111d341caSmrg#define HardCodeLibdirFlag RpathLoadFlags 7211d341caSmrg#endif 7311d341caSmrg#endif /* UseElfFormat */ 7411d341caSmrg 7511d341caSmrg/* 7611d341caSmrg * InstallSharedLibrary - generate rules to install the shared library. 7711d341caSmrg * NOTE: file must be executable, hence "INSTBINFLAGS" 7811d341caSmrg */ 7911d341caSmrg#ifndef InstallSharedLibrary 8011d341caSmrg#define InstallSharedLibrary(libname,rev,dest) @@\ 8111d341caSmrginstall:: Concat(lib,libname.so.rev) @@\ 8211d341caSmrg MakeDir($(DESTDIR)dest) @@\ 8311d341caSmrg $(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) Concat(lib,libname.so.rev) $(DESTDIR)dest 8411d341caSmrg#endif /* InstallSharedLibrary */ 8511d341caSmrg 8611d341caSmrg/* 8711d341caSmrg * InstallSharedLibraryData - generate rules to install the shared library data 8811d341caSmrg */ 8911d341caSmrg#ifndef InstallSharedLibraryData 9011d341caSmrg#define InstallSharedLibraryData(libname,rev,dest) 9111d341caSmrg#endif /* InstallSharedLibraryData */ 9211d341caSmrg 9311d341caSmrg 9411d341caSmrg/* 9511d341caSmrg * SharedLibraryTarget - generate rules to create a shared library; 9611d341caSmrg * build it into a different name so that we do not hose people by having 9711d341caSmrg * the library gone for long periods. 9811d341caSmrg */ 9911d341caSmrg#ifndef SharedLibraryTarget 10011d341caSmrg 10111d341caSmrg#define SharedLibraryTarget(libname,rev,solist,down,up) @@\ 10211d341caSmrgAllTarget(Concat(lib,libname.so.rev)) @@\ 10311d341caSmrg @@\ 10411d341caSmrgConcat(lib,libname.so.rev): solist @@\ 10511d341caSmrg $(RM) $@~ @@\ 10611d341caSmrg set -x; \ @@\ 10711d341caSmrg (cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$@\ @@\ 10811d341caSmrg solist $(REQUIREDLIBS) BaseShLibReqs); @@\ 10911d341caSmrg LinkBuildSonameLibrary($@) @@\ 11011d341caSmrg $(RM) $@ @@\ 11111d341caSmrg $(MV) $@~ $@ @@\ 11211d341caSmrg @@\ 11311d341caSmrgclean:: @@\ 11411d341caSmrg $(RM) Concat(lib,libname.so.rev) 11511d341caSmrg 11611d341caSmrg#endif /* SharedLibraryTarget */ 11711d341caSmrg 11811d341caSmrg 11911d341caSmrg/* 12011d341caSmrg * SharedDepLibraryTarget - generate rules to create a shared library. 12111d341caSmrg */ 12211d341caSmrg#ifndef SharedDepLibraryTarget 12311d341caSmrg#define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up) @@\ 12411d341caSmrgAllTarget(Concat(lib,libname.so.rev)) @@\ 12511d341caSmrg @@\ 12611d341caSmrgConcat(lib,libname.so.rev): deplist $(EXTRALIBRARYDEPS) @@\ 12711d341caSmrg $(RM) $@~ @@\ 12811d341caSmrg (cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS)) @@\ 12911d341caSmrg $(RM) $@ @@\ 13011d341caSmrg $(MV) $@~ $@ @@\ 13111d341caSmrg LinkBuildLibrary($@) @@\ 13211d341caSmrg @@\ 13311d341caSmrgclean:: @@\ 13411d341caSmrg $(RM) Concat(lib,libname.so.rev) 13511d341caSmrg 13611d341caSmrg#endif /* SharedDepLibraryTarget */ 13711d341caSmrg 13811d341caSmrg#ifndef SharedDepModuleTarget 13911d341caSmrg#define SharedDepModuleTarget(name,deps,solist) @@\ 14011d341caSmrgAllTarget(name) @@\ 14111d341caSmrg @@\ 14211d341caSmrgname: deps @@\ 14311d341caSmrg $(RM) $@~ @@\ 14411d341caSmrg $(CC) -o $@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS) @@\ 14511d341caSmrg $(RM) $@ @@\ 14611d341caSmrg $(MV) $@~ $@ @@\ 14711d341caSmrg @@\ 14811d341caSmrgclean:: @@\ 14911d341caSmrg $(RM) name 15011d341caSmrg 15111d341caSmrg#endif /* SharedDepModuleTarget */ 15211d341caSmrg 15311d341caSmrg#ifndef SharedDriModuleTarget 15411d341caSmrg#define SharedDriModuleTarget(name,deps,solist) @@\ 15511d341caSmrgAllTarget(name) @@\ 15611d341caSmrg @@\ 15711d341caSmrgname: deps @@\ 15811d341caSmrg $(RM) $@~ $@.map @@\ 15911d341caSmrg $(CC) -o $@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS) BaseShLibReqs @@\ 16011d341caSmrg $(RM) $@ $@.map @@\ 16111d341caSmrg $(MV) $@~ $@ @@\ 16211d341caSmrg @@\ 16311d341caSmrgclean:: @@\ 16411d341caSmrg $(RM) name @@\ 16511d341caSmrg $(RM) name.map 16611d341caSmrg 16711d341caSmrg#endif /* SharedDriModuleTarget */ 16811d341caSmrg 16911d341caSmrg/* 17011d341caSmrg * SharedLibraryDataTarget - generate rules to create shlib data file; 17111d341caSmrg */ 17211d341caSmrg#ifndef SharedLibraryDataTarget 17311d341caSmrg#define SharedLibraryDataTarget(libname,rev,salist) 17411d341caSmrg#endif /* SharedLibraryTarget */ 17511d341caSmrg 17611d341caSmrg/* 17711d341caSmrg * DynamicModuleTarget - build a module to be dynamically loaded 17811d341caSmrg */ 17911d341caSmrg#ifdef DynamicModuleTarget 18011d341caSmrg#undef DynamicModuleTarget 18111d341caSmrg#define DynamicModuleTarget(module,modlist) @@\ 18211d341caSmrgAllTarget(module) @@\ 18311d341caSmrg @@\ 18411d341caSmrgmodule: modlist @@\ 18511d341caSmrg RemoveFile($@) @@\ 18611d341caSmrg $(CC) -o $@ $(SHLIBLDFLAGS) modlist @@\ 18711d341caSmrg @@\ 18811d341caSmrgclean:: @@\ 18911d341caSmrg RemoveFile(module) 19011d341caSmrg#endif /* DynamicModuleTarget */ 19111d341caSmrg 192