1XCOMM $XConsortium: sunLib.rules /main/15 1996/09/28 16:13:16 rws $ 2 3/* 4 * SunOS shared library rules 5 */ 6 7#ifndef HasSharedLibraries 8#define HasSharedLibraries YES 9#endif 10#ifndef SharedDataSeparation 11#define SharedDataSeparation YES 12#endif 13#ifndef SharedCodeDef 14#define SharedCodeDef -DSHAREDCODE 15#endif 16#ifndef SharedLibraryDef 17#define SharedLibraryDef -DSUNSHLIB 18#endif 19#ifndef ShLibIncludeFile 20#define ShLibIncludeFile <sunLib.tmpl> 21#endif 22#ifndef SharedLibraryLoadFlags 23#define SharedLibraryLoadFlags -assert pure-text 24#endif 25#ifndef PositionIndependentCFlags 26#if HasGcc2 27#define PositionIndependentCFlags -fpic 28#else 29#define PositionIndependentCFlags -pic 30#endif 31#endif 32#ifndef PositionIndependentCplusplusFlags 33#if HasGcc2ForCplusplus 34#define PositionIndependentCplusplusFlags -fpic 35#else 36#define PositionIndependentCplusplusFlags -pic 37#endif 38#endif 39 40/* 41 * SharedDSLibDependencies - shared library dependencies with data separation 42 */ 43#ifndef SharedDSLibDependencies 44#define SharedDSLibDependencies(libname,libsource,revname) _UseCat($(USRLIBDIR)/lib,libsource/lib,libname.sa.$(revname)) 45#endif 46 47/* 48 * InstallSharedLibrary - generate rules to install the shared library. 49 */ 50#ifndef InstallSharedLibrary 51#define InstallSharedLibrary(libname,rev,dest) @@\ 52InstallTarget(install,Concat(lib,libname.so.rev),$(INSTLIBFLAGS),dest) 53#endif /* InstallSharedLibrary */ 54 55/* 56 * InstallSharedLibraryData - generate rules to install the shared library data 57 */ 58#ifndef InstallSharedLibraryData 59#define InstallSharedLibraryData(libname,rev,dest) @@\ 60install:: Concat(lib,libname.sa.rev) @@\ 61 MakeDir($(DESTDIR)dest) @@\ 62 $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) Concat(lib,libname.sa.rev) $(DESTDIR)dest @@\ 63 RanLibrary($(RANLIBINSTFLAGS) Concat($(DESTDIR)dest/lib,libname.sa.rev)) 64#endif /* InstallSharedLibraryData */ 65 66#if HasPurify 67#define PureCleanSharedLibrary(libname,rev) @@\ 68clean clean.pure:: @@\ 69 $(RM) Concat3(lib,libname,_pure_*.so.rev) 70#else 71#define PureCleanSharedLibrary(libname,rev) /**/ 72#endif 73 74/* 75 * SharedLibraryTarget - generate rules to create a shared library; 76 * build it into a different name so that we do not hose people by having 77 * the library gone for long periods. 78 */ 79#ifndef SharedLibraryTarget 80#define SharedLibraryTarget(libname,rev,solist,down,up) @@\ 81AllTarget(Concat(lib,libname.so.rev)) @@\ 82 @@\ 83Concat(lib,libname.so.rev): solist $(EXTRALIBRARYDEPS) @@\ 84 $(RM) $@~ @@\ 85 (cd down; $(LD) -o up/$@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS)) @@\ 86 $(RM) $@ @@\ 87 $(MV) $@~ $@ @@\ 88 LinkBuildLibrary($@) @@\ 89 @@\ 90clean:: @@\ 91 $(RM) Concat(lib,libname.so.rev) @@\ 92 @@\ 93PureCleanSharedLibrary(libname,rev) 94#endif /* SharedLibraryTarget */ 95 96/* 97 * SharedLibraryDataTarget - generate rules to create shlib data file; 98 */ 99#ifndef SharedLibraryDataTarget 100#define SharedLibraryDataTarget(libname,rev,salist) @@\ 101AllTarget(Concat(lib,libname.sa.rev)) @@\ 102 @@\ 103Concat(lib,libname.sa.rev): salist @@\ 104 $(RM) $@ @@\ 105 $(AR) $@ salist @@\ 106 RanLibrary($@) @@\ 107 LinkBuildLibrary($@) @@\ 108 @@\ 109clean:: @@\ 110 $(RM) Concat(lib,libname.sa.rev) 111#endif /* SharedLibraryDataTarget */ 112