bsdLib.rules revision 11d341ca
111d341caSmrgXCOMM $Xorg: bsdLib.rules,v 1.3 2000/08/17 19:41:47 cpqbld Exp $ 211d341caSmrg 311d341caSmrg 411d341caSmrg 511d341caSmrg 611d341caSmrg 711d341caSmrgXCOMM $XFree86: xc/config/cf/bsdLib.rules,v 3.27 2003/11/20 00:41:37 dawes Exp $ 811d341caSmrg/* 911d341caSmrg * NetBSD/FreeBSD shared library rules 1011d341caSmrg */ 1111d341caSmrg 1211d341caSmrg#ifndef UseElfFormat 1311d341caSmrg#define UseElfFormat NO 1411d341caSmrg#endif 1511d341caSmrg 1611d341caSmrg#if !UseElfFormat 1711d341caSmrg/* a.out shared libs */ 1811d341caSmrg#ifndef HasSharedLibraries 1911d341caSmrg# ifndef Arm32Architecture 2011d341caSmrg# define HasSharedLibraries YES 2111d341caSmrg# endif 2211d341caSmrg#endif 2311d341caSmrg#ifndef SharedDataSeparation 2411d341caSmrg#define SharedDataSeparation NO 2511d341caSmrg#endif 2611d341caSmrg#ifndef SharedCodeDef 2711d341caSmrg#define SharedCodeDef 2811d341caSmrg#endif 2911d341caSmrg#ifndef SharedLibraryDef 3011d341caSmrg#define SharedLibraryDef -DBSDSHLIB 3111d341caSmrg#endif 3211d341caSmrg#ifndef ShLibIncludeFile 3311d341caSmrg#define ShLibIncludeFile <bsdLib.tmpl> 3411d341caSmrg#endif 3511d341caSmrg#ifndef SharedLibraryLoadFlags 3611d341caSmrg#define SharedLibraryLoadFlags -Bshareable 3711d341caSmrg#endif 3811d341caSmrg#ifndef PositionIndependentCFlags 3911d341caSmrg#define PositionIndependentCFlags -fpic 4011d341caSmrg#endif 4111d341caSmrg 4211d341caSmrg/* 4311d341caSmrg * InstallSharedLibrary - generate rules to install the shared library. 4411d341caSmrg */ 4511d341caSmrg#ifndef InstallSharedLibrary 4611d341caSmrg#define InstallSharedLibrary(libname,rev,dest) @@\ 4711d341caSmrginstall:: Concat(lib,libname.so.rev) @@\ 4811d341caSmrg MakeDir($(DESTDIR)dest) @@\ 4911d341caSmrg $(INSTALL) -c $(INSTLIBFLAGS) Concat(lib,libname.so.rev) $(DESTDIR)dest 5011d341caSmrg@@\ 5111d341caSmrg 5211d341caSmrg#endif /* InstallSharedLibrary */ 5311d341caSmrg 5411d341caSmrg/* 5511d341caSmrg * SharedLibraryTarget - generate rules to create a shared library; 5611d341caSmrg * build it into a different name so that we do not hose people by having 5711d341caSmrg * the library gone for long periods. 5811d341caSmrg */ 5911d341caSmrg#ifndef SharedLibraryTarget 6011d341caSmrg#define SharedLibraryTarget(libname,rev,solist,down,up) @@\ 6111d341caSmrgAllTarget(Concat(lib,libname.so.rev)) @@\ 6211d341caSmrg @@\ 6311d341caSmrgConcat(lib,libname.so.rev): solist $(EXTRALIBRARYDEPS) @@\ 6411d341caSmrg $(RM) $@~ @@\ 6511d341caSmrg (cd down; $(LD) -o up/$@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS)) @@\ 6611d341caSmrg $(RM) $@ @@\ 6711d341caSmrg $(MV) $@~ $@ @@\ 6811d341caSmrg LinkBuildLibrary($@) @@\ 6911d341caSmrg @@\ 7011d341caSmrgclean:: @@\ 7111d341caSmrg $(RM) Concat(lib,libname.so.rev) 7211d341caSmrg 7311d341caSmrg#endif /* SharedLibraryTarget */ 7411d341caSmrg 7511d341caSmrg/* 7611d341caSmrg * SharedDepLibraryTarget - generate rules to create a shared library. 7711d341caSmrg */ 7811d341caSmrg#ifndef SharedDepLibraryTarget 7911d341caSmrg#define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up) @@\ 8011d341caSmrgAllTarget(Concat(lib,libname.so.rev)) @@\ 8111d341caSmrg @@\ 8211d341caSmrgConcat(lib,libname.so.rev): deplist $(EXTRALIBRARYDEPS) @@\ 8311d341caSmrg $(RM) $@~ @@\ 8411d341caSmrg (cd down; $(LD) -o up/$@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS)) @@\ 8511d341caSmrg $(RM) $@ @@\ 8611d341caSmrg $(MV) $@~ $@ @@\ 8711d341caSmrg LinkBuildLibrary($@) @@\ 8811d341caSmrg @@\ 8911d341caSmrgclean:: @@\ 9011d341caSmrg $(RM) Concat(lib,libname.so.rev) 9111d341caSmrg 9211d341caSmrg#endif /* SharedDepLibraryTarget */ 9311d341caSmrg 9411d341caSmrg#ifndef SharedDepModuleTarget 9511d341caSmrg#define SharedDepModuleTarget(name,deps,solist) @@\ 9611d341caSmrgAllTarget(name) @@\ 9711d341caSmrg @@\ 9811d341caSmrgname: deps @@\ 9911d341caSmrg $(RM) $@~ @@\ 10011d341caSmrg $(LD) -o $@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS) @@\ 10111d341caSmrg $(RM) $@ @@\ 10211d341caSmrg $(MV) $@~ $@ @@\ 10311d341caSmrg @@\ 10411d341caSmrgclean:: @@\ 10511d341caSmrg $(RM) name 10611d341caSmrg 10711d341caSmrg#endif /* SharedDepModuleTarget */ 10811d341caSmrg 10911d341caSmrg/* 11011d341caSmrg * SharedLibraryDataTarget - generate rules to create shlib data file; 11111d341caSmrg */ 11211d341caSmrg#ifndef SharedLibraryDataTarget 11311d341caSmrg#define SharedLibraryDataTarget(libname,rev,salist) 11411d341caSmrg#endif /* SharedLibraryDataTarget */ 11511d341caSmrg 11611d341caSmrg#ifndef InstallSharedLibraryData 11711d341caSmrg#define InstallSharedLibraryData(libname,rev,dest) 11811d341caSmrg#endif /* InstallSharedLibraryData */ 11911d341caSmrg 12011d341caSmrg/* 12111d341caSmrg * SharedLibReferences - variables for shared libraries 12211d341caSmrg */ 12311d341caSmrg#ifndef SharedLibReferences 12411d341caSmrg#define SharedLibReferences(varname,libname,libsource,revname,rev) @@\ 12511d341caSmrgrevname = rev @@\ 12611d341caSmrgConcat3(DEP,varname,LIB) = SharedLibDependencies(libname,libsource,revname) @@\ 12711d341caSmrgConcat(varname,LIB) = LoaderLibPrefix Concat(-l,libname) @@\ 12811d341caSmrgLintLibReferences(varname,libname,libsource) 12911d341caSmrg#endif 13011d341caSmrg 13111d341caSmrg /* 13211d341caSmrg * SharedFontLibReferences - shared font libraries 13311d341caSmrg */ 13411d341caSmrg#ifndef SharedFontLibReferences 13511d341caSmrg#define SharedFontLibReferences() @@\ 13611d341caSmrgSOFONTREV = SharedFontRev @@\ 13711d341caSmrgDEPFONTLIB = SharedLibDependencies(Xfont,$(FONTLIBSRC),SOFONTREV) @@\ 13811d341caSmrgFONTLIB = -L$(FREETYPELIBDIR) -L$(FONTLIBSRC) LoaderLibPrefix -lXfont @@\ 13911d341caSmrgLintLibReferences(XFONT,Xfont,$(FONTLIBSRC)) 14011d341caSmrg#endif 14111d341caSmrg 14211d341caSmrg/* 14311d341caSmrg * SharedDSLibReferences - variables for shared libraries 14411d341caSmrg */ 14511d341caSmrg#ifndef SharedDSLibReferences 14611d341caSmrg#define SharedDSLibReferences(varname,libname,libsource,revname,rev) @@\ 14711d341caSmrgrevname = rev @@\ 14811d341caSmrgConcat3(DEP,varname,LIB) = SharedDSLibDependencies(libname,libsource,revname) @@\ 14911d341caSmrgConcat(varname,LIB) = LoaderLibPrefix Concat(-l,libname) Concat3(Shared,libname,Reqs) @@\ 15011d341caSmrgLintLibReferences(varname,libname,libsource) 15111d341caSmrg#endif 15211d341caSmrg 15311d341caSmrg#else /* UseElfFormat */ 15411d341caSmrg 15511d341caSmrg/* 15611d341caSmrg * NetBSD/FreeBSD (ELF) shared library rules 15711d341caSmrg * Cloned from Linux ELF rules, with the following major change: 15811d341caSmrg * 15911d341caSmrg * Shared libraries depend on -lc. Since we don't have to worry 16011d341caSmrg * about libc vs. libg, etc., this is a good idea. (This is actually 16111d341caSmrg * implied by using $(CC) to build the shared libraries.) Adding it 16211d341caSmrg * explicitly will break threaded applications on platforms that use 16311d341caSmrg * libc_r for thread support. 16411d341caSmrg */ 16511d341caSmrg 16611d341caSmrg#ifndef HasSharedLibraries 16711d341caSmrg#define HasSharedLibraries YES 16811d341caSmrg#endif 16911d341caSmrg#ifndef ForceNormalLib 17011d341caSmrg#define ForceNormalLib YES 17111d341caSmrg#endif 17211d341caSmrg 17311d341caSmrg#ifndef UseRpath 17411d341caSmrg#define UseRpath YES 17511d341caSmrg#endif 17611d341caSmrg 17711d341caSmrg#ifndef BaseShLibReqs 17811d341caSmrg#define BaseShLibReqs /* -lc */ 17911d341caSmrg#endif 18011d341caSmrg 18111d341caSmrg#ifndef SharedDataSeparation 18211d341caSmrg#define SharedDataSeparation NO 18311d341caSmrg#endif 18411d341caSmrg#ifndef SharedCodeDef 18511d341caSmrg#define SharedCodeDef /**/ 18611d341caSmrg#endif 18711d341caSmrg#ifndef SharedLibraryDef 18811d341caSmrg#define SharedLibraryDef /**/ 18911d341caSmrg#endif 19011d341caSmrg#ifndef ShLibIncludeFile 19111d341caSmrg#define ShLibIncludeFile <bsdLib.tmpl> 19211d341caSmrg#endif 19311d341caSmrg#ifndef RpathLoadFlags 19411d341caSmrg#if UseRpath 19511d341caSmrg#define RpathLoadFlags -Wl,-rpath,$(USRLIBDIRPATH) 19611d341caSmrg#else 19711d341caSmrg#define RpathLoadFlags /**/ 19811d341caSmrg#endif 19911d341caSmrg#endif 20011d341caSmrg#ifndef LibraryRpathLoadFlags 20111d341caSmrg#define LibraryRpathLoadFlags RpathLoadFlags 20211d341caSmrg#endif 20311d341caSmrg#ifndef SharedLibraryLoadFlags 20411d341caSmrg#define SharedLibraryLoadFlags -shared LibraryRpathLoadFlags 20511d341caSmrg#endif 20611d341caSmrg#ifndef PositionIndependentCFlags 20711d341caSmrg#define PositionIndependentCFlags -fPIC 20811d341caSmrg#endif 20911d341caSmrg#ifndef PositionIndependentCplusplusFlags 21011d341caSmrg#define PositionIndependentCplusplusFlags -fPIC 21111d341caSmrg#endif 21211d341caSmrg#ifndef ExtraLoadFlags 21311d341caSmrg#ifdef UseInstalled 21411d341caSmrg#define ExtraLoadFlags RpathLoadFlags 21511d341caSmrg#else 21611d341caSmrg#define ExtraLoadFlags RpathLoadFlags -Wl,-rpath-link,$(BUILDLIBDIR) 21711d341caSmrg#endif 21811d341caSmrg#endif 21911d341caSmrg 22011d341caSmrg#ifndef HardCodeLibdirFlag 22111d341caSmrg#define HardCodeLibdirFlag RpathLoadFlags 22211d341caSmrg#endif 22311d341caSmrg 22411d341caSmrg#if !defined(ShlibGlobalsFlags) 22511d341caSmrg#define ShlibGlobalsFlags -Wl,-Bsymbolic 22611d341caSmrg#endif 22711d341caSmrg 22811d341caSmrg/* 22911d341caSmrg * InstallSharedLibrary - generate rules to install the shared library. 23011d341caSmrg * NOTE: file must be executable, hence "INSTBINFLAGS" 23111d341caSmrg */ 23211d341caSmrg#if !defined(FreeBSDArchitecture) || defined(DragonFlyArchitecture) 23311d341caSmrgINSTALLMINORREV = true 23411d341caSmrg#else 23511d341caSmrgINSTALLMINORREV = false 23611d341caSmrg#endif 23711d341caSmrg 23811d341caSmrg#ifndef InstallSharedLibrary 23911d341caSmrg#define InstallSharedLibrary(libname,rev,dest) @@\ 24011d341caSmrginstall:: Concat(lib,libname.so.rev) @@\ 24111d341caSmrg MakeDir($(DESTDIR)dest) @@\ 24211d341caSmrg @T=`echo Concat(lib,libname.so.rev) | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`;\ @@\ 24311d341caSmrg if $(INSTALLMINORREV); then \ @@\ 24411d341caSmrg INST=Concat(lib,libname.so.rev); \ @@\ 24511d341caSmrg LINK=$$T; \ @@\ 24611d341caSmrg else \ @@\ 24711d341caSmrg INST=$$T; \ @@\ 24811d341caSmrg fi; \ @@\ 24911d341caSmrg (set -x; \ @@\ 25011d341caSmrg $(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) $$INST $(DESTDIR)dest); \ @@\ 25111d341caSmrg if [ X"$$LINK" != X ]; then (set -x; \ @@\ 25211d341caSmrg $(RM) $(DESTDIR)dest/$$LINK; \ @@\ 25311d341caSmrg $(LN) $$INST $(DESTDIR)dest/$$LINK); \ @@\ 25411d341caSmrg fi; \ @@\ 25511d341caSmrg if $(SOSYMLINK); then (set -x; \ @@\ 25611d341caSmrg $(RM) Concat($(DESTDIR)dest/lib,libname.so); \ @@\ 25711d341caSmrg $(LN) $$T Concat($(DESTDIR)dest/lib,libname.so)); \ @@\ 25811d341caSmrg fi 25911d341caSmrg#endif /* InstallSharedLibrary */ 26011d341caSmrg 26111d341caSmrg#ifndef InstallSharedLibtoolLibrary 26211d341caSmrg 26311d341caSmrg#define SetRevisions(rev) V=`expr rev : '\([^:]*\)'`; \ @@\ 26411d341caSmrg R=`expr rev : '.*:\([^:]*\):'`; \ @@\ 26511d341caSmrg A=`expr rev : '.*:\([^:]*\)'`; \ @@\ 26611d341caSmrg REV=$$V; \ @@\ 26711d341caSmrg REVLIST=""; \ @@\ 26811d341caSmrg i=$$A; \ @@\ 26911d341caSmrg while [ $$i -gt 0 ]; do \ @@\ 27011d341caSmrg REVLIST="$$REVLIST `expr $$REV - $$i`"; \ @@\ 27111d341caSmrg i=`expr $$i - 1`; \ @@\ 27211d341caSmrg done 27311d341caSmrg 27411d341caSmrg#define InstallSharedLibtoolLibrary(libname,rev,dest) @@\ 27511d341caSmrginstall:: Concat(lib,libname.so) @@\ 27611d341caSmrg MakeDir($(DESTDIR)dest) @@\ 27711d341caSmrg @set +e; SetRevisions(rev); \ @@\ 27811d341caSmrg set -e; \ @@\ 27911d341caSmrg T=Concat(lib,libname.so.$$REV); \ @@\ 28011d341caSmrg if $(INSTALLMINORREV); then \ @@\ 28111d341caSmrg INST=$$T.0; \ @@\ 28211d341caSmrg LINK=$$T; \ @@\ 28311d341caSmrg else \ @@\ 28411d341caSmrg INST=$$T; \ @@\ 28511d341caSmrg fi; \ @@\ 28611d341caSmrg (set -x; \ @@\ 28711d341caSmrg $(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) $$INST $(DESTDIR)dest); \ @@\ 28811d341caSmrg if [ X"$$LINK" != X ]; then (set -x; \ @@\ 28911d341caSmrg $(RM) $(DESTDIR)dest/$$LINK; \ @@\ 29011d341caSmrg $(LN) $$INST $(DESTDIR)dest/$$LINK); \ @@\ 29111d341caSmrg fi; \ @@\ 29211d341caSmrg for i in $$REVLIST; do (set -x; \ @@\ 29311d341caSmrg $(RM) Concat($(DESTDIR)dest/lib,libname.so.$$i); \ @@\ 29411d341caSmrg $(LN) Concat(lib,libname.so.$$REV) Concat($(DESTDIR)dest/lib,libname.so.$$i)); \ @@\ 29511d341caSmrg done; \ @@\ 29611d341caSmrg if $(SOSYMLINK); then (set -x; \ @@\ 29711d341caSmrg $(RM) Concat($(DESTDIR)dest/lib,libname.so); \ @@\ 29811d341caSmrg $(LN) Concat(lib,libname.so.$$REV) Concat($(DESTDIR)dest/lib,libname.so)); \ @@\ 29911d341caSmrg fi 30011d341caSmrg#endif /* InstallSharedLibtoolLibrary */ 30111d341caSmrg 30211d341caSmrg/* 30311d341caSmrg * InstallSharedLibraryData - generate rules to install the shared library data 30411d341caSmrg */ 30511d341caSmrg#ifndef InstallSharedLibraryData 30611d341caSmrg#define InstallSharedLibraryData(libname,rev,dest) 30711d341caSmrg#endif /* InstallSharedLibraryData */ 30811d341caSmrg 30911d341caSmrg 31011d341caSmrg/* 31111d341caSmrg * SharedLibraryTarget - generate rules to create a shared library; 31211d341caSmrg * build it into a different name so that we do not hose people by having 31311d341caSmrg * the library gone for long periods. 31411d341caSmrg */ 31511d341caSmrg#ifndef SharedLibraryTarget 31611d341caSmrg#define SharedLibraryTarget(libname,rev,solist,down,up) @@\ 31711d341caSmrgAllTarget(Concat(lib,libname.so.rev)) @@\ 31811d341caSmrg @@\ 31911d341caSmrgConcat(lib,libname.so.rev): solist @@\ 32011d341caSmrg $(RM) $@~ @@\ 32111d341caSmrg @SONAME=`echo $@ | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\ 32211d341caSmrg (set -x; cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\ 32311d341caSmrg (set -x; $(RM) $$SONAME; $(LN) $@ $$SONAME); \ @@\ 32411d341caSmrg LinkBuildSonameLibrary($$SONAME) @@\ 32511d341caSmrg $(RM) $@ @@\ 32611d341caSmrg $(MV) $@~ $@ @@\ 32711d341caSmrg LinkBuildLibrary($@) @@\ 32811d341caSmrg @if $(SOSYMLINK); then (set -x; \ @@\ 32911d341caSmrg $(RM) Concat(lib,libname.so); \ @@\ 33011d341caSmrg $(LN) $@ Concat(lib,libname.so)); fi @@\ 33111d341caSmrg LinkBuildLibraryMaybe(Concat(lib,libname.so),$(SOSYMLINK)) @@\ 33211d341caSmrg @@\ 33311d341caSmrgclean:: @@\ 33411d341caSmrg @SONAME=`echo Concat(lib,libname.so.rev) | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\ 33511d341caSmrg set -x; $(RM) $$SONAME @@\ 33611d341caSmrg $(RM) Concat(lib,libname.so) @@\ 33711d341caSmrg $(RM) Concat(lib,libname.so.rev) 33811d341caSmrg 33911d341caSmrg#endif /* SharedLibraryTarget */ 34011d341caSmrg 34111d341caSmrg#ifndef SharedLibtoolLibraryTarget 34211d341caSmrg#define SharedLibtoolLibraryTarget(libname,rev,solist,down,up) @@\ 34311d341caSmrgAllTarget(Concat(lib,libname.so)) @@\ 34411d341caSmrg @@\ 34511d341caSmrgConcat(lib,libname.so): solist @@\ 34611d341caSmrg $(RM) $@~ @@\ 34711d341caSmrg @set +e; SetRevisions(rev); \ @@\ 34811d341caSmrg SONAME=$@.$$REV; \ @@\ 34911d341caSmrg set -e; \ @@\ 35011d341caSmrg (set -x; cd down; $(CC) -o up/$$SONAME~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\ 35111d341caSmrg (set -x; $(RM) $$SONAME; $(MV) $$SONAME~ $$SONAME); \ @@\ 35211d341caSmrg LinkBuildSonameLibrary($$SONAME); \ @@\ 35311d341caSmrg if $(INSTALLMINORREV); then (set -x; \ @@\ 35411d341caSmrg $(RM) $$SONAME.0; \ @@\ 35511d341caSmrg $(LN) $$SONAME $$SONAME.0); \ @@\ 35611d341caSmrg fi; \ @@\ 35711d341caSmrg if $(SOSYMLINK); then (set -x; \ @@\ 35811d341caSmrg $(RM) $@; \ @@\ 35911d341caSmrg $(LN) $$SONAME $@); \ @@\ 36011d341caSmrg LinkBuildLibraryInline($@); \ @@\ 36111d341caSmrg fi @@\ 36211d341caSmrg @@\ 36311d341caSmrgclean:: @@\ 36411d341caSmrg @set +e; SetRevisions(rev); \ @@\ 36511d341caSmrg set -xe; \ @@\ 36611d341caSmrg $(RM) Concat(lib,libname.so.$$REV); \ @@\ 36711d341caSmrg $(RM) Concat(lib,libname.so.$$REV.0) @@\ 36811d341caSmrg $(RM) Concat(lib,libname.so) 36911d341caSmrg 37011d341caSmrg#endif /* SharedLibtoolLibraryTarget */ 37111d341caSmrg 37211d341caSmrg/* 37311d341caSmrg * SharedDepLibraryTarget - generate rules to create a shared library. 37411d341caSmrg */ 37511d341caSmrg#ifndef SharedDepLibraryTarget 37611d341caSmrg#define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up) @@\ 37711d341caSmrgAllTarget(Concat(lib,libname.so.rev)) @@\ 37811d341caSmrg @@\ 37911d341caSmrgConcat(lib,libname.so.rev): deplist @@\ 38011d341caSmrg $(RM) $@~ @@\ 38111d341caSmrg @SONAME=`echo $@ | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; set -x; \ @@\ 38211d341caSmrg (cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\ 38311d341caSmrg $(RM) $$SONAME; $(LN) $@ $$SONAME; \ @@\ 38411d341caSmrg LinkBuildSonameLibrary($$SONAME) @@\ 38511d341caSmrg $(RM) $@ @@\ 38611d341caSmrg $(MV) $@~ $@ @@\ 38711d341caSmrg $(RM) Concat(lib,libname.so) @@\ 38811d341caSmrg $(LN) $@ Concat(lib,libname.so) @@\ 38911d341caSmrg LinkBuildLibrary($@) @@\ 39011d341caSmrg LinkBuildLibrary(Concat(lib,libname.so)) @@\ 39111d341caSmrg @@\ 39211d341caSmrgclean:: @@\ 39311d341caSmrg @SONAME=`echo Concat(lib,libname.so.rev) | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\ 39411d341caSmrg set -x; $(RM) $$SONAME @@\ 39511d341caSmrg $(RM) Concat(lib,libname.so) @@\ 39611d341caSmrg $(RM) Concat(lib,libname.so.rev) 39711d341caSmrg 39811d341caSmrg#endif /* SharedDepLibraryTarget */ 39911d341caSmrg 40011d341caSmrg/* 40111d341caSmrg * SharedDepCplusplusLibraryTarget - generate rules to create a shared library. 40211d341caSmrg */ 40311d341caSmrg#ifndef SharedDepCplusplusLibraryTarget 40411d341caSmrg#define SharedDepCplusplusLibraryTarget(libname,rev,deplist,solist,down,up) @@\ 40511d341caSmrgAllTarget(Concat(lib,libname.so.rev)) @@\ 40611d341caSmrg @@\ 40711d341caSmrgConcat(lib,libname.so.rev): deplist @@\ 40811d341caSmrg $(RM) $@~ @@\ 40911d341caSmrg @SONAME=`echo $@ | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; set -x; \ @@\ 41011d341caSmrg (cd down; $(CXX) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\ 41111d341caSmrg $(RM) $$SONAME; $(LN) $@ $$SONAME; \ @@\ 41211d341caSmrg LinkBuildSonameLibrary($$SONAME) @@\ 41311d341caSmrg $(RM) $@ @@\ 41411d341caSmrg $(MV) $@~ $@ @@\ 41511d341caSmrg $(RM) Concat(lib,libname.so) @@\ 41611d341caSmrg $(LN) $@ Concat(lib,libname.so) @@\ 41711d341caSmrg LinkBuildLibrary($@) @@\ 41811d341caSmrg LinkBuildLibrary(Concat(lib,libname.so)) @@\ 41911d341caSmrg @@\ 42011d341caSmrgclean:: @@\ 42111d341caSmrg @SONAME=`echo Concat(lib,libname.so.rev) | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\ 42211d341caSmrg set -x; $(RM) $$SONAME @@\ 42311d341caSmrg $(RM) Concat(lib,libname.so) @@\ 42411d341caSmrg $(RM) Concat(lib,libname.so.rev) 42511d341caSmrg 42611d341caSmrg#endif /* SharedDepCplusplusLibraryTarget */ 42711d341caSmrg 42811d341caSmrg#ifndef SharedDepModuleTarget 42911d341caSmrg#define SharedDepModuleTarget(name,deps,solist) @@\ 43011d341caSmrgAllTarget(name) @@\ 43111d341caSmrg @@\ 43211d341caSmrgname: deps @@\ 43311d341caSmrg $(RM) $@~ @@\ 43411d341caSmrg $(CC) -o $@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS) @@\ 43511d341caSmrg $(RM) $@ @@\ 43611d341caSmrg $(MV) $@~ $@ @@\ 43711d341caSmrg @@\ 43811d341caSmrgclean:: @@\ 43911d341caSmrg $(RM) name 44011d341caSmrg 44111d341caSmrg#endif /* SharedDepModuleTarget */ 44211d341caSmrg 44311d341caSmrg#ifndef SharedDriModuleTarget 44411d341caSmrg#define SharedDriModuleTarget(name,deps,solist) @@\ 44511d341caSmrgAllTarget(name) @@\ 44611d341caSmrg @@\ 44711d341caSmrgname: deps @@\ 44811d341caSmrg $(RM) $@~ $@.map @@\ 44911d341caSmrg @(echo 'DRI_MODULE { global: __dri*; local: *; };' > $@.map) @@\ 45011d341caSmrg $(CC) -o $@~ -Wl,--version-script=$@.map $(SHLIBLDFLAGS) solist $(REQUIREDLIBS) BaseShLibReqs @@\ 45111d341caSmrg $(RM) $@ $@.map @@\ 45211d341caSmrg $(MV) $@~ $@ @@\ 45311d341caSmrg @@\ 45411d341caSmrgclean:: @@\ 45511d341caSmrg $(RM) name @@\ 45611d341caSmrg $(RM) name.map 45711d341caSmrg 45811d341caSmrg#endif /* SharedDriModuleTarget */ 45911d341caSmrg 46011d341caSmrg/* 46111d341caSmrg * SharedLibraryDataTarget - generate rules to create shlib data file; 46211d341caSmrg */ 46311d341caSmrg#ifndef SharedLibraryDataTarget 46411d341caSmrg#define SharedLibraryDataTarget(libname,rev,salist) 46511d341caSmrg#endif /* SharedLibraryTarget */ 46611d341caSmrg 46711d341caSmrg#if defined(FreeBSDArchitecture) 46811d341caSmrg 46911d341caSmrg/* 47011d341caSmrg * Support for building a.out compatibility libraries on a FreeBSD/ELF system. 47111d341caSmrg */ 47211d341caSmrg#ifndef BuildAoutLibraries 47311d341caSmrg#define BuildAoutLibraries NO 47411d341caSmrg#endif 47511d341caSmrg 47611d341caSmrg#if BuildAoutLibraries 47711d341caSmrg 47811d341caSmrg#define ExtraLibRules 47911d341caSmrg 48011d341caSmrg#ifndef AoutSharedLibraryDef 48111d341caSmrg#define AoutSharedLibraryDef -DBSDSHLIB 48211d341caSmrg#endif 48311d341caSmrg#ifndef AoutSharedLibraryLoadFlags 48411d341caSmrg#define AoutSharedLibraryLoadFlags -aout -Bshareable 48511d341caSmrg#endif 48611d341caSmrg#ifndef AoutPositionIndependentCFlags 48711d341caSmrg#define AoutPositionIndependentCFlags -fpic 48811d341caSmrg#endif 48911d341caSmrg 49011d341caSmrg/* 49111d341caSmrg * InstallAoutSharedLibrary - generate rules to install the shared library. 49211d341caSmrg */ 49311d341caSmrg#ifndef InstallAoutSharedLibrary 49411d341caSmrg#define InstallAoutSharedLibrary(libname,rev,dest) @@\ 49511d341caSmrginstall:: Concat(aout/lib,libname.so.rev) @@\ 49611d341caSmrg MakeDir($(DESTDIR)dest) @@\ 49711d341caSmrg $(INSTALL) -c $(INSTLIBFLAGS) Concat(aout/lib,libname.so.rev) $(DESTDIR)dest 49811d341caSmrg@@\ 49911d341caSmrg 50011d341caSmrg#endif /* InstallAoutSharedLibrary */ 50111d341caSmrg 50211d341caSmrg/* 50311d341caSmrg * AoutSharedLibraryTarget - generate rules to create a shared library; 50411d341caSmrg * build it into a different name so that we do not hose people by having 50511d341caSmrg * the library gone for long periods. 50611d341caSmrg */ 50711d341caSmrg#ifndef AoutSharedLibraryTarget 50811d341caSmrg#define AoutSharedLibraryTarget(libname,rev,solist,down,up) @@\ 50911d341caSmrgAllTarget(Concat(down/lib,libname.so.rev)) @@\ 51011d341caSmrg @@\ 51111d341caSmrgConcat(down/lib,libname.so.rev): solist $(EXTRALIBRARYDEPS) @@\ 51211d341caSmrg $(RM) $@~ @@\ 51311d341caSmrg (cd down; $(LD) -o up/$@~ AoutSharedLibraryLoadFlags solist) @@\ 51411d341caSmrg $(RM) $@ @@\ 51511d341caSmrg $(MV) $@~ $@ @@\ 51611d341caSmrg @@\ 51711d341caSmrgclean:: @@\ 51811d341caSmrg $(RM) Concat(down/lib,libname.so.rev) 51911d341caSmrg 52011d341caSmrg#endif /* AoutSharedLibraryTarget */ 52111d341caSmrg 52211d341caSmrg#define AoutCDebugFlags -aout DefaultCDebugFlags 52311d341caSmrg#define AoutCplusplusDebugFlags -aout DefaultCplusplusDebugFlags 52411d341caSmrg 52511d341caSmrg#define AoutLibObjCompile(options) LibObjCompile(aout,AoutCDebugFlags AoutSharedLibraryDef AoutPositionIndependentCFlags options) 52611d341caSmrg#define AoutLibObjCplusplusCompile(options) LibObjCompile(aout,AoutCplusplusDebugFlags options) 52711d341caSmrg 52811d341caSmrg#define ExtraLibMkdir() _LibMkdir(aout) 52911d341caSmrg#define ExtraObjCompile(options) AoutLibObjCompile(options) 53011d341caSmrg#define ExtraObjCplusplusCompile(options) AoutLibObjCplusplusCompile(options) 53111d341caSmrg#define ExtraCleanDir() LibCleanDir(aout) 53211d341caSmrg 53311d341caSmrg#define ExtraLibraryTarget(libname,so,objs) AoutSharedLibraryTarget(libname,so,objs,aout,..) 53411d341caSmrg#define ExtraInstallLibrary(libname,so) InstallAoutSharedLibrary(libname,so,$(SHLIBDIR)/aout) 53511d341caSmrg 53611d341caSmrg#endif 53711d341caSmrg#endif 53811d341caSmrg 53911d341caSmrg 54011d341caSmrg#endif /* UseElfFormat */ 541