111d341caSmrgXCOMM $Xorg: sequentLib.rules,v 1.3 2000/08/17 19:41:48 cpqbld Exp $
211d341caSmrg
311d341caSmrg/*
411d341caSmrg * SVR4 shared library rules
511d341caSmrg */
611d341caSmrg
711d341caSmrg#ifndef HasSharedLibraries
811d341caSmrg# define HasSharedLibraries YES
911d341caSmrg#endif
1011d341caSmrg#ifndef SharedDataSeparation
1111d341caSmrg# define SharedDataSeparation NO
1211d341caSmrg#endif
1311d341caSmrg#ifndef SharedCodeDef
1411d341caSmrg# define SharedCodeDef /**/
1511d341caSmrg#endif
1611d341caSmrg#ifndef SharedLibraryDef
1711d341caSmrg# define SharedLibraryDef /**/
1811d341caSmrg#endif
1911d341caSmrg#ifndef ShLibIncludeFile
2011d341caSmrg# define ShLibIncludeFile <sequentLib.tmpl>
2111d341caSmrg#endif
2211d341caSmrg#ifndef SharedLibraryLoadFlags
2311d341caSmrg/* Sequent may need to implement the X11R5 HasMultipleSockets ? */
2411d341caSmrg# if HasMultipleSockets
2511d341caSmrg#  define SharedLibraryLoadFlags -G -z text $(DEFAULTSOCKETLDOPTIONS)
2611d341caSmrg#  define ExtraLoadOptions $(DEFAULTSOCKETLDOPTIONS)
2711d341caSmrg# else
2811d341caSmrg/* #  define SharedLibraryLoadFlags -G -z text */
2911d341caSmrg#  define SharedLibraryLoadFlags -G
3011d341caSmrg#  define ExtraLoadOptions
3111d341caSmrg# endif
3211d341caSmrg#endif
3311d341caSmrg#ifndef PositionIndependentCFlags
3411d341caSmrg# if HasGcc2
3511d341caSmrg#  define PositionIndependentCFlags -fpic
3611d341caSmrg# else
3711d341caSmrg#  define PositionIndependentCFlags -K PIC
3811d341caSmrg# endif
3911d341caSmrg#endif
4011d341caSmrg#ifndef PositionIndependentCplusplusFlags
4111d341caSmrg# if HasGcc2ForCplusplus
4211d341caSmrg#  define PositionIndependentCplusplusFlags -fpic
4311d341caSmrg# else
4411d341caSmrg#  define PositionIndependentCplusplusFlags -K PIC
4511d341caSmrg# endif
4611d341caSmrg#endif
4711d341caSmrg#ifndef UseExportLists
4811d341caSmrg# define UseExportLists NO
4911d341caSmrg#endif
5011d341caSmrg#ifndef UseHidesymsLists
5111d341caSmrg# define UseHidesymsLists NO
5211d341caSmrg#endif
5311d341caSmrg
5411d341caSmrg#if UseHidesymsLists
5511d341caSmrg
5611d341caSmrg#ifndef BuildHidesyms
5711d341caSmrg#define BuildHidesyms(libname)						@@\
5811d341caSmrgincludes::								@@\
5911d341caSmrg	MakeDir($(BUILDLIBDIR)/hidesyms) 				@@\
6011d341caSmrg	@( if [ -f Concat(lib,libname.hs) ]; \				@@\
6111d341caSmrg	then \								@@\
6211d341caSmrg	(set -x; cd $(BUILDLIBDIR)/hidesyms && \			@@\
6311d341caSmrg	RemoveFile(Concat(lib,libname.hs)) && \				@@\
6411d341caSmrg	$(LN) $(BUILDLIBTOP)/../$(CURRENT_DIR)/Concat(lib,libname.hs) .); \	@@\
6511d341caSmrg	fi; )
6611d341caSmrg#endif /* BuildHidesyms */
6711d341caSmrg
6811d341caSmrg/*
6911d341caSmrg * InstallHidesyms - install library hidesyms directive file. (Sequent only)
7011d341caSmrg * Logic cloned from InstallNonExecFile.
7111d341caSmrg * We do not list the hidesyms directive file as a dependency since it
7211d341caSmrg * may not exist.
7311d341caSmrg */
7411d341caSmrg#ifndef InstallHidesyms
7511d341caSmrg#define InstallHidesyms(libname)					@@\
7611d341caSmrginstall::								@@\
7711d341caSmrg	MakeDir($(DESTDIR)/usr/lib/hidesyms) 				@@\
7811d341caSmrg	@( if [ -f Concat(lib,libname.hs) ]; then \			@@\
7911d341caSmrg	$(INSTALL) $(INSTALLFLAGS) $(INSTDATFLAGS) Concat(lib,libname.hs) $(DESTDIR)/usr/lib/hidesyms; fi; )
8011d341caSmrg#endif /* InstallHidesyms */
8111d341caSmrg
8211d341caSmrg/*
8311d341caSmrg * InstallLibrary - generate rules to install the indicated library.
8411d341caSmrg *
8511d341caSmrg * Sequent includes an extra "install::" target to install hidesyms files
8611d341caSmrg * and an extra "includes::" target to export library hidesyms files.
8711d341caSmrg * Therefore whenever InstallLibrary is expanded the hidesyms targets
8811d341caSmrg * will also be expanded.  This avoids changes to generic cf *.tmpl files.
8911d341caSmrg */
9011d341caSmrg#ifndef InstallLibrary
9111d341caSmrg#define	InstallLibrary(libname,dest)					@@\
9211d341caSmrginstall:: LibraryTargetName(libname)					@@\
9311d341caSmrg	MakeDir($(DESTDIR)dest)						@@\
9411d341caSmrg	$(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) LibraryTargetName(libname) $(DESTDIR)dest @@\
9511d341caSmrg	RanLibrary($(RANLIBINSTFLAGS) $(DESTDIR)dest/LibraryTargetName(libname))	@@\
9611d341caSmrg									@@\
9711d341caSmrgInstallHidesyms(libname)						@@\
9811d341caSmrg									@@\
9911d341caSmrgBuildHidesyms(libname)
10011d341caSmrg#endif /* InstallLibrary */
10111d341caSmrg
10211d341caSmrg/*
10311d341caSmrg * Sequent additions to MakeLibrary for filtering objects
10411d341caSmrg * with hidesyms before making a normal archive library.
10511d341caSmrg */
10611d341caSmrg
10711d341caSmrg#ifndef MakeLibrary
10811d341caSmrg#define MakeLibrary(libname,objlist) ( $(RM) -r tmp_hs ; \		@@\
10911d341caSmrg	LIBNAME_HS=`dirname libname`/`basename libname .a`.hs ; \	@@\
11011d341caSmrg	(if [ -f $$LIBNAME_HS ]; \					@@\
11111d341caSmrg	then \								@@\
11211d341caSmrg	    LIBNAME_AR=../libname; \					@@\
11311d341caSmrg	    $(MKDIRHIER) tmp_hs && \					@@\
11411d341caSmrg	    $(CP) *.o tmp_hs && \					@@\
11511d341caSmrg	    cd tmp_hs && \						@@\
11611d341caSmrg	    $(HSCMD) -i ../$$LIBNAME_HS *.o ; \				@@\
11711d341caSmrg	else \								@@\
11811d341caSmrg	     LIBNAME_AR=libname; \					@@\
11911d341caSmrg	fi; \								@@\
12011d341caSmrg	$(AR) $$LIBNAME_AR objlist ) ;\					@@\
12111d341caSmrg	$(RM) -r tmp_hs )
12211d341caSmrg#endif
12311d341caSmrg
12411d341caSmrg#endif /* UseHidesymsLists */
12511d341caSmrg
12611d341caSmrg/*
12711d341caSmrg * InstallSharedLibrary - generate rules to install the shared library.
12811d341caSmrg */
12911d341caSmrg#ifndef InstallSharedLibrary
13011d341caSmrg# define InstallSharedLibrary(libname,rev,dest)				@@\
13111d341caSmrginstall:: Concat(lib,libname.so.rev) 					@@\
13211d341caSmrg	MakeDir($(DESTDIR)dest)						@@\
13311d341caSmrg	$(INSTALL) $(INSTALLFLAGS) $(INSTSHLIBFLAGS) Concat(lib,libname.so.rev) $(DESTDIR)dest @@\
13411d341caSmrg	$(RM) Concat($(DESTDIR)dest/lib,libname.so)			@@\
13511d341caSmrg	$(LN) Concat(lib,libname.so.rev) Concat($(DESTDIR)dest/lib,libname.so)
13611d341caSmrg#endif /* InstallSharedLibrary */
13711d341caSmrg
13811d341caSmrg/*
13911d341caSmrg * InstallSharedLibraryData - generate rules to install the shared library data
14011d341caSmrg */
14111d341caSmrg#ifndef InstallSharedLibraryData
14211d341caSmrg# define InstallSharedLibraryData(libname,rev,dest)
14311d341caSmrg#endif /* InstallSharedLibraryData */
14411d341caSmrg
14511d341caSmrg#ifndef LinkWithExports
14611d341caSmrg# if UseHidesymsLists
14711d341caSmrg#  define LinkWithExports(libname,rev,solist,down,up) \
14811d341caSmrg	$(RM) -r tmp_hs							@@\
14911d341caSmrg	( if [ -f Concat(lib,libname.hs) ]; \				@@\
15011d341caSmrg	then \								@@\
15111d341caSmrg	    LIBNAME_SO=../$@~; \					@@\
15211d341caSmrg	    mkdir tmp_hs; \						@@\
15311d341caSmrg	    cd down; \							@@\
15411d341caSmrg	    $(CP) *.o up/tmp_hs && \					@@\
15511d341caSmrg	    cd up/tmp_hs && \						@@\
15611d341caSmrg	    $(HSCMD) -i ../Concat(lib,libname.hs) *.o; \		@@\
15711d341caSmrg	else \								@@\
15811d341caSmrg	    LIBNAME_SO=up/$@~; \					@@\
15911d341caSmrg	    cd down; \							@@\
16011d341caSmrg	fi; \								@@\
16111d341caSmrg	$(CCENVSETUP) $(LD) -o $$LIBNAME_SO $(SHLIBLDFLAGS) -h $@ solist $(REQUIREDLIBS) )	@@\
16211d341caSmrg	$(RM) -r tmp_hs
16311d341caSmrg# else
16411d341caSmrg# if UseExportLists
16511d341caSmrg#  define LinkWithExports(libname,rev,solist,down,up) \
16611d341caSmrg	(cd down; $(CCENVSETUP) $(LD) -o up/$@~ $(SHLIBLDFLAGS) -h $@ solist $(REQUIREDLIBS))	@@\
16711d341caSmrg	if [ -f Concat(lib,libname.elist) ]; then \			@@\
16811d341caSmrg	    $(RM) down/$@.exports $@.list; \				@@\
16911d341caSmrg	    $(CPP) $(ALLINCLUDES) $(EXTRA_DEFINES) $(PROTO_DEFINES) $(THREADS_DEFINES) $(DEFINES) Concat(lib,libname.elist) | CppSedMagic >$@.list; \	@@\
17011d341caSmrg	    $(EXPORTLISTGEN) $@~ $@.list > down/$@.exports; \		@@\
17111d341caSmrg	    (cd down; $(CCENVSETUP) $(LD) -o up/$@~ $(SHLIBLDFLAGS) -h $@ ShlibExportListOpt($@.exports) solist $(REQUIREDLIBS)); \	@@\
17211d341caSmrg	    $(RM) down/$@.exports $@.list; \				@@\
17311d341caSmrg	fi;
17411d341caSmrg# else
17511d341caSmrg#  define LinkWithExports(libname,rev,solist,down,up) \
17611d341caSmrg	(cd down; $(CCENVSETUP) $(LD) -o up/$@~ $(SHLIBLDFLAGS) -h $@ solist $(REQUIREDLIBS))
17711d341caSmrg# endif /* UseExportLists */
17811d341caSmrg# endif /* UseHidesymsLists */
17911d341caSmrg#endif
18011d341caSmrg
18111d341caSmrg/*
18211d341caSmrg * SharedLibraryTarget - generate rules to create a shared library;
18311d341caSmrg * build it into a different name so that we do not hose people by having
18411d341caSmrg * the library gone for long periods.
18511d341caSmrg */
18611d341caSmrg#ifndef SharedLibraryTarget
18711d341caSmrg# define SharedLibraryTarget(libname,rev,solist,down,up)		@@\
18811d341caSmrgAllTarget(Concat(lib,libname.so.rev))					@@\
18911d341caSmrg									@@\
19011d341caSmrgConcat(lib,libname.so.rev):  solist $(EXTRALIBRARYDEPS)			@@\
19111d341caSmrg	$(RM) $@~							@@\
19211d341caSmrg	LinkWithExports(libname,rev,solist,down,up)			@@\
19311d341caSmrg	$(RM) $@ 							@@\
19411d341caSmrg	$(MV) $@~ $@							@@\
19511d341caSmrg	$(RM) Concat(lib,libname.so)					@@\
19611d341caSmrg	$(LN) $@ Concat(lib,libname.so)					@@\
19711d341caSmrg	LinkBuildLibrary($@)						@@\
19811d341caSmrg	LinkBuildLibrary(Concat(lib,libname.so))			@@\
19911d341caSmrg									@@\
20011d341caSmrgclean::									@@\
20111d341caSmrg	$(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so)
20211d341caSmrg
20311d341caSmrg#endif /* SharedLibraryTarget */
20411d341caSmrg
20511d341caSmrg/*
20611d341caSmrg * SharedLibraryDataTarget - generate rules to create shlib data file;
20711d341caSmrg */
20811d341caSmrg#ifndef SharedLibraryDataTarget
20911d341caSmrg# define SharedLibraryDataTarget(libname,rev,salist)
21011d341caSmrg#endif /* SharedLibraryTarget */
21111d341caSmrg
21211d341caSmrg/*
21311d341caSmrg * Sequent does not use the InstallManPageAliases rule.
21411d341caSmrg * Sequent customer installation procedure uses makealiases(1M)
21511d341caSmrg * after the initial product manpages are installed in system directories.
21611d341caSmrg */
21711d341caSmrg#define InstallManPageAliases(file,destdir,aliases) /* use makealiases(1M) */
21811d341caSmrg
21911d341caSmrg/*
22011d341caSmrg * Man pages need to be formatted when installed, so override the default
22111d341caSmrg * imake rules.
22211d341caSmrg */
22311d341caSmrg#if defined(UseInstalled)
22411d341caSmrgMANCAT = cat
22511d341caSmrg#else
22611d341caSmrgMANCAT = sed -f $(CONFIGSRC)/util/installman.sed
22711d341caSmrg#endif
22811d341caSmrg
22911d341caSmrg#define InstallManPageLong(file,destdir,dest)				@@\
23011d341caSmrgall:: file.$(MANSUFFIX).z						@@\
23111d341caSmrg									@@\
23211d341caSmrgfile.$(MANSUFFIX).z:: file.man						@@\
23311d341caSmrg	@if [ -f file.man ]; \						@@\
23411d341caSmrg	then \								@@\
23511d341caSmrg	$(MANCAT) file.man | $(NEQN) | \				@@\
23611d341caSmrg	$(TBL) | $(NROFF) $(MANMACROS) | $(COL) > file.$(MANSUFFIX); \	@@\
23711d341caSmrg	$(RM) file.$(MANSUFFIX).z; \					@@\
23811d341caSmrg	$(PACK) -f file.$(MANSUFFIX); \					@@\
23911d341caSmrg	fi 								@@\
24011d341caSmrg									@@\
24111d341caSmrgfile.man::								@@\
24211d341caSmrg									@@\
24311d341caSmrginstall.man::								@@\
24411d341caSmrg	MakeDir($(DESTDIR)destdir)					@@\
24511d341caSmrg	@if [ -f file.$(MANSUFFIX).z ]; \				@@\
24611d341caSmrg	then \								@@\
24711d341caSmrg	$(INSTALL) -c $(INSTMANFLAGS) file.$(MANSUFFIX).z $(DESTDIR)destdir/dest.$(MANSUFFIX).z; \@@\
24811d341caSmrg	fi
24911d341caSmrg
25011d341caSmrg#define InstallMultipleManSuffix(list,dest,suff)			@@\
25111d341caSmrginstall.man::								@@\
25211d341caSmrg	MakeDir($(DESTDIR)dest)						@@\
25311d341caSmrg	MakeFlagsToShellFlags(i,set +e); \				@@\
25411d341caSmrg	@for i in list; do \						@@\
25511d341caSmrg	  (set -x; \							@@\
25611d341caSmrg	$(MANCAT) $$i.suff | $(NEQN) | \				@@\
25711d341caSmrg	$(TBL) | $(NROFF) $(MANMACROS) | $(COL) >/tmp/$$i.suff; \	@@\
25811d341caSmrg	  $(PACK) -f /tmp/$$i.suff; \					@@\
25911d341caSmrg	  $(INSTALL) -c $(INSTMANFLAGS) /tmp/$$i.suff.z $(DESTDIR)dest/$$i.$(MANSUFFIX).z; \	@@\
26011d341caSmrg	  $(RM) /tmp/$$i.suff.z); \					@@\
26111d341caSmrg	done
26211d341caSmrg
26311d341caSmrg#define InstallMultipleMan(list,dest)					@@\
26411d341caSmrg	InstallMultipleManSuffix(list,dest,man)
26511d341caSmrg
2661c80d5b0Smrg/*
26711d341caSmrg * InstallMotifManPage relies on the fact that all the
26811d341caSmrg * Imakefiles where it is used (or Makefile default value)
26911d341caSmrg * will correctly define MANSUFFIX which may be
27011d341caSmrg * either "section" or "section"x.
27111d341caSmrg * Since we rely on MANSUFFIX being defined correctly in each Makefile
27211d341caSmrg * we can also rely on MANDIR = $(MANSOURCEPATH)section
27311d341caSmrg *
27411d341caSmrg * CAUTION:
27511d341caSmrg * The source file "file.section" may have the same name as
27611d341caSmrg * the target file "file.$(MANSUFFIX)" so we must use temporary files
27711d341caSmrg * so that we do not overwrite "file.section".
27811d341caSmrg */
27911d341caSmrg#define InstallMotifManPage(file,section)				@@\
28011d341caSmrgall:: file.$(MANSUFFIX).z						@@\
28111d341caSmrg									@@\
28211d341caSmrgfile.$(MANSUFFIX).z: file.section					@@\
28311d341caSmrg	@$(MANCAT) file.section | $(NEQN) | \				@@\
28411d341caSmrg	$(TBL) | $(NROFF) $(MANMACROS) | $(COL) > /tmp/file.man; \	@@\
28511d341caSmrg	$(RM) /tmp/file.man.z; \					@@\
28611d341caSmrg	$(PACK) -f /tmp/file.man; \					@@\
28711d341caSmrg	$(CP) /tmp/file.man.z file.$(MANSUFFIX).z; \			@@\
28811d341caSmrg	$(RM) /tmp/file.man.z						@@\
28911d341caSmrg									@@\
29011d341caSmrginstall.man:: file.$(MANSUFFIX).z					@@\
29111d341caSmrg	MakeDir($(DESTDIR)$(MANDIR))					@@\
29211d341caSmrg	$(INSTALL) -c $(INSTMANFLAGS) file.$(MANSUFFIX).z $(DESTDIR)$(MANDIR)/file.$(MANSUFFIX).z
29311d341caSmrg
2941c80d5b0Smrg/*
29511d341caSmrg * The Real_MessageCatalogRule defined in Motif.rules does not
29611d341caSmrg * install the generated catalog file.  This rule adds an install
29711d341caSmrg * clause to do that.
29811d341caSmrg */
29911d341caSmrg#define Real_MessageCatalogRule(prefix)					@@\
30011d341caSmrgprefix.cat Concat(prefix,MsgCatI.h):					@@\
30111d341caSmrg	$(RM) Concat(prefix,MsgCatI.h) prefix.cat $(MLOCSRC)/C/msg/prefix.msg	@@\
30211d341caSmrg	$(MKCATTOOL) Concat(prefix,MsgCatI.h) prefix.msg > $(MLOCSRC)/C/msg/prefix.msg	@@\
30311d341caSmrg	$(GENCAT) prefix.cat $(MLOCSRC)/C/msg/prefix.msg		@@\
30411d341caSmrg									@@\
30511d341caSmrgincludes:: prefix.cat Concat(prefix,MsgCatI.h)				@@\
30611d341caSmrg									@@\
30711d341caSmrgdepend:: prefix.cat Concat(prefix,MsgCatI.h)				@@\
30811d341caSmrg									@@\
30911d341caSmrgall:: prefix.cat							@@\
31011d341caSmrg									@@\
31111d341caSmrginstall:: prefix.cat							@@\
31211d341caSmrg	MakeDir($(DESTDIR)$(MESSAGECATDIR))				@@\
31311d341caSmrg	$(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) prefix.cat $(DESTDIR)$(MESSAGECATDIR)/prefix.cat	@@\
31411d341caSmrg	$(RM) $(DESTDIR)$(MESSAGECATDIR)/prefix				@@\
31511d341caSmrg	$(LN) prefix.cat $(DESTDIR)$(MESSAGECATDIR)/prefix		@@\
31611d341caSmrg	MakeDir($(DESTDIR)$(NLSDIR))					@@\
31711d341caSmrg	$(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) prefix.cat $(DESTDIR)$(NLSDIR)/prefix.cat	@@\
31811d341caSmrg	$(RM) $(DESTDIR)$(NLSDIR)/prefix				@@\
31911d341caSmrg	$(LN) prefix.cat $(DESTDIR)$(NLSDIR)/prefix			@@\
32011d341caSmrg									@@\
32111d341caSmrgclean::									@@\
32211d341caSmrg	$(RM) prefix.cat Concat(prefix,MsgCatI.h)
32311d341caSmrg
324