111d341caSmrgXCOMM $OpenBSD: OpenBSDLib.rules,v 1.1 2000/10/09 20:43:58 matthieu Exp $
211d341caSmrg
311d341caSmrg
411d341caSmrg
511d341caSmrg
611d341caSmrg/*
711d341caSmrg * OpenBSD shared library rules
811d341caSmrg */
911d341caSmrg
1011d341caSmrgXCOMM $XFree86: xc/config/cf/OpenBSDLib.rules,v 1.10 2003/10/31 20:49:03 herrb Exp $
1111d341caSmrg
1211d341caSmrg#ifndef UseElfFormat
1311d341caSmrg#define UseElfFormat NO
1411d341caSmrg#endif
1511d341caSmrg
1611d341caSmrg#ifndef HasSharedLibraries
1711d341caSmrg#define HasSharedLibraries YES
1811d341caSmrg#endif
1911d341caSmrg#ifndef ForceNormalLib
2011d341caSmrg#define ForceNormalLib YES
2111d341caSmrg#endif
2211d341caSmrg
2311d341caSmrg#ifndef UseRpath
2411d341caSmrg#define UseRpath YES
2511d341caSmrg#endif
2611d341caSmrg
2711d341caSmrg#ifndef BaseShLibReqs
2811d341caSmrg#define BaseShLibReqs		/* -lc implied by $(CC) */
2911d341caSmrg#endif
3011d341caSmrg
3111d341caSmrg#ifndef SharedDataSeparation
3211d341caSmrg#define SharedDataSeparation NO
3311d341caSmrg#endif
3411d341caSmrg#ifndef SharedCodeDef
3511d341caSmrg#define SharedCodeDef /**/
3611d341caSmrg#endif
3711d341caSmrg#ifndef SharedLibraryDef
3811d341caSmrg#define SharedLibraryDef /**/
3911d341caSmrg#endif
4011d341caSmrg#ifndef ShLibIncludeFile
4111d341caSmrg#define ShLibIncludeFile <OpenBSDLib.tmpl>
4211d341caSmrg#endif
4311d341caSmrg#ifndef RpathLoadFlags
4411d341caSmrg#if UseRpath
4511d341caSmrg#define RpathLoadFlags -Wl,-rpath,$(USRLIBDIRPATH)
4611d341caSmrg#else
4711d341caSmrg#define RpathLoadFlags /**/
4811d341caSmrg#endif
4911d341caSmrg#endif
5011d341caSmrg#ifndef LibraryRpathLoadFlags
5111d341caSmrg#define LibraryRpathLoadFlags RpathLoadFlags
5211d341caSmrg#endif
5311d341caSmrg#ifndef SharedLibraryLoadFlags
5411d341caSmrg#define SharedLibraryLoadFlags -shared PositionIndependentCFlags LibraryRpathLoadFlags
5511d341caSmrg#endif
5611d341caSmrg#ifndef PositionIndependentCFlags
5711d341caSmrg#define PositionIndependentCFlags -fPIC
5811d341caSmrg#endif
5911d341caSmrg#ifndef PositionIndependentCplusplusFlags
6011d341caSmrg#define PositionIndependentCplusplusFlags -fPIC
6111d341caSmrg#endif
6211d341caSmrg#if UseElfFormat
6311d341caSmrg#ifndef ExtraLoadFlags
6411d341caSmrg#ifdef UseInstalled
6511d341caSmrg#define ExtraLoadFlags RpathLoadFlags
6611d341caSmrg#else
6711d341caSmrg#define ExtraLoadFlags RpathLoadFlags -Wl,-rpath-link,$(BUILDLIBDIR)
6811d341caSmrg#endif
6911d341caSmrg#endif
7011d341caSmrg#ifndef HardCodeLibdirFlag
7111d341caSmrg#define HardCodeLibdirFlag RpathLoadFlags
7211d341caSmrg#endif
7311d341caSmrg#endif /* UseElfFormat */
7411d341caSmrg
7511d341caSmrg/*
7611d341caSmrg * InstallSharedLibrary - generate rules to install the shared library.
7711d341caSmrg * NOTE: file must be executable, hence "INSTBINFLAGS"
7811d341caSmrg */
7911d341caSmrg#ifndef InstallSharedLibrary
8011d341caSmrg#define InstallSharedLibrary(libname,rev,dest)				@@\
8111d341caSmrginstall:: Concat(lib,libname.so.rev) 					@@\
8211d341caSmrg	MakeDir($(DESTDIR)dest)						@@\
8311d341caSmrg	$(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) Concat(lib,libname.so.rev) $(DESTDIR)dest
8411d341caSmrg#endif /* InstallSharedLibrary */
8511d341caSmrg
8611d341caSmrg/*
8711d341caSmrg * InstallSharedLibraryData - generate rules to install the shared library data
8811d341caSmrg */
8911d341caSmrg#ifndef InstallSharedLibraryData
9011d341caSmrg#define InstallSharedLibraryData(libname,rev,dest)
9111d341caSmrg#endif /* InstallSharedLibraryData */
9211d341caSmrg
9311d341caSmrg
9411d341caSmrg/*
9511d341caSmrg * SharedLibraryTarget - generate rules to create a shared library;
9611d341caSmrg * build it into a different name so that we do not hose people by having
9711d341caSmrg * the library gone for long periods.
9811d341caSmrg */
9911d341caSmrg#ifndef SharedLibraryTarget
10011d341caSmrg
10111d341caSmrg#define SharedLibraryTarget(libname,rev,solist,down,up)			@@\
10211d341caSmrgAllTarget(Concat(lib,libname.so.rev))					@@\
10311d341caSmrg									@@\
10411d341caSmrgConcat(lib,libname.so.rev):  solist					@@\
10511d341caSmrg	$(RM) $@~							@@\
10611d341caSmrg	set -x; \							@@\
10711d341caSmrg		(cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$@\ @@\
10811d341caSmrg		solist $(REQUIREDLIBS) BaseShLibReqs); 			@@\
10911d341caSmrg		LinkBuildSonameLibrary($@)				@@\
11011d341caSmrg	$(RM) $@							@@\
11111d341caSmrg	$(MV) $@~ $@							@@\
11211d341caSmrg									@@\
11311d341caSmrgclean::									@@\
11411d341caSmrg	$(RM) Concat(lib,libname.so.rev)
11511d341caSmrg
11611d341caSmrg#endif /* SharedLibraryTarget */
11711d341caSmrg
11811d341caSmrg
11911d341caSmrg/*
12011d341caSmrg * SharedDepLibraryTarget - generate rules to create a shared library.
12111d341caSmrg */
12211d341caSmrg#ifndef SharedDepLibraryTarget
12311d341caSmrg#define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up)	@@\
12411d341caSmrgAllTarget(Concat(lib,libname.so.rev))					@@\
12511d341caSmrg									@@\
12611d341caSmrgConcat(lib,libname.so.rev):  deplist $(EXTRALIBRARYDEPS)		@@\
12711d341caSmrg	$(RM) $@~							@@\
12811d341caSmrg	(cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS)) @@\
12911d341caSmrg	$(RM) $@							@@\
13011d341caSmrg	$(MV) $@~ $@							@@\
13111d341caSmrg	LinkBuildLibrary($@)						@@\
13211d341caSmrg									@@\
13311d341caSmrgclean::									@@\
13411d341caSmrg	$(RM) Concat(lib,libname.so.rev)
13511d341caSmrg
13611d341caSmrg#endif /* SharedDepLibraryTarget */
13711d341caSmrg
13811d341caSmrg#ifndef SharedDepModuleTarget
13911d341caSmrg#define SharedDepModuleTarget(name,deps,solist)				@@\
14011d341caSmrgAllTarget(name)								@@\
14111d341caSmrg									@@\
14211d341caSmrgname: deps								@@\
14311d341caSmrg	$(RM) $@~							@@\
14411d341caSmrg	$(CC) -o $@~ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS)		@@\
14511d341caSmrg	$(RM) $@							@@\
14611d341caSmrg	$(MV) $@~ $@							@@\
14711d341caSmrg									@@\
14811d341caSmrgclean::									@@\
14911d341caSmrg	$(RM) name
15011d341caSmrg
15111d341caSmrg#endif /* SharedDepModuleTarget */
15211d341caSmrg
15311d341caSmrg#ifndef SharedDriModuleTarget
15411d341caSmrg#define SharedDriModuleTarget(name,deps,solist)				@@\
15511d341caSmrgAllTarget(name)								@@\
15611d341caSmrg									@@\
15711d341caSmrgname: deps								@@\
15811d341caSmrg	$(RM) $@~ $@.map						@@\
15911d341caSmrg	$(CC) -o $@~  $(SHLIBLDFLAGS) solist $(REQUIREDLIBS) BaseShLibReqs @@\
16011d341caSmrg	$(RM) $@ $@.map							@@\
16111d341caSmrg	$(MV) $@~ $@							@@\
16211d341caSmrg									@@\
16311d341caSmrgclean::									@@\
16411d341caSmrg	$(RM) name							@@\
16511d341caSmrg	$(RM) name.map
16611d341caSmrg
16711d341caSmrg#endif /* SharedDriModuleTarget */
16811d341caSmrg
16911d341caSmrg/*
17011d341caSmrg * SharedLibraryDataTarget - generate rules to create shlib data file;
17111d341caSmrg */
17211d341caSmrg#ifndef SharedLibraryDataTarget
17311d341caSmrg#define SharedLibraryDataTarget(libname,rev,salist)
17411d341caSmrg#endif /* SharedLibraryTarget */
17511d341caSmrg
17611d341caSmrg/*
17711d341caSmrg * DynamicModuleTarget - build a module to be dynamically loaded
17811d341caSmrg */
17911d341caSmrg#ifdef DynamicModuleTarget
18011d341caSmrg#undef DynamicModuleTarget
18111d341caSmrg#define DynamicModuleTarget(module,modlist)				@@\
18211d341caSmrgAllTarget(module)							@@\
18311d341caSmrg									@@\
18411d341caSmrgmodule: modlist								@@\
18511d341caSmrg	RemoveFile($@)							@@\
18611d341caSmrg	$(CC) -o $@ $(SHLIBLDFLAGS) modlist				@@\
18711d341caSmrg									@@\
18811d341caSmrgclean::									@@\
18911d341caSmrg	RemoveFile(module)
19011d341caSmrg#endif /* DynamicModuleTarget */
19111d341caSmrg
192