ibmLib.rules revision 1c80d5b0
111d341caSmrgXCOMM $Xorg: ibmLib.rules,v 1.3 2000/08/17 19:41:47 cpqbld Exp $
24c61c93dSmrgXCOMM $XdotOrg: xc/config/cf/ibmLib.rules,v 1.1.4.3 2003/12/15 16:42:40 kaleb Exp $
311d341caSmrg
411d341caSmrg/*
511d341caSmrg * AIX shared library rules
611d341caSmrg */
711d341caSmrg
811d341caSmrgXCOMM $XFree86: xc/config/cf/ibmLib.rules,v 3.5 2000/02/13 06:15:18 dawes Exp $
911d341caSmrg#ifndef HasSharedLibraries
1011d341caSmrg# define HasSharedLibraries YES
1111d341caSmrg#endif
1211d341caSmrg#ifndef ForceNormalLib
1311d341caSmrg# define ForceNormalLib NO
1411d341caSmrg#endif
1511d341caSmrg#ifndef SharedDataSeparation
1611d341caSmrg# define SharedDataSeparation NO
1711d341caSmrg#endif
1811d341caSmrg#ifndef SharedCodeDef
1911d341caSmrg# define SharedCodeDef -DSHAREDCODE
2011d341caSmrg#endif
2111d341caSmrg#if OSMajorVersion < 5
2211d341caSmrg# ifndef SharedLibraryDef
2311d341caSmrg#  define SharedLibraryDef -DAIXSHLIB
2411d341caSmrg# endif
2511d341caSmrg#else
2611d341caSmrg# define SharedLibraryDef /**/
2711d341caSmrg#endif
2811d341caSmrg#ifndef ShLibIncludeFile
2911d341caSmrg# define ShLibIncludeFile <ibmLib.tmpl>
3011d341caSmrg#endif
3111d341caSmrg#ifndef PositionIndependentCFlags
3211d341caSmrg# define PositionIndependentCFlags -bM\:SRE
3311d341caSmrg#endif
3411d341caSmrg#ifndef ExtraLoadFlags
3511d341caSmrg# define ExtraLoadFlags -bnodelcsect
3611d341caSmrg#endif
3711d341caSmrg#if !defined(LdPostLib) && !defined(UseInstalled) && OSMajorVersion > 3
3811d341caSmrg# if ThreadedX
3911d341caSmrg#  define LdPostLib -bnoipath -blibpath:$(USRLIBDIRPATH):/usr/lib/threads:/usr/lib:/lib
4011d341caSmrg# else
4111d341caSmrg#  define LdPostLib -bnoipath -blibpath:$(USRLIBDIRPATH):/usr/lib:/lib
4211d341caSmrg# endif
4311d341caSmrg# define SharedLibPostRef $(LDPOSTLIBS)
4411d341caSmrg#endif
4511d341caSmrg#ifndef SharedLibPostRef
4611d341caSmrg# define SharedLibPostRef $(LDPOSTLIBS)
4711d341caSmrg#endif
4811d341caSmrg#if ThreadedX
4911d341caSmrg# define BaseShLibReqs -lc_r -lm
5011d341caSmrg#else
5111d341caSmrg# define BaseShLibReqs -lc -lm
5211d341caSmrg#endif
5311d341caSmrg#ifndef UseExportLists
5411d341caSmrg# define UseExportLists YES
5511d341caSmrg#endif
5611d341caSmrg
5711d341caSmrg/*
5811d341caSmrg * MakeExportList - generate an export list file for linking libraries.
5911d341caSmrg */
6011d341caSmrg#ifndef MakeExportList
6111d341caSmrg# if UseExportLists
6211d341caSmrg#  define MakeExportList(libname,result) \
6311d341caSmrg	@-RemoveFile(result)						@@\
6411d341caSmrg	case ,$(SHR4OBJLIBS), in *,libname,*) shr4obj=shr4.o;; esac &&\	@@\
6511d341caSmrg		echo "#! $@ ($${shr4obj:-shr.o})" > result		@@\
6611d341caSmrg	if [ -f Concat(lib,libname.elist) ]; then \			@@\
6711d341caSmrg	    $(CPP) $(ALLINCLUDES) $(EXTRA_DEFINES) $(PROTO_DEFINES) $(THREADS_DEFINES) $(DEFINES) Concat(lib,libname.elist) | CppSedMagic > $@.list; \	@@\
6811d341caSmrg	    $(EXPORTLISTGEN) $@~ $@.list >> result; \			@@\
6911d341caSmrg	    RemoveFile($@.list); \					@@\
7011d341caSmrg	else \								@@\
7111d341caSmrg	    dump -g $@~ | sed -n -e 's/^[ 	]*[0-9][0-9]*[	 ]*\([^	 .][^	 ]*\)$$/\1/p' >> result; \	@@\
7211d341caSmrg	fi;
7311d341caSmrg# else
7411d341caSmrg#  define MakeExportList(libname,result) \
7511d341caSmrg	@-RemoveFile(result)						@@\
7611d341caSmrg	case ,$(SHR4OBJLIBS), in *,libname,*) shr4obj=shr4.o;; esac &&\	@@\
7711d341caSmrg		echo "#! $@ ($${shr4obj:-shr.o})" > result		@@\
7811d341caSmrg	dump -g $@~ | sed -n -e 's/^[ 	]*[0-9][0-9]*[	 ]*\([^	 .][^	 ]*\)$$/\1/p' >> result;
7911d341caSmrg# endif
8011d341caSmrg#endif /* MakeExportList */
8111d341caSmrg
8211d341caSmrg
8311d341caSmrg#if !defined(UseInstalled) && !defined(UseInstalledX11) \
8411d341caSmrg    && !defined(UseImports) && !defined(ImportX11)
8511d341caSmrg   /* we want this to be defined only when building X */
8611d341caSmrg
8711d341caSmrg# if OSMajorVersion < 5
8811d341caSmrg#  if OSMajorVersion < 4
8911d341caSmrg/*
9011d341caSmrg * SharedLibReferences - variables for shared libraries
9111d341caSmrg */
9211d341caSmrg
9311d341caSmrg#   ifndef SharedLibReferences
9411d341caSmrg#    define SharedLibReferences(varname,libname,libsource,revname,rev)	@@\
9511d341caSmrgConcat3(DEP,varname,LIB) = /**/						@@\
9611d341caSmrgConcat(varname,LIB) = _Use(Concat(-l,libname),Concat(libsource/lib,libname.a)) @@\
9711d341caSmrgLintLibReferences(varname,libname,libsource)
9811d341caSmrg#   endif
9911d341caSmrg
10011d341caSmrg#  else /* OSMajorVersion < 4 */
10111d341caSmrg
10211d341caSmrg#   ifndef SharedLibReferences
10311d341caSmrg#    define SharedLibReferences(varname,libname,libsource,revname,rev)	@@\
10411d341caSmrgConcat3(DEP,varname,LIB) = /**/						@@\
10511d341caSmrgConcat(varname,LIB) = _Use(Concat(-l,libname),Concat($(BUILDLIBDIR),/libname.imp) Concat3($(BUILDLIBDIR),/lib,libname.a)) @@\
10611d341caSmrgLintLibReferences(varname,libname,libsource)
10711d341caSmrg#   endif
10811d341caSmrg
10911d341caSmrg#  endif
11011d341caSmrg# else /* OSMajorVersion < 5 */
11111d341caSmrg
11211d341caSmrg#  ifndef SharedLibReferences
11311d341caSmrg#   define SharedLibReferences(varname,libname,libsource,revname,rev)	@@\
11411d341caSmrgConcat3(DEP,varname,LIB) = /**/						@@\
11511d341caSmrgConcat(varname,LIB) = _Use(Concat(-l,libname), Concat3($(BUILDLIBDIR),/lib,libname.so)) @@\
11611d341caSmrgLintLibReferences(varname,libname,libsource)
11711d341caSmrg#  endif
11811d341caSmrg
11911d341caSmrg# endif
12011d341caSmrg
12111d341caSmrg# if OSMajorVersion < 5
12211d341caSmrg#  if OSMajorVersion < 4
12311d341caSmrg/*
12411d341caSmrg * SharedFontLibReferences - shared font libraries
12511d341caSmrg */
12611d341caSmrg
12711d341caSmrg#   ifndef SharedFontLibReferences
12811d341caSmrg#    define SharedFontLibReferences()					@@\
12911d341caSmrgDEPFONTLIB = /**/							@@\
13011d341caSmrgFONTLIB = -L$(FREETYPELIBDIR) _Use(-lXfont,$(FONTLIBSRC)/libXfont.a)	@@\
13111d341caSmrgLintLibReferences(XFONT,Xfont,$(FONTLIBSRC))
13211d341caSmrg#   endif
13311d341caSmrg#  else
13411d341caSmrg#   ifndef SharedFontLibReferences
13511d341caSmrg#    define SharedFontLibReferences()					@@\
13611d341caSmrgDEPFONTLIB = /**/							@@\
13711d341caSmrgFONTLIB = -L$(FREETYPELIBDIR) _Use(-lXfont,$(BUILDLIBDIR)/font.imp) $(BUILDLIBDI)/libXfont.a)) @@\
13811d341caSmrgLintLibReferences(XFONT,Xfont,$(FONTLIBSRC))
13911d341caSmrg#   endif
14011d341caSmrg#  endif
14111d341caSmrg# else /* OSMajorVersion < 5 */
14211d341caSmrg#  ifndef SharedFontLibReferences
14311d341caSmrg#   define SharedFontLibReferences()					@@\
14411d341caSmrgDEPFONTLIB = /**/							@@\
14511d341caSmrgFONTLIB = -L$(FREETYPELIBDIR) _Use(-lXfont,$(BUILDLIBDI)/libXfont.so)) @@\
14611d341caSmrgLintLibReferences(XFONT,Xfont,$(FONTLIBSRC))
14711d341caSmrg#  endif
14811d341caSmrg
14911d341caSmrg# endif
15011d341caSmrg
15111d341caSmrg/*
15211d341caSmrg * SharedDSLibReferences - variables for shared libraries
15311d341caSmrg */
15411d341caSmrg# ifndef SharedDSLibReferences
15511d341caSmrg#  define SharedDSLibReferences(varname,libname,libsource,revname,rev)	@@\
15611d341caSmrgSharedLibReferences(varname,libname,libsource,revname,rev)
15711d341caSmrg# endif
15811d341caSmrg
15911d341caSmrg# if OSMajorVersion == 4
16011d341caSmrg/*
16111d341caSmrg * UnsharedLibReferences - variables for unshared libraries
16211d341caSmrg */
16311d341caSmrg#  ifndef UnsharedLibReferences
16411d341caSmrg#   define UnsharedLibReferences(varname,libname,libsource)		@@\
16511d341caSmrgConcat3(DEP,varname,LIB) = _UseCat($(USRLIBDIR)/lib,$(BUILDLIBDIR)/lib,libname.a)	@@\
16611d341caSmrgConcat(varname,LIB) = _Use(Concat(-l,libname),Concat($(BUILDLIBDIR)/lib,libname.a))	@@\
16711d341caSmrgLintLibReferences(varname,libname,libsource)
16811d341caSmrg#  endif
16911d341caSmrg# endif
17011d341caSmrg
17111d341caSmrg#endif /* !defined(UseInstalled) && !defined(UseInstalledX11) ... */
17211d341caSmrg
17311d341caSmrg
17411d341caSmrg/*
17511d341caSmrg * InstallSharedLibrary - generate rules to install the shared library.
17611d341caSmrg */
17711d341caSmrg#ifndef InstallSharedLibrary
17811d341caSmrg# if OSMajorVersion < 5
17911d341caSmrg#  define InstallSharedLibrary(libname,rev,dest)			@@\
18011d341caSmrgInstallLibrary(libname,dest)
18111d341caSmrg# else /* OSMajorVersion < 5 */
18211d341caSmrg#  define InstallSharedLibrary(libname,rev,dest)			@@\
18311d341caSmrginstall:: Concat(lib,libname.so)					@@\
18411d341caSmrg	MakeDir($(DESTDIR)dest)						@@\
18511d341caSmrg	$(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) Concat(lib,libname.so) $(DESTDIR)dest
18611d341caSmrg# endif /* OSMajorVersion < 5 */
18711d341caSmrg#endif /* InstallSharedLibrary */
18811d341caSmrg
18911d341caSmrg/*
19011d341caSmrg * InstallSharedLibraryData - generate rules to install the shared library data
19111d341caSmrg */
19211d341caSmrg#ifndef InstallSharedLibraryData
19311d341caSmrg# define InstallSharedLibraryData(libname,rev,dest)
19411d341caSmrg#endif /* InstallSharedLibraryData */
19511d341caSmrg
19611d341caSmrg/*
19711d341caSmrg * SharedLibraryTarget - generate rules to create a shared library;
19811d341caSmrg * build it into a different name so that the we do not hose people by having
19911d341caSmrg * the library gone for long periods.
20011d341caSmrg *
2011c80d5b0Smrg * IBM uses an unusual shared object file name (shr4.o) in some libraries.
20211d341caSmrg * Duplicate this behavior to preserve compatibility with IBM's libraries.
20311d341caSmrg */
20411d341caSmrg#if OSMajorVersion < 5
20511d341caSmrg# if OSMajorVersion < 4
20611d341caSmrg
20711d341caSmrg#  ifndef SharedLibraryTarget
20811d341caSmrg#   define SharedLibraryTarget(libname,rev,solist,down,up)		@@\
20911d341caSmrgAllTarget(Concat(lib,libname.a))					@@\
21011d341caSmrg									@@\
21111d341caSmrgConcat(lib,libname.a):  solist $(UNSHAREDOBJS) $(EXTRALIBRARYDEPS)	@@\
21211d341caSmrg	$(RM) $@~ shr.o shr4.o						@@\
21311d341caSmrg	(cd down; $(AR) up/$@~ solist)					@@\
21411d341caSmrg	dump -g $@~ | sed -n -e 's/^[ 	]*[0-9][0-9]*[	 ]*\([^	 .][^	 ]*\)$$/\1/p' > $@.syms	@@\
21511d341caSmrg	$(LD) -o shr.o $@~ -H512 -T512 -bM\:SRE -bE\:$@.syms $(REQUIREDLIBS) BaseShLibReqs SharedLibPostRef	@@\
21611d341caSmrg	$(LN) shr.o shr4.o						@@\
21711d341caSmrg	$(RM) $@~							@@\
21811d341caSmrg	case ,$(SHR4OBJLIBS), in *,libname,*) shr4obj=shr4.o;; esac &&\	@@\
21911d341caSmrg		$(AR) $@~ $${shr4obj} shr.o $(UNSHAREDOBJS)		@@\
22011d341caSmrg	$(RM) $@.syms $@ shr.o shr4.o					@@\
22111d341caSmrg	$(MV) $@~ $@							@@\
22211d341caSmrg	LinkBuildLibrary($@)						@@\
22311d341caSmrg									@@\
22411d341caSmrgclean::									@@\
22511d341caSmrg	$(RM) Concat(lib,libname.a)
22611d341caSmrg#  endif /* SharedLibraryTarget */
22711d341caSmrg
22811d341caSmrg# else /* OSMajorVersion < 4 */
22911d341caSmrg
23011d341caSmrg#  ifndef SharedLibraryTarget
23111d341caSmrg#   define SharedLibraryTarget(libname,rev,solist,down,up)		@@\
23211d341caSmrgAllTarget(Concat(lib,libname.a))					@@\
23311d341caSmrg									@@\
23411d341caSmrgConcat(lib,libname.a):  solist $(UNSHAREDOBJS) $(EXTRALIBRARYDEPS)	@@\
23511d341caSmrg	RemoveFiles($@~ shr.o shr4.o)					@@\
23611d341caSmrg	(cd down; $(AR) up/$@~ solist)					@@\
23711d341caSmrg	MakeExportList(libname,libname.imp)				@@\
23811d341caSmrg	$(LD) -o shr.o $@~ -H512 -T512 -bM\:SRE -bE\:libname.imp -bnoentry $(REQUIREDLIBS) BaseShLibReqs $(LDPOSTLIBS)	@@\
23911d341caSmrg	$(LN) shr.o shr4.o						@@\
24011d341caSmrg	RemoveFile($@~)							@@\
24111d341caSmrg	case ,$(SHR4OBJLIBS), in *,libname,*) shr4obj=shr4.o;; esac &&\	@@\
24211d341caSmrg		$(AR) $@~ $${shr4obj} shr.o $(UNSHAREDOBJS)		@@\
24311d341caSmrg	RemoveFile($@)							@@\
24411d341caSmrg	$(MV) $@~ $@							@@\
24511d341caSmrg	LinkBuildLibrary($@)						@@\
24611d341caSmrg	LinkBuildLibrary(libname.imp)					@@\
24711d341caSmrg									@@\
24811d341caSmrgclean::									@@\
24911d341caSmrg	$(RM) Concat(lib,libname.a)
25011d341caSmrg#  endif /* SharedLibraryTarget */
25111d341caSmrg# endif /* OSMajorVersion < 4 */
25211d341caSmrg#else /* OSMajorVersion < 5 */
25311d341caSmrg# ifndef SharedLibraryTarget
25411d341caSmrg#  define SharedLibraryTarget(libname,rev,solist,down,up)		@@\
25511d341caSmrgAllTarget(Concat(lib,libname.so))					@@\
25611d341caSmrg									@@\
25711d341caSmrgConcat(lib,libname.so): solist $(EXTRALIBRARYDEPS)			@@\
25811d341caSmrg	$(RM) $@~							@@\
25911d341caSmrg	$(AR) $*.a solist						@@\
26011d341caSmrg	dump -g $*.a | sed -n -e 's/^[  ]*[0-9][0-9]*[[:space:]]*\([_[:alpha:]][[:alnum:]]*\)/\1/p' | egrep -v \\\. | sort | uniq > $*.syms	@@\
26111d341caSmrg	$(LD) -bnoipath -bnoentry -bM\:SRE -bE\:$*.syms -o $@~ solist $(REQUIREDLIBS) BaseShLibReqs -lc	@@\
26211d341caSmrg	$(RM) $@ $*.a $*.syms						@@\
26311d341caSmrg	$(MV) $@~ $@							@@\
26411d341caSmrg	LinkBuildLibrary($@)						@@\
26511d341caSmrg									@@\
26611d341caSmrgclean::									@@\
26711d341caSmrg	$(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so)
26811d341caSmrg
26911d341caSmrg# endif /* SharedLibraryTarget */
27011d341caSmrg#endif /* OSMajorVersion < 5 */
27111d341caSmrg
27211d341caSmrg/*
27311d341caSmrg * SharedDepLibraryTarget - generate rules to create a shared library.
27411d341caSmrg */
27511d341caSmrg#if OSMajorVersion < 5
27611d341caSmrg# if OSMajorVersion < 4
27711d341caSmrg
27811d341caSmrg#  ifndef SharedDepLibraryTarget
27911d341caSmrg#   define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up)	@@\
28011d341caSmrgAllTarget(Concat(lib,libname.a))					@@\
28111d341caSmrg									@@\
28211d341caSmrgConcat(lib,libname.a):  deplist $(UNSHAREDOBJS) $(EXTRALIBRARYDEPS)	@@\
28311d341caSmrg	$(RM) $@~ shr.o shr4.o						@@\
28411d341caSmrg	(cd down; $(AR) up/$@~ solist)					@@\
28511d341caSmrg	dump -g $@~ | sed -n -e 's/^[   ]*[0-9][0-9]*[   ]*\([^  .][^    ]*\)$$/\1/p' > $@.syms	@@\
28611d341caSmrg	$(LD) -o shr.o $@~ -H512 -T512 -bM\:SRE -bE\:$@.syms $(REQUIREDLIBS) BaseShLibReqs SharedLibPostRef	@@\
28711d341caSmrg	$(LN) shr.o shr4.o						@@\
28811d341caSmrg	$(RM) $@~							@@\
28911d341caSmrg	case ,$(SHR4OBJLIBS), in *,libname,*) shr4obj=shr4.o;; esac &&\	@@\
29011d341caSmrg		$(AR) $@~ $${shr4obj} shr.o $(UNSHAREDOBJS)		@@\
29111d341caSmrg	$(RM) $@.syms $@ shr.o shr4.o					@@\
29211d341caSmrg	$(MV) $@~ $@							@@\
29311d341caSmrg	LinkBuildLibrary($@)						@@\
29411d341caSmrg									@@\
29511d341caSmrgclean::									@@\
29611d341caSmrg	$(RM) Concat(lib,libname.a)
29711d341caSmrg#  endif /* SharedDepLibraryTarget */
29811d341caSmrg
29911d341caSmrg# else /* OSMajorVersion < 4 */
30011d341caSmrg
30111d341caSmrg#  ifndef SharedDepLibraryTarget
30211d341caSmrg#   define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up)	@@\
30311d341caSmrgAllTarget(Concat(lib,libname.a))					@@\
30411d341caSmrg									@@\
30511d341caSmrgConcat(lib,libname.a):  deplist $(UNSHAREDOBJS) $(EXTRALIBRARYDEPS)	@@\
30611d341caSmrg	RemoveFiles($@~ shr.o shr4.o)					@@\
30711d341caSmrg	(cd down; $(AR) up/$@~ solist)					@@\
30811d341caSmrg	MakeExportList(libname,libname.imp)				@@\
30911d341caSmrg	$(LD) -o shr.o $@~ -H512 -T512 -bM\:SRE -bE\:libname.imp -bnoentry $(REQUIREDLIBS) BaseShLibReqs $(LDPOSTLIBS)	@@\
31011d341caSmrg	$(LN) shr.o shr4.o						@@\
31111d341caSmrg	RemoveFile($@~)							@@\
31211d341caSmrg	case ,$(SHR4OBJLIBS), in *,libname,*) shr4obj=shr4.o;; esac &&\	@@\
31311d341caSmrg		$(AR) $@~ $${shr4obj} shr.o $(UNSHAREDOBJS)		@@\
31411d341caSmrg	RemoveFile($@)							@@\
31511d341caSmrg	$(MV) $@~ $@							@@\
31611d341caSmrg	LinkBuildLibrary($@)						@@\
31711d341caSmrg	LinkBuildLibrary(libname.imp)					@@\
31811d341caSmrg									@@\
31911d341caSmrgclean::									@@\
32011d341caSmrg	$(RM) Concat(lib,libname.a)
32111d341caSmrg#  endif /* SharedDepLibraryTarget */
32211d341caSmrg
32311d341caSmrg# endif /* OSMajorVersion < 4 */
32411d341caSmrg#else /* OSMajorVersion < 5 */
32511d341caSmrg# ifndef SharedDepLibraryTarget
32611d341caSmrg#  define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up)	@@\
32711d341caSmrgAllTarget(Concat(lib,libname.so))					@@\
32811d341caSmrg									@@\
32911d341caSmrgConcat(lib,libname.so):  deplist $(EXTRALIBRARYDEPS)			@@\
33011d341caSmrg	$(RM) $@~							@@\
33111d341caSmrg	$(AR) $*.a solist						@@\
33211d341caSmrg	dump -g $*.a | sed -n -e 's/^[  ]*[0-9][0-9]*[[:space:]]*\([_[:alpha:]][[:alnum:]]*\)/\1/p' | egrep -v \\\. | sort | uniq > $*.syms	@@\
33311d341caSmrg	$(LD) -bnoipath -bnoentry -bsymbolic -bM\:SRE -bE\:$*.syms -o $@~ solist $(REQUIREDLIBS) BaseShLibReqs -lc	@@\
33411d341caSmrg	$(RM) $@ $*.a $*.syms						@@\
33511d341caSmrg	$(MV) $@~ $@							@@\
33611d341caSmrg	LinkBuildLibrary($@)						@@\
33711d341caSmrg									@@\
33811d341caSmrgclean::									@@\
33911d341caSmrg	$(RM) Concat(lib,libname.so) Concat(lib,libname.so)
34011d341caSmrg
34111d341caSmrg# endif /* SharedDepLibraryTarget */
34211d341caSmrg#endif /* OSMajorVersion < 5 */
34311d341caSmrg
34411d341caSmrg/*
34511d341caSmrg * SharedLibraryDataTarget - generate rules to create shlib data file;
34611d341caSmrg */
34711d341caSmrg#ifndef SharedLibraryDataTarget
34811d341caSmrg# define SharedLibraryDataTarget(libname,rev,salist)
34911d341caSmrg#endif /* SharedLibraryTarget */
350