xenocara/util/cf/ibmLib.rules
2006-11-25 16:15:45 +00:00

350 lines
12 KiB
Plaintext

XCOMM $Xorg: ibmLib.rules,v 1.3 2000/08/17 19:41:47 cpqbld Exp $
XCOMM $XdotOrg: util/cf/ibmLib.rules,v 1.2 2004/04/23 18:41:58 eich Exp $
/*
* AIX shared library rules
*/
XCOMM $XFree86: xc/config/cf/ibmLib.rules,v 3.5 2000/02/13 06:15:18 dawes Exp $
#ifndef HasSharedLibraries
# define HasSharedLibraries YES
#endif
#ifndef ForceNormalLib
# define ForceNormalLib NO
#endif
#ifndef SharedDataSeparation
# define SharedDataSeparation NO
#endif
#ifndef SharedCodeDef
# define SharedCodeDef -DSHAREDCODE
#endif
#if OSMajorVersion < 5
# ifndef SharedLibraryDef
# define SharedLibraryDef -DAIXSHLIB
# endif
#else
# define SharedLibraryDef /**/
#endif
#ifndef ShLibIncludeFile
# define ShLibIncludeFile <ibmLib.tmpl>
#endif
#ifndef PositionIndependentCFlags
# define PositionIndependentCFlags -bM\:SRE
#endif
#ifndef ExtraLoadFlags
# define ExtraLoadFlags -bnodelcsect
#endif
#if !defined(LdPostLib) && !defined(UseInstalled) && OSMajorVersion > 3
# if ThreadedX
# define LdPostLib -bnoipath -blibpath:$(USRLIBDIRPATH):/usr/lib/threads:/usr/lib:/lib
# else
# define LdPostLib -bnoipath -blibpath:$(USRLIBDIRPATH):/usr/lib:/lib
# endif
# define SharedLibPostRef $(LDPOSTLIBS)
#endif
#ifndef SharedLibPostRef
# define SharedLibPostRef $(LDPOSTLIBS)
#endif
#if ThreadedX
# define BaseShLibReqs -lc_r -lm
#else
# define BaseShLibReqs -lc -lm
#endif
#ifndef UseExportLists
# define UseExportLists YES
#endif
/*
* MakeExportList - generate an export list file for linking libraries.
*/
#ifndef MakeExportList
# if UseExportLists
# define MakeExportList(libname,result) \
@-RemoveFile(result) @@\
case ,$(SHR4OBJLIBS), in *,libname,*) shr4obj=shr4.o;; esac &&\ @@\
echo "#! $@ ($${shr4obj:-shr.o})" > result @@\
if [ -f Concat(lib,libname.elist) ]; then \ @@\
$(CPP) $(ALLINCLUDES) $(EXTRA_DEFINES) $(PROTO_DEFINES) $(THREADS_DEFINES) $(DEFINES) Concat(lib,libname.elist) | CppSedMagic > $@.list; \ @@\
$(EXPORTLISTGEN) $@~ $@.list >> result; \ @@\
RemoveFile($@.list); \ @@\
else \ @@\
dump -g $@~ | sed -n -e 's/^[ ]*[0-9][0-9]*[ ]*\([^ .][^ ]*\)$$/\1/p' >> result; \ @@\
fi;
# else
# define MakeExportList(libname,result) \
@-RemoveFile(result) @@\
case ,$(SHR4OBJLIBS), in *,libname,*) shr4obj=shr4.o;; esac &&\ @@\
echo "#! $@ ($${shr4obj:-shr.o})" > result @@\
dump -g $@~ | sed -n -e 's/^[ ]*[0-9][0-9]*[ ]*\([^ .][^ ]*\)$$/\1/p' >> result;
# endif
#endif /* MakeExportList */
#if !defined(UseInstalled) && !defined(UseInstalledX11) \
&& !defined(UseImports) && !defined(ImportX11)
/* we want this to be defined only when building X */
# if OSMajorVersion < 5
# if OSMajorVersion < 4
/*
* SharedLibReferences - variables for shared libraries
*/
# ifndef SharedLibReferences
# define SharedLibReferences(varname,libname,libsource,revname,rev) @@\
Concat3(DEP,varname,LIB) = /**/ @@\
Concat(varname,LIB) = _Use(Concat(-l,libname),Concat(libsource/lib,libname.a)) @@\
LintLibReferences(varname,libname,libsource)
# endif
# else /* OSMajorVersion < 4 */
# ifndef SharedLibReferences
# define SharedLibReferences(varname,libname,libsource,revname,rev) @@\
Concat3(DEP,varname,LIB) = /**/ @@\
Concat(varname,LIB) = _Use(Concat(-l,libname),Concat($(BUILDLIBDIR),/libname.imp) Concat3($(BUILDLIBDIR),/lib,libname.a)) @@\
LintLibReferences(varname,libname,libsource)
# endif
# endif
# else /* OSMajorVersion < 5 */
# ifndef SharedLibReferences
# define SharedLibReferences(varname,libname,libsource,revname,rev) @@\
Concat3(DEP,varname,LIB) = /**/ @@\
Concat(varname,LIB) = _Use(Concat(-l,libname), Concat3($(BUILDLIBDIR),/lib,libname.so)) @@\
LintLibReferences(varname,libname,libsource)
# endif
# endif
# if OSMajorVersion < 5
# if OSMajorVersion < 4
/*
* SharedFontLibReferences - shared font libraries
*/
# ifndef SharedFontLibReferences
# define SharedFontLibReferences() @@\
DEPFONTLIB = /**/ @@\
FONTLIB = -L$(FREETYPELIBDIR) _Use(-lXfont,$(FONTLIBSRC)/libXfont.a) @@\
LintLibReferences(XFONT,Xfont,$(FONTLIBSRC))
# endif
# else
# ifndef SharedFontLibReferences
# define SharedFontLibReferences() @@\
DEPFONTLIB = /**/ @@\
FONTLIB = -L$(FREETYPELIBDIR) _Use(-lXfont,$(BUILDLIBDIR)/font.imp) $(BUILDLIBDI)/libXfont.a)) @@\
LintLibReferences(XFONT,Xfont,$(FONTLIBSRC))
# endif
# endif
# else /* OSMajorVersion < 5 */
# ifndef SharedFontLibReferences
# define SharedFontLibReferences() @@\
DEPFONTLIB = /**/ @@\
FONTLIB = -L$(FREETYPELIBDIR) _Use(-lXfont,$(BUILDLIBDI)/libXfont.so)) @@\
LintLibReferences(XFONT,Xfont,$(FONTLIBSRC))
# endif
# endif
/*
* SharedDSLibReferences - variables for shared libraries
*/
# ifndef SharedDSLibReferences
# define SharedDSLibReferences(varname,libname,libsource,revname,rev) @@\
SharedLibReferences(varname,libname,libsource,revname,rev)
# endif
# if OSMajorVersion == 4
/*
* UnsharedLibReferences - variables for unshared libraries
*/
# ifndef UnsharedLibReferences
# define UnsharedLibReferences(varname,libname,libsource) @@\
Concat3(DEP,varname,LIB) = _UseCat($(USRLIBDIR)/lib,$(BUILDLIBDIR)/lib,libname.a) @@\
Concat(varname,LIB) = _Use(Concat(-l,libname),Concat($(BUILDLIBDIR)/lib,libname.a)) @@\
LintLibReferences(varname,libname,libsource)
# endif
# endif
#endif /* !defined(UseInstalled) && !defined(UseInstalledX11) ... */
/*
* InstallSharedLibrary - generate rules to install the shared library.
*/
#ifndef InstallSharedLibrary
# if OSMajorVersion < 5
# define InstallSharedLibrary(libname,rev,dest) @@\
InstallLibrary(libname,dest)
# else /* OSMajorVersion < 5 */
# define InstallSharedLibrary(libname,rev,dest) @@\
install:: Concat(lib,libname.so) @@\
MakeDir($(DESTDIR)dest) @@\
$(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) Concat(lib,libname.so) $(DESTDIR)dest
# endif /* OSMajorVersion < 5 */
#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 the we do not hose people by having
* the library gone for long periods.
*
* IBM uses an unusual shared object file name (shr4.o) in some libraries.
* Duplicate this behavior to preserve compatibility with IBM's libraries.
*/
#if OSMajorVersion < 5
# if OSMajorVersion < 4
# ifndef SharedLibraryTarget
# define SharedLibraryTarget(libname,rev,solist,down,up) @@\
AllTarget(Concat(lib,libname.a)) @@\
@@\
Concat(lib,libname.a): solist $(UNSHAREDOBJS) $(EXTRALIBRARYDEPS) @@\
$(RM) $@~ shr.o shr4.o @@\
(cd down; $(AR) up/$@~ solist) @@\
dump -g $@~ | sed -n -e 's/^[ ]*[0-9][0-9]*[ ]*\([^ .][^ ]*\)$$/\1/p' > $@.syms @@\
$(LD) -o shr.o $@~ -H512 -T512 -bM\:SRE -bE\:$@.syms $(REQUIREDLIBS) BaseShLibReqs SharedLibPostRef @@\
$(LN) shr.o shr4.o @@\
$(RM) $@~ @@\
case ,$(SHR4OBJLIBS), in *,libname,*) shr4obj=shr4.o;; esac &&\ @@\
$(AR) $@~ $${shr4obj} shr.o $(UNSHAREDOBJS) @@\
$(RM) $@.syms $@ shr.o shr4.o @@\
$(MV) $@~ $@ @@\
LinkBuildLibrary($@) @@\
@@\
clean:: @@\
$(RM) Concat(lib,libname.a)
# endif /* SharedLibraryTarget */
# else /* OSMajorVersion < 4 */
# ifndef SharedLibraryTarget
# define SharedLibraryTarget(libname,rev,solist,down,up) @@\
AllTarget(Concat(lib,libname.a)) @@\
@@\
Concat(lib,libname.a): solist $(UNSHAREDOBJS) $(EXTRALIBRARYDEPS) @@\
RemoveFiles($@~ shr.o shr4.o) @@\
(cd down; $(AR) up/$@~ solist) @@\
MakeExportList(libname,libname.imp) @@\
$(LD) -o shr.o $@~ -H512 -T512 -bM\:SRE -bE\:libname.imp -bnoentry $(REQUIREDLIBS) BaseShLibReqs $(LDPOSTLIBS) @@\
$(LN) shr.o shr4.o @@\
RemoveFile($@~) @@\
case ,$(SHR4OBJLIBS), in *,libname,*) shr4obj=shr4.o;; esac &&\ @@\
$(AR) $@~ $${shr4obj} shr.o $(UNSHAREDOBJS) @@\
RemoveFile($@) @@\
$(MV) $@~ $@ @@\
LinkBuildLibrary($@) @@\
LinkBuildLibrary(libname.imp) @@\
@@\
clean:: @@\
$(RM) Concat(lib,libname.a)
# endif /* SharedLibraryTarget */
# endif /* OSMajorVersion < 4 */
#else /* OSMajorVersion < 5 */
# ifndef SharedLibraryTarget
# define SharedLibraryTarget(libname,rev,solist,down,up) @@\
AllTarget(Concat(lib,libname.so)) @@\
@@\
Concat(lib,libname.so): solist $(EXTRALIBRARYDEPS) @@\
$(RM) $@~ @@\
$(AR) $*.a solist @@\
dump -g $*.a | sed -n -e 's/^[ ]*[0-9][0-9]*[[:space:]]*\([_[:alpha:]][[:alnum:]]*\)/\1/p' | egrep -v \\\. | sort | uniq > $*.syms @@\
$(LD) -bnoipath -bnoentry -bM\:SRE -bE\:$*.syms -o $@~ solist $(REQUIREDLIBS) BaseShLibReqs -lc @@\
$(RM) $@ $*.a $*.syms @@\
$(MV) $@~ $@ @@\
LinkBuildLibrary($@) @@\
@@\
clean:: @@\
$(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so)
# endif /* SharedLibraryTarget */
#endif /* OSMajorVersion < 5 */
/*
* SharedDepLibraryTarget - generate rules to create a shared library.
*/
#if OSMajorVersion < 5
# if OSMajorVersion < 4
# ifndef SharedDepLibraryTarget
# define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up) @@\
AllTarget(Concat(lib,libname.a)) @@\
@@\
Concat(lib,libname.a): deplist $(UNSHAREDOBJS) $(EXTRALIBRARYDEPS) @@\
$(RM) $@~ shr.o shr4.o @@\
(cd down; $(AR) up/$@~ solist) @@\
dump -g $@~ | sed -n -e 's/^[ ]*[0-9][0-9]*[ ]*\([^ .][^ ]*\)$$/\1/p' > $@.syms @@\
$(LD) -o shr.o $@~ -H512 -T512 -bM\:SRE -bE\:$@.syms $(REQUIREDLIBS) BaseShLibReqs SharedLibPostRef @@\
$(LN) shr.o shr4.o @@\
$(RM) $@~ @@\
case ,$(SHR4OBJLIBS), in *,libname,*) shr4obj=shr4.o;; esac &&\ @@\
$(AR) $@~ $${shr4obj} shr.o $(UNSHAREDOBJS) @@\
$(RM) $@.syms $@ shr.o shr4.o @@\
$(MV) $@~ $@ @@\
LinkBuildLibrary($@) @@\
@@\
clean:: @@\
$(RM) Concat(lib,libname.a)
# endif /* SharedDepLibraryTarget */
# else /* OSMajorVersion < 4 */
# ifndef SharedDepLibraryTarget
# define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up) @@\
AllTarget(Concat(lib,libname.a)) @@\
@@\
Concat(lib,libname.a): deplist $(UNSHAREDOBJS) $(EXTRALIBRARYDEPS) @@\
RemoveFiles($@~ shr.o shr4.o) @@\
(cd down; $(AR) up/$@~ solist) @@\
MakeExportList(libname,libname.imp) @@\
$(LD) -o shr.o $@~ -H512 -T512 -bM\:SRE -bE\:libname.imp -bnoentry $(REQUIREDLIBS) BaseShLibReqs $(LDPOSTLIBS) @@\
$(LN) shr.o shr4.o @@\
RemoveFile($@~) @@\
case ,$(SHR4OBJLIBS), in *,libname,*) shr4obj=shr4.o;; esac &&\ @@\
$(AR) $@~ $${shr4obj} shr.o $(UNSHAREDOBJS) @@\
RemoveFile($@) @@\
$(MV) $@~ $@ @@\
LinkBuildLibrary($@) @@\
LinkBuildLibrary(libname.imp) @@\
@@\
clean:: @@\
$(RM) Concat(lib,libname.a)
# endif /* SharedDepLibraryTarget */
# endif /* OSMajorVersion < 4 */
#else /* OSMajorVersion < 5 */
# ifndef SharedDepLibraryTarget
# define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up) @@\
AllTarget(Concat(lib,libname.so)) @@\
@@\
Concat(lib,libname.so): deplist $(EXTRALIBRARYDEPS) @@\
$(RM) $@~ @@\
$(AR) $*.a solist @@\
dump -g $*.a | sed -n -e 's/^[ ]*[0-9][0-9]*[[:space:]]*\([_[:alpha:]][[:alnum:]]*\)/\1/p' | egrep -v \\\. | sort | uniq > $*.syms @@\
$(LD) -bnoipath -bnoentry -bsymbolic -bM\:SRE -bE\:$*.syms -o $@~ solist $(REQUIREDLIBS) BaseShLibReqs -lc @@\
$(RM) $@ $*.a $*.syms @@\
$(MV) $@~ $@ @@\
LinkBuildLibrary($@) @@\
@@\
clean:: @@\
$(RM) Concat(lib,libname.so) Concat(lib,libname.so)
# endif /* SharedDepLibraryTarget */
#endif /* OSMajorVersion < 5 */
/*
* SharedLibraryDataTarget - generate rules to create shlib data file;
*/
#ifndef SharedLibraryDataTarget
# define SharedLibraryDataTarget(libname,rev,salist)
#endif /* SharedLibraryTarget */