111d341caSmrg/* 211d341caSmrg * GNU/Hurd shared library rules 311d341caSmrg * 411d341caSmrg * $XFree86: xc/config/cf/gnuLib.rules,v 1.9 2003/10/11 09:40:13 herrb Exp $ 511d341caSmrg */ 611d341caSmrg 711d341caSmrg/* 811d341caSmrg * GNU/Hurd shared library rules 911d341caSmrg * Cloned from Linux (ELF) shared library rules 1011d341caSmrg * 1111d341caSmrg */ 1211d341caSmrg 1311d341caSmrg#ifndef HasSharedLibraries 1411d341caSmrg#define HasSharedLibraries YES 1511d341caSmrg#endif 1611d341caSmrg#ifndef ForceNormalLib 1711d341caSmrg#define ForceNormalLib NO 1811d341caSmrg#endif 1911d341caSmrg 2011d341caSmrgXCOMM XXX To rpath or not to rpath... 2111d341caSmrg#ifndef UseRpath 2211d341caSmrg#define UseRpath NO 2311d341caSmrg#endif 2411d341caSmrg 2511d341caSmrg#ifndef SharedOldX 2611d341caSmrg#define SharedOldX NO 2711d341caSmrg#endif 2811d341caSmrg 2911d341caSmrg#undef SpecialMalloc 3011d341caSmrg#define SpecialMalloc NO 3111d341caSmrg 3211d341caSmrg#define BaseShLibReqs -lc 3311d341caSmrg 3411d341caSmrg#ifndef SharedDataSeparation 3511d341caSmrg#define SharedDataSeparation NO 3611d341caSmrg#endif 3711d341caSmrg#ifndef SharedCodeDef 3811d341caSmrg#define SharedCodeDef /**/ 3911d341caSmrg#endif 4011d341caSmrg#ifndef SharedLibraryDef 4111d341caSmrg#define SharedLibraryDef /**/ 4211d341caSmrg#endif 4311d341caSmrg#ifndef ShLibIncludeFile 4411d341caSmrg#define ShLibIncludeFile <gnuLib.tmpl> 4511d341caSmrg#endif 4611d341caSmrg#ifndef RpathLoadFlags 4711d341caSmrg#if UseRpath 4811d341caSmrg#define RpathLoadFlags -Wl,-rpath=$(USRLIBDIRPATH) 4911d341caSmrg#else 5011d341caSmrg#define RpathLoadFlags /**/ 5111d341caSmrg#endif 5211d341caSmrg#endif 5311d341caSmrg#ifndef LibraryRpathLoadFlags 5411d341caSmrg#define LibraryRpathLoadFlags RpathLoadFlags 5511d341caSmrg#endif 5611d341caSmrg#ifndef SharedLibraryLoadFlags 5711d341caSmrg#define SharedLibraryLoadFlags -shared LibraryRpathLoadFlags 5811d341caSmrg#endif 5911d341caSmrg#ifndef PositionIndependentCFlags 6011d341caSmrg#define PositionIndependentCFlags -fPIC 6111d341caSmrg#endif 6211d341caSmrg#ifndef PositionIndependentCplusplusFlags 6311d341caSmrg#define PositionIndependentCplusplusFlags -fPIC 6411d341caSmrg#endif 6511d341caSmrg#ifndef ExtraLoadFlags 6611d341caSmrg#ifdef UseInstalled 6711d341caSmrgXCOMM XXX Maybe superfluous. 6811d341caSmrg#define ExtraLoadFlags RpathLoadFlags -Wl,-rpath-link=$(USRLIBDIRPATH) 6911d341caSmrg#else 7011d341caSmrg#define ExtraLoadFlags RpathLoadFlags -Wl,-rpath-link=$(BUILDLIBDIR) 7111d341caSmrg#endif 7211d341caSmrg#endif 7311d341caSmrg 7411d341caSmrg/* 7511d341caSmrg * InstallSharedLibrary - generate rules to install the shared library. 7611d341caSmrg * NOTE: file must be executable, hence "INSTBINFLAGS" 7711d341caSmrg */ 7811d341caSmrg#ifndef InstallSharedLibrary 7911d341caSmrg#define InstallSharedLibrary(libname,rev,dest) @@\ 8011d341caSmrginstall:: Concat(lib,libname.so.rev) @@\ 8111d341caSmrg MakeDir($(DESTDIR)dest) @@\ 8211d341caSmrg $(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) Concat(lib,libname.so.rev) $(DESTDIR)dest @@\ 8311d341caSmrg @T=`echo Concat($(DESTDIR)dest/lib,libname.so.rev) | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`;\ 8411d341caSmrg set -x; $(RM) $$T && $(LN) Concat(lib,libname.so.rev) $$T @@\ 8511d341caSmrg @if $(SOSYMLINK); then (set -x; \ 8611d341caSmrg $(RM) Concat($(DESTDIR)dest/lib,libname.so); \ @@\ 8711d341caSmrg $(LN) Concat(lib,libname.so.rev) Concat($(DESTDIR)dest/lib,libname.so)); fi 8811d341caSmrg#endif /* InstallSharedLibrary */ 8911d341caSmrg 9011d341caSmrg/* 9111d341caSmrg * InstallSharedLibraryData - generate rules to install the shared library data 9211d341caSmrg */ 9311d341caSmrg#ifndef InstallSharedLibraryData 9411d341caSmrg#define InstallSharedLibraryData(libname,rev,dest) 9511d341caSmrg#endif /* InstallSharedLibraryData */ 9611d341caSmrg 9711d341caSmrg 9811d341caSmrg/* 9911d341caSmrg * SharedLibraryTarget - generate rules to create a shared library; 10011d341caSmrg * build it into a different name so that we do not hose people by having 10111d341caSmrg * the library gone for long periods. 10211d341caSmrg */ 10311d341caSmrg#ifndef SharedLibraryTarget 10411d341caSmrg#define SharedLibraryTarget(libname,rev,solist,down,up) @@\ 10511d341caSmrgAllTarget(Concat(lib,libname.so.rev)) @@\ 10611d341caSmrg @@\ 10711d341caSmrgConcat(lib,libname.so.rev): solist $(EXTRALIBRARYDEPS) @@\ 10811d341caSmrg $(RM) $@~ @@\ 10911d341caSmrg @SONAME=`echo $@ | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; set -x; \ @@\ 11011d341caSmrg (cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\ 11111d341caSmrg $(RM) $$SONAME; $(LN) $@ $$SONAME; \ @@\ 11211d341caSmrg LinkBuildSonameLibrary($$SONAME) @@\ 11311d341caSmrg $(RM) $@ @@\ 11411d341caSmrg $(MV) $@~ $@ @@\ 11511d341caSmrg @if $(SOSYMLINK); then (set -x; \ @@\ 11611d341caSmrg $(RM) Concat(lib,libname.so); \ @@\ 11711d341caSmrg $(LN) $@ Concat(lib,libname.so)); fi @@\ 11811d341caSmrg LinkBuildLibrary($@) @@\ 11911d341caSmrg LinkBuildLibraryMaybe(Concat(lib,libname.so),$(SOSYMLINK)) @@\ 12011d341caSmrg @@\ 12111d341caSmrgclean:: @@\ 12211d341caSmrg @MAJREV=`echo rev | sed 's/\([0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\ 12311d341caSmrg set -x; $(RM) Concat(lib,libname.so.$$MAJREV) @@\ 12411d341caSmrg $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so) 12511d341caSmrg 12611d341caSmrg#endif /* SharedLibraryTarget */ 12711d341caSmrg 12811d341caSmrg/* 12911d341caSmrg * SharedDepLibraryTarget - generate rules to create a shared library. 13011d341caSmrg */ 13111d341caSmrg#ifndef SharedDepLibraryTarget 13211d341caSmrg#define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up) @@\ 13311d341caSmrgAllTarget(Concat(lib,libname.so.rev)) @@\ 13411d341caSmrg @@\ 13511d341caSmrgConcat(lib,libname.so.rev): deplist $(EXTRALIBRARYDEPS) @@\ 13611d341caSmrg $(RM) $@~ @@\ 13711d341caSmrg @SONAME=`echo $@ | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; set -x; \ @@\ 13811d341caSmrg (cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\ 13911d341caSmrg $(RM) $$SONAME; $(LN) $@ $$SONAME; \ @@\ 14011d341caSmrg LinkBuildSonameLibrary($$SONAME) @@\ 14111d341caSmrg $(RM) $@ @@\ 14211d341caSmrg $(MV) $@~ $@ @@\ 14311d341caSmrg @if $(SOSYMLINK); then (set -x; \ @@\ 14411d341caSmrg $(RM) Concat(lib,libname.so); \ @@\ 14511d341caSmrg $(LN) $@ Concat(lib,libname.so)); fi @@\ 14611d341caSmrg LinkBuildLibrary($@) @@\ 14711d341caSmrg LinkBuildLibraryMaybe(Concat(lib,libname.so),$(SOSYMLINK)) @@\ 14811d341caSmrg @@\ 14911d341caSmrgclean:: @@\ 15011d341caSmrg @MAJREV=`echo rev | sed 's/\([0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\ 15111d341caSmrg set -x; $(RM) Concat(lib,libname.so.$$MAJREV) @@\ 15211d341caSmrg $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so) 15311d341caSmrg 15411d341caSmrg#endif /* SharedDepLibraryTarget */ 15511d341caSmrg 15611d341caSmrg#ifndef SharedDepModuleTarget 15711d341caSmrg#define SharedDepModuleTarget(name,deps,solist) @@\ 15811d341caSmrgAllTarget(name) @@\ 15911d341caSmrg @@\ 16011d341caSmrgname: deps @@\ 16111d341caSmrg $(RM) $@~ @@\ 16211d341caSmrg $(CC) -o $@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS) BaseShLibReqs @@\ 16311d341caSmrg $(RM) $@ @@\ 16411d341caSmrg $(MV) $@~ $@ @@\ 16511d341caSmrg @@\ 16611d341caSmrgclean:: @@\ 16711d341caSmrg $(RM) name 16811d341caSmrg 16911d341caSmrg#endif /* SharedDepModuleTarget */ 17011d341caSmrg 17111d341caSmrg/* 17211d341caSmrg * SharedLibraryDataTarget - generate rules to create shlib data file; 17311d341caSmrg */ 17411d341caSmrg#ifndef SharedLibraryDataTarget 17511d341caSmrg#define SharedLibraryDataTarget(libname,rev,salist) 17611d341caSmrg#endif /* SharedLibraryTarget */ 177