Blame config/cf/ibmLib.rules

Packit b099d7
XCOMM $XConsortium: ibmLib.rules /main/15 1996/12/30 16:06:05 kaleb $
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * AIX shared library rules
Packit b099d7
 */
Packit b099d7
Packit b099d7
#ifndef HasSharedLibraries
Packit b099d7
# define HasSharedLibraries YES
Packit b099d7
#endif
Packit b099d7
#ifndef ForceNormalLib
Packit b099d7
# define ForceNormalLib NO
Packit b099d7
#endif
Packit b099d7
#ifndef SharedDataSeparation
Packit b099d7
# define SharedDataSeparation NO
Packit b099d7
#endif
Packit b099d7
#ifndef SharedCodeDef
Packit b099d7
# define SharedCodeDef -DSHAREDCODE
Packit b099d7
#endif
Packit b099d7
#ifndef SharedLibraryDef
Packit b099d7
# define SharedLibraryDef -DAIXSHLIB
Packit b099d7
#endif
Packit b099d7
#ifndef ShLibIncludeFile
Packit b099d7
# define ShLibIncludeFile <ibmLib.tmpl>
Packit b099d7
#endif
Packit b099d7
#ifndef PositionIndependentCFlags
Packit b099d7
# define PositionIndependentCFlags -bM\:SRE
Packit b099d7
#endif
Packit b099d7
#ifndef ExtraLoadFlags
Packit b099d7
# define ExtraLoadFlags -bnodelcsect
Packit b099d7
#endif
Packit b099d7
#if !defined(LdPostLib) && !defined(UseInstalled) && OSMajorVersion > 3
Packit b099d7
# if ThreadedX
Packit b099d7
#  define LdPostLib -blibpath:$(USRLIBDIRPATH):/usr/lib/threads:/usr/lib:/lib
Packit b099d7
# else
Packit b099d7
#  define LdPostLib -blibpath:$(USRLIBDIRPATH):/usr/lib:/lib
Packit b099d7
# endif
Packit b099d7
# define SharedLibPostRef $(LDPOSTLIBS)
Packit b099d7
#endif
Packit b099d7
#ifndef SharedLibPostRef
Packit b099d7
# define SharedLibPostRef $(LDPOSTLIBS)
Packit b099d7
#endif
Packit b099d7
#if ThreadedX
Packit b099d7
# define BaseShLibReqs -lc_r -lm
Packit b099d7
#else
Packit b099d7
# define BaseShLibReqs -lc -lm
Packit b099d7
#endif
Packit b099d7
#ifndef UseExportLists
Packit b099d7
# define UseExportLists YES
Packit b099d7
#endif
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * MakeExportList - generate an export list file for linking libraries.
Packit b099d7
 */
Packit b099d7
#ifndef MakeExportList
Packit b099d7
# if UseExportLists
Packit b099d7
#  define MakeExportList(libname,result) \
Packit b099d7
	@-RemoveFile(result)						@@\
Packit b099d7
	case ,$(SHR4OBJLIBS), in *,libname,*) shr4obj=shr4.o;; esac &&\	@@\
Packit b099d7
		echo "#! $@ ($${shr4obj:-shr.o})" > result		@@\
Packit b099d7
	if [ -f Concat(lib,libname.elist) ]; then \			@@\
Packit b099d7
	    $(CPP) $(ALLINCLUDES) $(EXTRA_DEFINES) $(PROTO_DEFINES) $(THREADS_DEFINES) $(DEFINES) Concat(lib,libname.elist) | CppSedMagic > $@.list; \	@@\
Packit b099d7
	    $(EXPORTLISTGEN) $@~ $@.list >> result; \			@@\
Packit b099d7
	    RemoveFile($@.list); \					@@\
Packit b099d7
	else \								@@\
Packit b099d7
	    dump -g $@~ | sed -n -e 's/^[ 	]*[0-9][0-9]*[	 ]*\([^	 .][^	 ]*\)$$/\1/p' >> result; \	@@\
Packit b099d7
	fi;
Packit b099d7
# else
Packit b099d7
#  define MakeExportList(libname,result) \
Packit b099d7
	@-RemoveFile(result)						@@\
Packit b099d7
	case ,$(SHR4OBJLIBS), in *,libname,*) shr4obj=shr4.o;; esac &&\	@@\
Packit b099d7
		echo "#! $@ ($${shr4obj:-shr.o})" > result		@@\
Packit b099d7
	dump -g $@~ | sed -n -e 's/^[ 	]*[0-9][0-9]*[	 ]*\([^	 .][^	 ]*\)$$/\1/p' >> result;
Packit b099d7
# endif
Packit b099d7
#endif /* MakeExportList */
Packit b099d7
Packit b099d7
Packit b099d7
#if !defined(UseInstalled) && !defined(UseInstalledX11) \
Packit b099d7
    && !defined(UseImports) && !defined(ImportX11)
Packit b099d7
   /* we want this to be defined only when building X */
Packit b099d7
Packit b099d7
# if OSMajorVersion < 4
Packit b099d7
/*
Packit b099d7
 * SharedDSLibReferences - variables for shared libraries
Packit b099d7
 */
Packit b099d7
Packit b099d7
#  ifndef SharedLibReferences
Packit b099d7
#   define SharedLibReferences(varname,libname,libsource,revname,rev)	@@\
Packit b099d7
Concat3(DEP,varname,LIB) = /**/						@@\
Packit b099d7
Concat(varname,LIB) = _Use(Concat(-l,libname),Concat(libsource/lib,libname.a)) @@\
Packit b099d7
LintLibReferences(varname,libname,libsource)
Packit b099d7
#  endif
Packit b099d7
Packit b099d7
# else
Packit b099d7
Packit b099d7
#  ifndef SharedLibReferences
Packit b099d7
#   define SharedLibReferences(varname,libname,libsource,revname,rev)	@@\
Packit b099d7
Concat3(DEP,varname,LIB) = /**/						@@\
Packit b099d7
Concat(varname,LIB) = _Use(Concat(-l,libname),Concat($(BUILDLIBDIR),/libname.imp) Concat3($(BUILDLIBDIR),/lib,libname.a)) @@\
Packit b099d7
LintLibReferences(varname,libname,libsource)
Packit b099d7
#  endif
Packit b099d7
Packit b099d7
# endif
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * SharedDSLibReferences - variables for shared libraries
Packit b099d7
 */
Packit b099d7
# ifndef SharedDSLibReferences
Packit b099d7
#  define SharedDSLibReferences(varname,libname,libsource,revname,rev)	@@\
Packit b099d7
SharedLibReferences(varname,libname,libsource,revname,rev)
Packit b099d7
# endif
Packit b099d7
Packit b099d7
# if OSMajorVersion == 4
Packit b099d7
/*
Packit b099d7
 * UnsharedLibReferences - variables for unshared libraries
Packit b099d7
 */
Packit b099d7
#  ifndef UnsharedLibReferences
Packit b099d7
#   define UnsharedLibReferences(varname,libname,libsource)		@@\
Packit b099d7
Concat3(DEP,varname,LIB) = _UseCat($(USRLIBDIR)/lib,$(BUILDLIBDIR)/lib,libname.a)	@@\
Packit b099d7
Concat(varname,LIB) = _Use(Concat(-l,libname),Concat($(BUILDLIBDIR)/lib,libname.a))	@@\
Packit b099d7
LintLibReferences(varname,libname,libsource)
Packit b099d7
#  endif
Packit b099d7
# endif
Packit b099d7
Packit b099d7
#endif /* !defined(UseInstalled) && !defined(UseInstalledX11) ... */
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * InstallSharedLibrary - generate rules to install the shared library.
Packit b099d7
 */
Packit b099d7
#ifndef InstallSharedLibrary
Packit b099d7
# define InstallSharedLibrary(libname,rev,dest)				@@\
Packit b099d7
InstallLibrary(libname,dest)
Packit b099d7
#endif /* InstallSharedLibrary */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * InstallSharedLibraryData - generate rules to install the shared library data
Packit b099d7
 */
Packit b099d7
#ifndef InstallSharedLibraryData
Packit b099d7
# define InstallSharedLibraryData(libname,rev,dest)
Packit b099d7
#endif /* InstallSharedLibraryData */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * SharedLibraryTarget - generate rules to create a shared library;
Packit b099d7
 * build it into a different name so that the we do not hose people by having
Packit b099d7
 * the library gone for long periods.
Packit b099d7
 *
Packit b099d7
 * IBM uses an unusual shared object file name (shr4.o) in some libraries. 
Packit b099d7
 * Duplicate this behavior to preserve compatibility with IBM's libraries.
Packit b099d7
 */
Packit b099d7
#if OSMajorVersion < 4
Packit b099d7
Packit b099d7
# ifndef SharedLibraryTarget
Packit b099d7
#  define SharedLibraryTarget(libname,rev,solist,down,up)		@@\
Packit b099d7
AllTarget(Concat(lib,libname.a))					@@\
Packit b099d7
									@@\
Packit b099d7
Concat(lib,libname.a):  solist $(UNSHAREDOBJS) $(EXTRALIBRARYDEPS)	@@\
Packit b099d7
	$(RM) $@~ shr.o shr4.o						@@\
Packit b099d7
	(cd down; $(AR) up/$@~ solist)					@@\
Packit b099d7
	dump -g $@~ | sed -n -e 's/^[ 	]*[0-9][0-9]*[	 ]*\([^	 .][^	 ]*\)$$/\1/p' > $@.syms	@@\
Packit b099d7
	$(LD) -o shr.o $@~ -H512 -T512 -bM\:SRE -bE\:$@.syms $(REQUIREDLIBS) BaseShLibReqs SharedLibPostRef	@@\
Packit b099d7
	$(LN) shr.o shr4.o						@@\
Packit b099d7
	$(RM) $@~							@@\
Packit b099d7
	case ,$(SHR4OBJLIBS), in *,libname,*) shr4obj=shr4.o;; esac &&\	@@\
Packit b099d7
		$(AR) $@~ $${shr4obj} shr.o $(UNSHAREDOBJS)		@@\
Packit b099d7
	$(RM) $@.syms $@ shr.o shr4.o					@@\
Packit b099d7
	$(MV) $@~ $@							@@\
Packit b099d7
	LinkBuildLibrary($@)						@@\
Packit b099d7
									@@\
Packit b099d7
clean::									@@\
Packit b099d7
	$(RM) Concat(lib,libname.a)
Packit b099d7
# endif /* SharedLibraryTarget */
Packit b099d7
Packit b099d7
#else /* OSMajorVersion >= 4 */
Packit b099d7
Packit b099d7
# ifndef SharedLibraryTarget
Packit b099d7
#  define SharedLibraryTarget(libname,rev,solist,down,up)		@@\
Packit b099d7
AllTarget(Concat(lib,libname.a))					@@\
Packit b099d7
									@@\
Packit b099d7
Concat(lib,libname.a):  solist $(UNSHAREDOBJS) $(EXTRALIBRARYDEPS)	@@\
Packit b099d7
	RemoveFiles($@~ shr.o shr4.o)					@@\
Packit b099d7
	(cd down; $(AR) up/$@~ solist)					@@\
Packit b099d7
	MakeExportList(libname,libname.imp)				@@\
Packit b099d7
	$(LD) -o shr.o $@~ -H512 -T512 -bM\:SRE -bE\:libname.imp -bnoentry $(REQUIREDLIBS) BaseShLibReqs $(LDPOSTLIBS)	@@\
Packit b099d7
	$(LN) shr.o shr4.o						@@\
Packit b099d7
	RemoveFile($@~)							@@\
Packit b099d7
	case ,$(SHR4OBJLIBS), in *,libname,*) shr4obj=shr4.o;; esac &&\	@@\
Packit b099d7
		$(AR) $@~ $${shr4obj} shr.o $(UNSHAREDOBJS)		@@\
Packit b099d7
	RemoveFile($@)							@@\
Packit b099d7
	$(MV) $@~ $@							@@\
Packit b099d7
	LinkBuildLibrary($@)						@@\
Packit b099d7
	LinkBuildLibrary(libname.imp)					@@\
Packit b099d7
									@@\
Packit b099d7
clean::									@@\
Packit b099d7
	$(RM) Concat(lib,libname.a)
Packit b099d7
# endif /* SharedLibraryTarget */
Packit b099d7
Packit b099d7
#endif
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * SharedLibraryDataTarget - generate rules to create shlib data file;
Packit b099d7
 */
Packit b099d7
#ifndef SharedLibraryDataTarget
Packit b099d7
# define SharedLibraryDataTarget(libname,rev,salist)
Packit b099d7
#endif /* SharedLibraryTarget */