1XCOMM $XConsortium: osfLib.rules /main/16 1996/09/28 16:11:55 rws $
2
3/*
4 * OSF/1 shared library rules
5 */
6
7#ifndef HasSharedLibraries
8#define HasSharedLibraries YES
9#endif
10#ifndef SeparateSharedCompile
11#define SeparateSharedCompile NO
12#endif
13#ifndef SharedDataSeparation
14#define SharedDataSeparation NO
15#endif
16#ifndef SharedCodeDef
17#define SharedCodeDef /**/
18#endif
19#ifndef SharedLibraryDef
20#define SharedLibraryDef /**/
21#endif
22#ifndef ShLibIncludeFile
23#define ShLibIncludeFile <osfLib.tmpl>
24#endif
25#ifndef SharedLibraryLoadFlags
26#define SharedLibraryLoadFlags -shared -no_archive
27#endif
28
29#ifndef PositionIndependentCFlags
30#define PositionIndependentCFlags /**/
31#endif
32
33/*
34 * InstallSharedLibrary - generate rules to install the shared library.
35 */
36#ifndef InstallSharedLibrary
37#define	InstallSharedLibrary(libname,rev,dest)				@@\
38install:: Concat(lib,libname.so.rev) 					@@\
39	MakeDir($(DESTDIR)dest)						@@\
40	$(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) Concat(lib,libname.so.rev) $(DESTDIR)dest @@\
41	$(RM) Concat($(DESTDIR)dest/lib,libname.so)			@@\
42	cd $(DESTDIR)dest; $(LN) Concat(lib,libname.so.rev) Concat(lib,libname.so)
43
44#endif /* InstallSharedLibrary */
45
46/*
47 * InstallSharedLibraryData - generate rules to install the shared library data
48 */
49#ifndef InstallSharedLibraryData
50#define	InstallSharedLibraryData(libname,rev,dest)
51#endif /* InstallSharedLibraryData */
52
53#ifndef PackageName(libname)
54#if ModernOSF1
55#define PackageName(libname) /**/
56#define Objects(objlist) -all objlist -none
57#else
58#define PackageName(libname) -package libname
59#define Objects(objlist) objlist
60#endif
61#endif
62#if ThreadedX && ModernOSF1 && OSMajorVersion < 4
63#define BaseShLibReqs -lc_r -lc
64#else
65#define BaseShLibReqs -lc
66#endif
67
68/*
69 * SharedLibraryTarget - generate rules to create a shared library;
70 * build it into a different name so that we do not hose people by having
71 * the library gone for long periods.
72 */
73#ifndef SharedLibraryTarget
74#if SeparateSharedCompile
75#define SharedLibraryTarget(libname,rev,solist,down,up)			@@\
76AllTarget(Concat(lib,libname.so.rev))					@@\
77									@@\
78Concat(lib,libname.so.rev):  solist $(EXTRALIBRARYDEPS)			@@\
79	$(RM) $@~							@@\
80	(cd down; $(LD) -o up/$@~ $(SHLIBLDFLAGS) PackageName($@) \	@@\
81		-soname $@ Objects(solist) \				@@\
82		$(REQUIREDLIBS) BaseShLibReqs) 				@@\
83	$(RM) $@ 							@@\
84	$(MV) $@~ $@							@@\
85	$(RM) Concat(lib,libname.so)					@@\
86	$(LN) $@ Concat(lib,libname.so)					@@\
87	LinkBuildLibrary($@)						@@\
88	LinkBuildLibrary(Concat(lib,libname.so))			@@\
89									@@\
90clean::									@@\
91	$(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so)
92#else
93#define SharedLibraryTarget(libname,rev,solist,down,up)			@@\
94AllTarget(Concat(lib,libname.so.rev))					@@\
95									@@\
96Concat(lib,libname.so.rev):  solist $(EXTRALIBRARYDEPS)			@@\
97	$(RM) $@~							@@\
98	$(LD) -o $@~ $(SHLIBLDFLAGS) PackageName($@) \			@@\
99		-soname $@ Objects(solist) \				@@\
100		$(REQUIREDLIBS) BaseShLibReqs 				@@\
101	$(RM) $@ 							@@\
102	$(MV) $@~ $@							@@\
103	$(RM) Concat(lib,libname.so)					@@\
104	$(LN) $@ Concat(lib,libname.so)					@@\
105	LinkBuildLibrary($@)						@@\
106	LinkBuildLibrary(Concat(lib,libname.so))			@@\
107									@@\
108clean::									@@\
109	$(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so)
110#endif /* SeparateSharedCompile */
111#endif /* SharedLibraryTarget */
112
113/*
114 * SharedLibraryDataTarget - generate rules to create shlib data file;
115 */
116#ifndef SharedLibraryDataTarget
117#define SharedLibraryDataTarget(libname,rev,salist)
118#endif /* SharedLibraryTarget */
119