bsdLib.rules revision 11d341ca
111d341caSmrgXCOMM $Xorg: bsdLib.rules,v 1.3 2000/08/17 19:41:47 cpqbld Exp $
211d341caSmrg
311d341caSmrg
411d341caSmrg
511d341caSmrg
611d341caSmrg
711d341caSmrgXCOMM $XFree86: xc/config/cf/bsdLib.rules,v 3.27 2003/11/20 00:41:37 dawes Exp $
811d341caSmrg/*
911d341caSmrg * NetBSD/FreeBSD shared library rules
1011d341caSmrg */
1111d341caSmrg
1211d341caSmrg#ifndef UseElfFormat
1311d341caSmrg#define UseElfFormat NO
1411d341caSmrg#endif
1511d341caSmrg
1611d341caSmrg#if !UseElfFormat
1711d341caSmrg/* a.out shared libs */
1811d341caSmrg#ifndef HasSharedLibraries
1911d341caSmrg# ifndef Arm32Architecture
2011d341caSmrg#  define HasSharedLibraries YES
2111d341caSmrg# endif
2211d341caSmrg#endif
2311d341caSmrg#ifndef SharedDataSeparation
2411d341caSmrg#define SharedDataSeparation NO
2511d341caSmrg#endif
2611d341caSmrg#ifndef SharedCodeDef
2711d341caSmrg#define SharedCodeDef
2811d341caSmrg#endif
2911d341caSmrg#ifndef SharedLibraryDef
3011d341caSmrg#define SharedLibraryDef -DBSDSHLIB
3111d341caSmrg#endif
3211d341caSmrg#ifndef ShLibIncludeFile
3311d341caSmrg#define ShLibIncludeFile <bsdLib.tmpl>
3411d341caSmrg#endif
3511d341caSmrg#ifndef SharedLibraryLoadFlags
3611d341caSmrg#define SharedLibraryLoadFlags -Bshareable
3711d341caSmrg#endif
3811d341caSmrg#ifndef PositionIndependentCFlags
3911d341caSmrg#define PositionIndependentCFlags -fpic
4011d341caSmrg#endif
4111d341caSmrg
4211d341caSmrg/*
4311d341caSmrg * InstallSharedLibrary - generate rules to install the shared library.
4411d341caSmrg */
4511d341caSmrg#ifndef InstallSharedLibrary
4611d341caSmrg#define InstallSharedLibrary(libname,rev,dest)				@@\
4711d341caSmrginstall:: Concat(lib,libname.so.rev)					@@\
4811d341caSmrg	MakeDir($(DESTDIR)dest)						@@\
4911d341caSmrg	$(INSTALL) -c $(INSTLIBFLAGS) Concat(lib,libname.so.rev) $(DESTDIR)dest 
5011d341caSmrg@@\
5111d341caSmrg
5211d341caSmrg#endif /* InstallSharedLibrary */
5311d341caSmrg
5411d341caSmrg/*
5511d341caSmrg * SharedLibraryTarget - generate rules to create a shared library;
5611d341caSmrg * build it into a different name so that we do not hose people by having
5711d341caSmrg * the library gone for long periods.
5811d341caSmrg */
5911d341caSmrg#ifndef SharedLibraryTarget
6011d341caSmrg#define SharedLibraryTarget(libname,rev,solist,down,up)			@@\
6111d341caSmrgAllTarget(Concat(lib,libname.so.rev))					@@\
6211d341caSmrg									@@\
6311d341caSmrgConcat(lib,libname.so.rev):  solist $(EXTRALIBRARYDEPS)			@@\
6411d341caSmrg	$(RM) $@~							@@\
6511d341caSmrg	(cd down; $(LD) -o up/$@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS)) @@\
6611d341caSmrg	$(RM) $@							@@\
6711d341caSmrg	$(MV) $@~ $@							@@\
6811d341caSmrg	LinkBuildLibrary($@)						@@\
6911d341caSmrg									@@\
7011d341caSmrgclean::									@@\
7111d341caSmrg	$(RM) Concat(lib,libname.so.rev)
7211d341caSmrg
7311d341caSmrg#endif /* SharedLibraryTarget */
7411d341caSmrg
7511d341caSmrg/*
7611d341caSmrg * SharedDepLibraryTarget - generate rules to create a shared library.
7711d341caSmrg */
7811d341caSmrg#ifndef SharedDepLibraryTarget
7911d341caSmrg#define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up)	@@\
8011d341caSmrgAllTarget(Concat(lib,libname.so.rev))					@@\
8111d341caSmrg									@@\
8211d341caSmrgConcat(lib,libname.so.rev):  deplist $(EXTRALIBRARYDEPS)		@@\
8311d341caSmrg	$(RM) $@~							@@\
8411d341caSmrg	(cd down; $(LD) -o up/$@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS)) @@\
8511d341caSmrg	$(RM) $@							@@\
8611d341caSmrg	$(MV) $@~ $@							@@\
8711d341caSmrg	LinkBuildLibrary($@)						@@\
8811d341caSmrg									@@\
8911d341caSmrgclean::									@@\
9011d341caSmrg	$(RM) Concat(lib,libname.so.rev)
9111d341caSmrg
9211d341caSmrg#endif /* SharedDepLibraryTarget */
9311d341caSmrg
9411d341caSmrg#ifndef SharedDepModuleTarget
9511d341caSmrg#define SharedDepModuleTarget(name,deps,solist)				@@\
9611d341caSmrgAllTarget(name)								@@\
9711d341caSmrg									@@\
9811d341caSmrgname: deps								@@\
9911d341caSmrg	$(RM) $@~							@@\
10011d341caSmrg	$(LD) -o $@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS)		@@\
10111d341caSmrg	$(RM) $@							@@\
10211d341caSmrg	$(MV) $@~ $@							@@\
10311d341caSmrg									@@\
10411d341caSmrgclean::									@@\
10511d341caSmrg	$(RM) name
10611d341caSmrg
10711d341caSmrg#endif /* SharedDepModuleTarget */
10811d341caSmrg
10911d341caSmrg/*
11011d341caSmrg * SharedLibraryDataTarget - generate rules to create shlib data file;
11111d341caSmrg */
11211d341caSmrg#ifndef SharedLibraryDataTarget
11311d341caSmrg#define SharedLibraryDataTarget(libname,rev,salist)
11411d341caSmrg#endif /* SharedLibraryDataTarget */
11511d341caSmrg
11611d341caSmrg#ifndef InstallSharedLibraryData
11711d341caSmrg#define InstallSharedLibraryData(libname,rev,dest)
11811d341caSmrg#endif /* InstallSharedLibraryData */
11911d341caSmrg
12011d341caSmrg/*
12111d341caSmrg * SharedLibReferences - variables for shared libraries
12211d341caSmrg */
12311d341caSmrg#ifndef SharedLibReferences
12411d341caSmrg#define SharedLibReferences(varname,libname,libsource,revname,rev)	@@\
12511d341caSmrgrevname = rev								@@\
12611d341caSmrgConcat3(DEP,varname,LIB) = SharedLibDependencies(libname,libsource,revname) @@\
12711d341caSmrgConcat(varname,LIB) = LoaderLibPrefix Concat(-l,libname)		@@\
12811d341caSmrgLintLibReferences(varname,libname,libsource)
12911d341caSmrg#endif
13011d341caSmrg
13111d341caSmrg /*
13211d341caSmrg * SharedFontLibReferences - shared font libraries
13311d341caSmrg */
13411d341caSmrg#ifndef SharedFontLibReferences
13511d341caSmrg#define SharedFontLibReferences()					@@\
13611d341caSmrgSOFONTREV = SharedFontRev						@@\
13711d341caSmrgDEPFONTLIB = SharedLibDependencies(Xfont,$(FONTLIBSRC),SOFONTREV)	@@\
13811d341caSmrgFONTLIB = -L$(FREETYPELIBDIR) -L$(FONTLIBSRC) LoaderLibPrefix -lXfont	@@\
13911d341caSmrgLintLibReferences(XFONT,Xfont,$(FONTLIBSRC))
14011d341caSmrg#endif
14111d341caSmrg
14211d341caSmrg/*
14311d341caSmrg * SharedDSLibReferences - variables for shared libraries
14411d341caSmrg */
14511d341caSmrg#ifndef SharedDSLibReferences
14611d341caSmrg#define SharedDSLibReferences(varname,libname,libsource,revname,rev)	@@\
14711d341caSmrgrevname = rev								@@\
14811d341caSmrgConcat3(DEP,varname,LIB) = SharedDSLibDependencies(libname,libsource,revname) @@\
14911d341caSmrgConcat(varname,LIB) = LoaderLibPrefix Concat(-l,libname) Concat3(Shared,libname,Reqs)		@@\
15011d341caSmrgLintLibReferences(varname,libname,libsource)
15111d341caSmrg#endif
15211d341caSmrg
15311d341caSmrg#else /* UseElfFormat */
15411d341caSmrg
15511d341caSmrg/*
15611d341caSmrg * NetBSD/FreeBSD (ELF) shared library rules
15711d341caSmrg * Cloned from Linux ELF rules, with the following major change:
15811d341caSmrg *
15911d341caSmrg * 	Shared libraries depend on -lc.  Since we don't have to worry
16011d341caSmrg *	about libc vs. libg, etc., this is a good idea.  (This is actually
16111d341caSmrg *	implied by using $(CC) to build the shared libraries.)  Adding it
16211d341caSmrg *	explicitly will break threaded applications on platforms that use
16311d341caSmrg *	libc_r for thread support.
16411d341caSmrg */
16511d341caSmrg
16611d341caSmrg#ifndef HasSharedLibraries
16711d341caSmrg#define HasSharedLibraries YES
16811d341caSmrg#endif
16911d341caSmrg#ifndef ForceNormalLib
17011d341caSmrg#define ForceNormalLib YES
17111d341caSmrg#endif
17211d341caSmrg
17311d341caSmrg#ifndef UseRpath
17411d341caSmrg#define UseRpath YES
17511d341caSmrg#endif
17611d341caSmrg
17711d341caSmrg#ifndef BaseShLibReqs
17811d341caSmrg#define BaseShLibReqs		/* -lc */
17911d341caSmrg#endif
18011d341caSmrg
18111d341caSmrg#ifndef SharedDataSeparation
18211d341caSmrg#define SharedDataSeparation NO
18311d341caSmrg#endif
18411d341caSmrg#ifndef SharedCodeDef
18511d341caSmrg#define SharedCodeDef /**/
18611d341caSmrg#endif
18711d341caSmrg#ifndef SharedLibraryDef
18811d341caSmrg#define SharedLibraryDef /**/
18911d341caSmrg#endif
19011d341caSmrg#ifndef ShLibIncludeFile
19111d341caSmrg#define ShLibIncludeFile <bsdLib.tmpl>
19211d341caSmrg#endif
19311d341caSmrg#ifndef RpathLoadFlags
19411d341caSmrg#if UseRpath
19511d341caSmrg#define RpathLoadFlags -Wl,-rpath,$(USRLIBDIRPATH)
19611d341caSmrg#else
19711d341caSmrg#define RpathLoadFlags /**/
19811d341caSmrg#endif
19911d341caSmrg#endif
20011d341caSmrg#ifndef LibraryRpathLoadFlags
20111d341caSmrg#define LibraryRpathLoadFlags RpathLoadFlags
20211d341caSmrg#endif
20311d341caSmrg#ifndef SharedLibraryLoadFlags
20411d341caSmrg#define SharedLibraryLoadFlags -shared LibraryRpathLoadFlags
20511d341caSmrg#endif
20611d341caSmrg#ifndef PositionIndependentCFlags
20711d341caSmrg#define PositionIndependentCFlags -fPIC
20811d341caSmrg#endif
20911d341caSmrg#ifndef PositionIndependentCplusplusFlags
21011d341caSmrg#define PositionIndependentCplusplusFlags -fPIC
21111d341caSmrg#endif
21211d341caSmrg#ifndef ExtraLoadFlags
21311d341caSmrg#ifdef UseInstalled
21411d341caSmrg#define ExtraLoadFlags RpathLoadFlags
21511d341caSmrg#else
21611d341caSmrg#define ExtraLoadFlags RpathLoadFlags -Wl,-rpath-link,$(BUILDLIBDIR)
21711d341caSmrg#endif
21811d341caSmrg#endif
21911d341caSmrg
22011d341caSmrg#ifndef HardCodeLibdirFlag
22111d341caSmrg#define HardCodeLibdirFlag RpathLoadFlags
22211d341caSmrg#endif
22311d341caSmrg
22411d341caSmrg#if !defined(ShlibGlobalsFlags)
22511d341caSmrg#define ShlibGlobalsFlags -Wl,-Bsymbolic
22611d341caSmrg#endif
22711d341caSmrg
22811d341caSmrg/*
22911d341caSmrg * InstallSharedLibrary - generate rules to install the shared library.
23011d341caSmrg * NOTE: file must be executable, hence "INSTBINFLAGS"
23111d341caSmrg */
23211d341caSmrg#if !defined(FreeBSDArchitecture) || defined(DragonFlyArchitecture)
23311d341caSmrgINSTALLMINORREV = true
23411d341caSmrg#else
23511d341caSmrgINSTALLMINORREV = false
23611d341caSmrg#endif
23711d341caSmrg
23811d341caSmrg#ifndef InstallSharedLibrary
23911d341caSmrg#define InstallSharedLibrary(libname,rev,dest)				@@\
24011d341caSmrginstall:: Concat(lib,libname.so.rev) 					@@\
24111d341caSmrg	MakeDir($(DESTDIR)dest)						@@\
24211d341caSmrg	@T=`echo Concat(lib,libname.so.rev) | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`;\	@@\
24311d341caSmrg	if $(INSTALLMINORREV); then \					@@\
24411d341caSmrg	  INST=Concat(lib,libname.so.rev); \				@@\
24511d341caSmrg	  LINK=$$T; \							@@\
24611d341caSmrg	else \								@@\
24711d341caSmrg	  INST=$$T; \							@@\
24811d341caSmrg	fi; \								@@\
24911d341caSmrg	(set -x; \							@@\
25011d341caSmrg	$(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) $$INST $(DESTDIR)dest); \ @@\
25111d341caSmrg	if [ X"$$LINK" != X ]; then (set -x; \				@@\
25211d341caSmrg	  $(RM) $(DESTDIR)dest/$$LINK; \			@@\
25311d341caSmrg	  $(LN) $$INST $(DESTDIR)dest/$$LINK); \			@@\
25411d341caSmrg	fi; \								@@\
25511d341caSmrg	if $(SOSYMLINK); then (set -x; \				@@\
25611d341caSmrg	  $(RM) Concat($(DESTDIR)dest/lib,libname.so); \	@@\
25711d341caSmrg	  $(LN) $$T Concat($(DESTDIR)dest/lib,libname.so)); \		@@\
25811d341caSmrg	fi
25911d341caSmrg#endif /* InstallSharedLibrary */
26011d341caSmrg
26111d341caSmrg#ifndef InstallSharedLibtoolLibrary
26211d341caSmrg
26311d341caSmrg#define SetRevisions(rev) V=`expr rev : '\([^:]*\)'`; \			@@\
26411d341caSmrg		R=`expr rev : '.*:\([^:]*\):'`; \			@@\
26511d341caSmrg		A=`expr rev : '.*:\([^:]*\)'`; \			@@\
26611d341caSmrg		REV=$$V; \						@@\
26711d341caSmrg		REVLIST=""; \						@@\
26811d341caSmrg		i=$$A; \						@@\
26911d341caSmrg		while [ $$i -gt 0 ]; do \				@@\
27011d341caSmrg			REVLIST="$$REVLIST `expr $$REV - $$i`"; \	@@\
27111d341caSmrg			i=`expr $$i - 1`; \				@@\
27211d341caSmrg		done
27311d341caSmrg
27411d341caSmrg#define InstallSharedLibtoolLibrary(libname,rev,dest)			@@\
27511d341caSmrginstall:: Concat(lib,libname.so) 					@@\
27611d341caSmrg	MakeDir($(DESTDIR)dest)						@@\
27711d341caSmrg	@set +e; SetRevisions(rev); \					@@\
27811d341caSmrg	set -e; \							@@\
27911d341caSmrg	T=Concat(lib,libname.so.$$REV); \				@@\
28011d341caSmrg	if $(INSTALLMINORREV); then \					@@\
28111d341caSmrg	  INST=$$T.0; \							@@\
28211d341caSmrg	  LINK=$$T; \							@@\
28311d341caSmrg	else \								@@\
28411d341caSmrg	  INST=$$T; \							@@\
28511d341caSmrg	fi; \								@@\
28611d341caSmrg	(set -x; \							@@\
28711d341caSmrg	$(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) $$INST $(DESTDIR)dest); \ @@\
28811d341caSmrg	if [ X"$$LINK" != X ]; then (set -x; \				@@\
28911d341caSmrg	  $(RM) $(DESTDIR)dest/$$LINK; \				@@\
29011d341caSmrg	  $(LN) $$INST $(DESTDIR)dest/$$LINK); \			@@\
29111d341caSmrg	fi; \								@@\
29211d341caSmrg	for i in $$REVLIST; do (set -x; \				@@\
29311d341caSmrg	  $(RM) Concat($(DESTDIR)dest/lib,libname.so.$$i); \		@@\
29411d341caSmrg	  $(LN) Concat(lib,libname.so.$$REV) Concat($(DESTDIR)dest/lib,libname.so.$$i)); \ @@\
29511d341caSmrg	done; \								@@\
29611d341caSmrg	if $(SOSYMLINK); then (set -x; \				@@\
29711d341caSmrg	  $(RM) Concat($(DESTDIR)dest/lib,libname.so); \		@@\
29811d341caSmrg	  $(LN) Concat(lib,libname.so.$$REV) Concat($(DESTDIR)dest/lib,libname.so)); \									@@\
29911d341caSmrg	fi
30011d341caSmrg#endif /* InstallSharedLibtoolLibrary */
30111d341caSmrg
30211d341caSmrg/*
30311d341caSmrg * InstallSharedLibraryData - generate rules to install the shared library data
30411d341caSmrg */
30511d341caSmrg#ifndef InstallSharedLibraryData
30611d341caSmrg#define InstallSharedLibraryData(libname,rev,dest)
30711d341caSmrg#endif /* InstallSharedLibraryData */
30811d341caSmrg
30911d341caSmrg
31011d341caSmrg/*
31111d341caSmrg * SharedLibraryTarget - generate rules to create a shared library;
31211d341caSmrg * build it into a different name so that we do not hose people by having
31311d341caSmrg * the library gone for long periods.
31411d341caSmrg */
31511d341caSmrg#ifndef SharedLibraryTarget
31611d341caSmrg#define SharedLibraryTarget(libname,rev,solist,down,up)			@@\
31711d341caSmrgAllTarget(Concat(lib,libname.so.rev))					@@\
31811d341caSmrg									@@\
31911d341caSmrgConcat(lib,libname.so.rev):  solist					@@\
32011d341caSmrg	$(RM) $@~							@@\
32111d341caSmrg	@SONAME=`echo $@ | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \			@@\
32211d341caSmrg		(set -x; cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\
32311d341caSmrg		(set -x; $(RM) $$SONAME; $(LN) $@ $$SONAME); \		@@\
32411d341caSmrg		LinkBuildSonameLibrary($$SONAME)			@@\
32511d341caSmrg	$(RM) $@							@@\
32611d341caSmrg	$(MV) $@~ $@							@@\
32711d341caSmrg	LinkBuildLibrary($@)						@@\
32811d341caSmrg	@if $(SOSYMLINK); then (set -x; \				@@\
32911d341caSmrg	  $(RM) Concat(lib,libname.so); \				@@\
33011d341caSmrg	  $(LN) $@ Concat(lib,libname.so)); fi				@@\
33111d341caSmrg	LinkBuildLibraryMaybe(Concat(lib,libname.so),$(SOSYMLINK))	@@\
33211d341caSmrg									@@\
33311d341caSmrgclean::									@@\
33411d341caSmrg	@SONAME=`echo Concat(lib,libname.so.rev) | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\
33511d341caSmrg	set -x; $(RM) $$SONAME						@@\
33611d341caSmrg	$(RM) Concat(lib,libname.so)					@@\
33711d341caSmrg	$(RM) Concat(lib,libname.so.rev)
33811d341caSmrg
33911d341caSmrg#endif /* SharedLibraryTarget */
34011d341caSmrg
34111d341caSmrg#ifndef SharedLibtoolLibraryTarget
34211d341caSmrg#define SharedLibtoolLibraryTarget(libname,rev,solist,down,up)		@@\
34311d341caSmrgAllTarget(Concat(lib,libname.so))					@@\
34411d341caSmrg									@@\
34511d341caSmrgConcat(lib,libname.so):  solist						@@\
34611d341caSmrg	$(RM) $@~							@@\
34711d341caSmrg	@set +e; SetRevisions(rev); \					@@\
34811d341caSmrg	SONAME=$@.$$REV; \						@@\
34911d341caSmrg	set -e; \							@@\
35011d341caSmrg	(set -x; cd down; $(CC) -o up/$$SONAME~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\
35111d341caSmrg	(set -x; $(RM) $$SONAME; $(MV) $$SONAME~ $$SONAME); \		@@\
35211d341caSmrg	LinkBuildSonameLibrary($$SONAME); \				@@\
35311d341caSmrg	if $(INSTALLMINORREV); then (set -x; \				@@\
35411d341caSmrg	  $(RM) $$SONAME.0; \						@@\
35511d341caSmrg	  $(LN) $$SONAME $$SONAME.0); \					@@\
35611d341caSmrg	fi; \								@@\
35711d341caSmrg	if $(SOSYMLINK); then (set -x; \				@@\
35811d341caSmrg	  $(RM) $@; \							@@\
35911d341caSmrg	  $(LN) $$SONAME $@); \						@@\
36011d341caSmrg	  LinkBuildLibraryInline($@); \					@@\
36111d341caSmrg	fi								@@\
36211d341caSmrg									@@\
36311d341caSmrgclean::									@@\
36411d341caSmrg	@set +e; SetRevisions(rev); \					@@\
36511d341caSmrg		set -xe; \						@@\
36611d341caSmrg		$(RM) Concat(lib,libname.so.$$REV); \			@@\
36711d341caSmrg		$(RM) Concat(lib,libname.so.$$REV.0)			@@\
36811d341caSmrg	$(RM) Concat(lib,libname.so)
36911d341caSmrg
37011d341caSmrg#endif /* SharedLibtoolLibraryTarget */
37111d341caSmrg
37211d341caSmrg/*
37311d341caSmrg * SharedDepLibraryTarget - generate rules to create a shared library.
37411d341caSmrg */
37511d341caSmrg#ifndef SharedDepLibraryTarget
37611d341caSmrg#define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up)	@@\
37711d341caSmrgAllTarget(Concat(lib,libname.so.rev))					@@\
37811d341caSmrg									@@\
37911d341caSmrgConcat(lib,libname.so.rev):  deplist					@@\
38011d341caSmrg	$(RM) $@~							@@\
38111d341caSmrg	@SONAME=`echo $@ | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; set -x; \		@@\
38211d341caSmrg		(cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\
38311d341caSmrg		$(RM) $$SONAME; $(LN) $@ $$SONAME; \			@@\
38411d341caSmrg		LinkBuildSonameLibrary($$SONAME)			@@\
38511d341caSmrg	$(RM) $@							@@\
38611d341caSmrg	$(MV) $@~ $@							@@\
38711d341caSmrg	$(RM) Concat(lib,libname.so)					@@\
38811d341caSmrg	$(LN) $@ Concat(lib,libname.so)					@@\
38911d341caSmrg	LinkBuildLibrary($@)						@@\
39011d341caSmrg	LinkBuildLibrary(Concat(lib,libname.so))			@@\
39111d341caSmrg									@@\
39211d341caSmrgclean::									@@\
39311d341caSmrg	@SONAME=`echo Concat(lib,libname.so.rev) | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\
39411d341caSmrg	set -x; $(RM) $$SONAME						@@\
39511d341caSmrg	$(RM) Concat(lib,libname.so)					@@\
39611d341caSmrg	$(RM) Concat(lib,libname.so.rev)
39711d341caSmrg
39811d341caSmrg#endif /* SharedDepLibraryTarget */
39911d341caSmrg
40011d341caSmrg/*
40111d341caSmrg * SharedDepCplusplusLibraryTarget - generate rules to create a shared library.
40211d341caSmrg */
40311d341caSmrg#ifndef SharedDepCplusplusLibraryTarget
40411d341caSmrg#define SharedDepCplusplusLibraryTarget(libname,rev,deplist,solist,down,up)	@@\
40511d341caSmrgAllTarget(Concat(lib,libname.so.rev))					@@\
40611d341caSmrg									@@\
40711d341caSmrgConcat(lib,libname.so.rev):  deplist					@@\
40811d341caSmrg	$(RM) $@~							@@\
40911d341caSmrg	@SONAME=`echo $@ | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; set -x; \		@@\
41011d341caSmrg		(cd down; $(CXX) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\
41111d341caSmrg		$(RM) $$SONAME; $(LN) $@ $$SONAME; \			@@\
41211d341caSmrg		LinkBuildSonameLibrary($$SONAME)			@@\
41311d341caSmrg	$(RM) $@							@@\
41411d341caSmrg	$(MV) $@~ $@							@@\
41511d341caSmrg	$(RM) Concat(lib,libname.so)					@@\
41611d341caSmrg	$(LN) $@ Concat(lib,libname.so)					@@\
41711d341caSmrg	LinkBuildLibrary($@)						@@\
41811d341caSmrg	LinkBuildLibrary(Concat(lib,libname.so))			@@\
41911d341caSmrg									@@\
42011d341caSmrgclean::									@@\
42111d341caSmrg	@SONAME=`echo Concat(lib,libname.so.rev) | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\
42211d341caSmrg	set -x; $(RM) $$SONAME						@@\
42311d341caSmrg	$(RM) Concat(lib,libname.so)					@@\
42411d341caSmrg	$(RM) Concat(lib,libname.so.rev)
42511d341caSmrg
42611d341caSmrg#endif /* SharedDepCplusplusLibraryTarget */
42711d341caSmrg
42811d341caSmrg#ifndef SharedDepModuleTarget
42911d341caSmrg#define SharedDepModuleTarget(name,deps,solist)				@@\
43011d341caSmrgAllTarget(name)								@@\
43111d341caSmrg									@@\
43211d341caSmrgname: deps								@@\
43311d341caSmrg	$(RM) $@~							@@\
43411d341caSmrg	$(CC) -o $@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS)		@@\
43511d341caSmrg	$(RM) $@							@@\
43611d341caSmrg	$(MV) $@~ $@							@@\
43711d341caSmrg									@@\
43811d341caSmrgclean::									@@\
43911d341caSmrg	$(RM) name
44011d341caSmrg
44111d341caSmrg#endif /* SharedDepModuleTarget */
44211d341caSmrg
44311d341caSmrg#ifndef SharedDriModuleTarget
44411d341caSmrg#define SharedDriModuleTarget(name,deps,solist)				@@\
44511d341caSmrgAllTarget(name)								@@\
44611d341caSmrg									@@\
44711d341caSmrgname: deps								@@\
44811d341caSmrg	$(RM) $@~ $@.map						@@\
44911d341caSmrg	@(echo 'DRI_MODULE { global: __dri*; local: *; };' > $@.map)	@@\
45011d341caSmrg	$(CC) -o $@~ -Wl,--version-script=$@.map $(SHLIBLDFLAGS) solist $(REQUIREDLIBS) BaseShLibReqs @@\
45111d341caSmrg	$(RM) $@ $@.map							@@\
45211d341caSmrg	$(MV) $@~ $@							@@\
45311d341caSmrg									@@\
45411d341caSmrgclean::									@@\
45511d341caSmrg	$(RM) name							@@\
45611d341caSmrg	$(RM) name.map
45711d341caSmrg
45811d341caSmrg#endif /* SharedDriModuleTarget */
45911d341caSmrg
46011d341caSmrg/*
46111d341caSmrg * SharedLibraryDataTarget - generate rules to create shlib data file;
46211d341caSmrg */
46311d341caSmrg#ifndef SharedLibraryDataTarget
46411d341caSmrg#define SharedLibraryDataTarget(libname,rev,salist)
46511d341caSmrg#endif /* SharedLibraryTarget */
46611d341caSmrg
46711d341caSmrg#if defined(FreeBSDArchitecture)
46811d341caSmrg
46911d341caSmrg/*
47011d341caSmrg * Support for building a.out compatibility libraries on a FreeBSD/ELF system.
47111d341caSmrg */
47211d341caSmrg#ifndef BuildAoutLibraries
47311d341caSmrg#define BuildAoutLibraries NO
47411d341caSmrg#endif
47511d341caSmrg
47611d341caSmrg#if BuildAoutLibraries
47711d341caSmrg
47811d341caSmrg#define ExtraLibRules
47911d341caSmrg
48011d341caSmrg#ifndef AoutSharedLibraryDef
48111d341caSmrg#define AoutSharedLibraryDef -DBSDSHLIB
48211d341caSmrg#endif
48311d341caSmrg#ifndef AoutSharedLibraryLoadFlags
48411d341caSmrg#define AoutSharedLibraryLoadFlags -aout -Bshareable
48511d341caSmrg#endif
48611d341caSmrg#ifndef AoutPositionIndependentCFlags
48711d341caSmrg#define AoutPositionIndependentCFlags -fpic
48811d341caSmrg#endif
48911d341caSmrg
49011d341caSmrg/*
49111d341caSmrg * InstallAoutSharedLibrary - generate rules to install the shared library.
49211d341caSmrg */
49311d341caSmrg#ifndef InstallAoutSharedLibrary
49411d341caSmrg#define InstallAoutSharedLibrary(libname,rev,dest)			@@\
49511d341caSmrginstall:: Concat(aout/lib,libname.so.rev)				@@\
49611d341caSmrg	MakeDir($(DESTDIR)dest)						@@\
49711d341caSmrg	$(INSTALL) -c $(INSTLIBFLAGS) Concat(aout/lib,libname.so.rev) $(DESTDIR)dest 
49811d341caSmrg@@\
49911d341caSmrg
50011d341caSmrg#endif /* InstallAoutSharedLibrary */
50111d341caSmrg
50211d341caSmrg/*
50311d341caSmrg * AoutSharedLibraryTarget - generate rules to create a shared library;
50411d341caSmrg * build it into a different name so that we do not hose people by having
50511d341caSmrg * the library gone for long periods.
50611d341caSmrg */
50711d341caSmrg#ifndef AoutSharedLibraryTarget
50811d341caSmrg#define AoutSharedLibraryTarget(libname,rev,solist,down,up)		@@\
50911d341caSmrgAllTarget(Concat(down/lib,libname.so.rev))				@@\
51011d341caSmrg									@@\
51111d341caSmrgConcat(down/lib,libname.so.rev):  solist $(EXTRALIBRARYDEPS)		@@\
51211d341caSmrg	$(RM) $@~							@@\
51311d341caSmrg	(cd down; $(LD) -o up/$@~ AoutSharedLibraryLoadFlags solist)	@@\
51411d341caSmrg	$(RM) $@							@@\
51511d341caSmrg	$(MV) $@~ $@							@@\
51611d341caSmrg									@@\
51711d341caSmrgclean::									@@\
51811d341caSmrg	$(RM) Concat(down/lib,libname.so.rev)
51911d341caSmrg
52011d341caSmrg#endif /* AoutSharedLibraryTarget */
52111d341caSmrg
52211d341caSmrg#define AoutCDebugFlags -aout DefaultCDebugFlags
52311d341caSmrg#define AoutCplusplusDebugFlags -aout DefaultCplusplusDebugFlags
52411d341caSmrg
52511d341caSmrg#define AoutLibObjCompile(options) LibObjCompile(aout,AoutCDebugFlags AoutSharedLibraryDef AoutPositionIndependentCFlags options)
52611d341caSmrg#define AoutLibObjCplusplusCompile(options) LibObjCompile(aout,AoutCplusplusDebugFlags options)
52711d341caSmrg
52811d341caSmrg#define ExtraLibMkdir() _LibMkdir(aout)
52911d341caSmrg#define ExtraObjCompile(options) AoutLibObjCompile(options)
53011d341caSmrg#define ExtraObjCplusplusCompile(options) AoutLibObjCplusplusCompile(options)
53111d341caSmrg#define ExtraCleanDir() LibCleanDir(aout)
53211d341caSmrg
53311d341caSmrg#define ExtraLibraryTarget(libname,so,objs) AoutSharedLibraryTarget(libname,so,objs,aout,..)
53411d341caSmrg#define ExtraInstallLibrary(libname,so) InstallAoutSharedLibrary(libname,so,$(SHLIBDIR)/aout)
53511d341caSmrg
53611d341caSmrg#endif
53711d341caSmrg#endif
53811d341caSmrg
53911d341caSmrg
54011d341caSmrg#endif /* UseElfFormat */
541