XCOMM $Xorg: sequentLib.rules,v 1.3 2000/08/17 19:41:48 cpqbld Exp $ /* * SVR4 shared library rules */ #ifndef HasSharedLibraries # define HasSharedLibraries YES #endif #ifndef SharedDataSeparation # define SharedDataSeparation NO #endif #ifndef SharedCodeDef # define SharedCodeDef /**/ #endif #ifndef SharedLibraryDef # define SharedLibraryDef /**/ #endif #ifndef ShLibIncludeFile # define ShLibIncludeFile #endif #ifndef SharedLibraryLoadFlags /* Sequent may need to implement the X11R5 HasMultipleSockets ? */ # if HasMultipleSockets # define SharedLibraryLoadFlags -G -z text $(DEFAULTSOCKETLDOPTIONS) # define ExtraLoadOptions $(DEFAULTSOCKETLDOPTIONS) # else /* # define SharedLibraryLoadFlags -G -z text */ # define SharedLibraryLoadFlags -G # define ExtraLoadOptions # endif #endif #ifndef PositionIndependentCFlags # if HasGcc2 # define PositionIndependentCFlags -fpic # else # define PositionIndependentCFlags -K PIC # endif #endif #ifndef PositionIndependentCplusplusFlags # if HasGcc2ForCplusplus # define PositionIndependentCplusplusFlags -fpic # else # define PositionIndependentCplusplusFlags -K PIC # endif #endif #ifndef UseExportLists # define UseExportLists NO #endif #ifndef UseHidesymsLists # define UseHidesymsLists NO #endif #if UseHidesymsLists #ifndef BuildHidesyms #define BuildHidesyms(libname) @@\ includes:: @@\ MakeDir($(BUILDLIBDIR)/hidesyms) @@\ @( if [ -f Concat(lib,libname.hs) ]; \ @@\ then \ @@\ (set -x; cd $(BUILDLIBDIR)/hidesyms && \ @@\ RemoveFile(Concat(lib,libname.hs)) && \ @@\ $(LN) $(BUILDLIBTOP)/../$(CURRENT_DIR)/Concat(lib,libname.hs) .); \ @@\ fi; ) #endif /* BuildHidesyms */ /* * InstallHidesyms - install library hidesyms directive file. (Sequent only) * Logic cloned from InstallNonExecFile. * We do not list the hidesyms directive file as a dependency since it * may not exist. */ #ifndef InstallHidesyms #define InstallHidesyms(libname) @@\ install:: @@\ MakeDir($(DESTDIR)/usr/lib/hidesyms) @@\ @( if [ -f Concat(lib,libname.hs) ]; then \ @@\ $(INSTALL) $(INSTALLFLAGS) $(INSTDATFLAGS) Concat(lib,libname.hs) $(DESTDIR)/usr/lib/hidesyms; fi; ) #endif /* InstallHidesyms */ /* * InstallLibrary - generate rules to install the indicated library. * * Sequent includes an extra "install::" target to install hidesyms files * and an extra "includes::" target to export library hidesyms files. * Therefore whenever InstallLibrary is expanded the hidesyms targets * will also be expanded. This avoids changes to generic cf *.tmpl files. */ #ifndef InstallLibrary #define InstallLibrary(libname,dest) @@\ install:: LibraryTargetName(libname) @@\ MakeDir($(DESTDIR)dest) @@\ $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) LibraryTargetName(libname) $(DESTDIR)dest @@\ RanLibrary($(RANLIBINSTFLAGS) $(DESTDIR)dest/LibraryTargetName(libname)) @@\ @@\ InstallHidesyms(libname) @@\ @@\ BuildHidesyms(libname) #endif /* InstallLibrary */ /* * Sequent additions to MakeLibrary for filtering objects * with hidesyms before making a normal archive library. */ #ifndef MakeLibrary #define MakeLibrary(libname,objlist) ( $(RM) -r tmp_hs ; \ @@\ LIBNAME_HS=`dirname libname`/`basename libname .a`.hs ; \ @@\ (if [ -f $$LIBNAME_HS ]; \ @@\ then \ @@\ LIBNAME_AR=../libname; \ @@\ $(MKDIRHIER) tmp_hs && \ @@\ $(CP) *.o tmp_hs && \ @@\ cd tmp_hs && \ @@\ $(HSCMD) -i ../$$LIBNAME_HS *.o ; \ @@\ else \ @@\ LIBNAME_AR=libname; \ @@\ fi; \ @@\ $(AR) $$LIBNAME_AR objlist ) ;\ @@\ $(RM) -r tmp_hs ) #endif #endif /* UseHidesymsLists */ /* * InstallSharedLibrary - generate rules to install the shared library. */ #ifndef InstallSharedLibrary # define InstallSharedLibrary(libname,rev,dest) @@\ install:: Concat(lib,libname.so.rev) @@\ MakeDir($(DESTDIR)dest) @@\ $(INSTALL) $(INSTALLFLAGS) $(INSTSHLIBFLAGS) Concat(lib,libname.so.rev) $(DESTDIR)dest @@\ $(RM) Concat($(DESTDIR)dest/lib,libname.so) @@\ $(LN) Concat(lib,libname.so.rev) Concat($(DESTDIR)dest/lib,libname.so) #endif /* InstallSharedLibrary */ /* * InstallSharedLibraryData - generate rules to install the shared library data */ #ifndef InstallSharedLibraryData # define InstallSharedLibraryData(libname,rev,dest) #endif /* InstallSharedLibraryData */ #ifndef LinkWithExports # if UseHidesymsLists # define LinkWithExports(libname,rev,solist,down,up) \ $(RM) -r tmp_hs @@\ ( if [ -f Concat(lib,libname.hs) ]; \ @@\ then \ @@\ LIBNAME_SO=../$@~; \ @@\ mkdir tmp_hs; \ @@\ cd down; \ @@\ $(CP) *.o up/tmp_hs && \ @@\ cd up/tmp_hs && \ @@\ $(HSCMD) -i ../Concat(lib,libname.hs) *.o; \ @@\ else \ @@\ LIBNAME_SO=up/$@~; \ @@\ cd down; \ @@\ fi; \ @@\ $(CCENVSETUP) $(LD) -o $$LIBNAME_SO $(SHLIBLDFLAGS) -h $@ solist $(REQUIREDLIBS) ) @@\ $(RM) -r tmp_hs # else # if UseExportLists # define LinkWithExports(libname,rev,solist,down,up) \ (cd down; $(CCENVSETUP) $(LD) -o up/$@~ $(SHLIBLDFLAGS) -h $@ solist $(REQUIREDLIBS)) @@\ if [ -f Concat(lib,libname.elist) ]; then \ @@\ $(RM) down/$@.exports $@.list; \ @@\ $(CPP) $(ALLINCLUDES) $(EXTRA_DEFINES) $(PROTO_DEFINES) $(THREADS_DEFINES) $(DEFINES) Concat(lib,libname.elist) | CppSedMagic >$@.list; \ @@\ $(EXPORTLISTGEN) $@~ $@.list > down/$@.exports; \ @@\ (cd down; $(CCENVSETUP) $(LD) -o up/$@~ $(SHLIBLDFLAGS) -h $@ ShlibExportListOpt($@.exports) solist $(REQUIREDLIBS)); \ @@\ $(RM) down/$@.exports $@.list; \ @@\ fi; # else # define LinkWithExports(libname,rev,solist,down,up) \ (cd down; $(CCENVSETUP) $(LD) -o up/$@~ $(SHLIBLDFLAGS) -h $@ solist $(REQUIREDLIBS)) # endif /* UseExportLists */ # endif /* UseHidesymsLists */ #endif /* * SharedLibraryTarget - generate rules to create a shared library; * build it into a different name so that we do not hose people by having * the library gone for long periods. */ #ifndef SharedLibraryTarget # define SharedLibraryTarget(libname,rev,solist,down,up) @@\ AllTarget(Concat(lib,libname.so.rev)) @@\ @@\ Concat(lib,libname.so.rev): solist $(EXTRALIBRARYDEPS) @@\ $(RM) $@~ @@\ LinkWithExports(libname,rev,solist,down,up) @@\ $(RM) $@ @@\ $(MV) $@~ $@ @@\ $(RM) Concat(lib,libname.so) @@\ $(LN) $@ Concat(lib,libname.so) @@\ LinkBuildLibrary($@) @@\ LinkBuildLibrary(Concat(lib,libname.so)) @@\ @@\ clean:: @@\ $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so) #endif /* SharedLibraryTarget */ /* * SharedLibraryDataTarget - generate rules to create shlib data file; */ #ifndef SharedLibraryDataTarget # define SharedLibraryDataTarget(libname,rev,salist) #endif /* SharedLibraryTarget */ /* * Sequent does not use the InstallManPageAliases rule. * Sequent customer installation procedure uses makealiases(1M) * after the initial product manpages are installed in system directories. */ #define InstallManPageAliases(file,destdir,aliases) /* use makealiases(1M) */ /* * Man pages need to be formatted when installed, so override the default * imake rules. */ #if defined(UseInstalled) MANCAT = cat #else MANCAT = sed -f $(CONFIGSRC)/util/installman.sed #endif #define InstallManPageLong(file,destdir,dest) @@\ all:: file.$(MANSUFFIX).z @@\ @@\ file.$(MANSUFFIX).z:: file.man @@\ @if [ -f file.man ]; \ @@\ then \ @@\ $(MANCAT) file.man | $(NEQN) | \ @@\ $(TBL) | $(NROFF) $(MANMACROS) | $(COL) > file.$(MANSUFFIX); \ @@\ $(RM) file.$(MANSUFFIX).z; \ @@\ $(PACK) -f file.$(MANSUFFIX); \ @@\ fi @@\ @@\ file.man:: @@\ @@\ install.man:: @@\ MakeDir($(DESTDIR)destdir) @@\ @if [ -f file.$(MANSUFFIX).z ]; \ @@\ then \ @@\ $(INSTALL) -c $(INSTMANFLAGS) file.$(MANSUFFIX).z $(DESTDIR)destdir/dest.$(MANSUFFIX).z; \@@\ fi #define InstallMultipleManSuffix(list,dest,suff) @@\ install.man:: @@\ MakeDir($(DESTDIR)dest) @@\ MakeFlagsToShellFlags(i,set +e); \ @@\ @for i in list; do \ @@\ (set -x; \ @@\ $(MANCAT) $$i.suff | $(NEQN) | \ @@\ $(TBL) | $(NROFF) $(MANMACROS) | $(COL) >/tmp/$$i.suff; \ @@\ $(PACK) -f /tmp/$$i.suff; \ @@\ $(INSTALL) -c $(INSTMANFLAGS) /tmp/$$i.suff.z $(DESTDIR)dest/$$i.$(MANSUFFIX).z; \ @@\ $(RM) /tmp/$$i.suff.z); \ @@\ done #define InstallMultipleMan(list,dest) @@\ InstallMultipleManSuffix(list,dest,man) /* * InstallMotifManPage relies on the fact that all the * Imakefiles where it is used (or Makefile default value) * will correctly define MANSUFFIX which may be * either "section" or "section"x. * Since we rely on MANSUFFIX being defined correctly in each Makefile * we can also rely on MANDIR = $(MANSOURCEPATH)section * * CAUTION: * The source file "file.section" may have the same name as * the target file "file.$(MANSUFFIX)" so we must use temporary files * so that we do not overwrite "file.section". */ #define InstallMotifManPage(file,section) @@\ all:: file.$(MANSUFFIX).z @@\ @@\ file.$(MANSUFFIX).z: file.section @@\ @$(MANCAT) file.section | $(NEQN) | \ @@\ $(TBL) | $(NROFF) $(MANMACROS) | $(COL) > /tmp/file.man; \ @@\ $(RM) /tmp/file.man.z; \ @@\ $(PACK) -f /tmp/file.man; \ @@\ $(CP) /tmp/file.man.z file.$(MANSUFFIX).z; \ @@\ $(RM) /tmp/file.man.z @@\ @@\ install.man:: file.$(MANSUFFIX).z @@\ MakeDir($(DESTDIR)$(MANDIR)) @@\ $(INSTALL) -c $(INSTMANFLAGS) file.$(MANSUFFIX).z $(DESTDIR)$(MANDIR)/file.$(MANSUFFIX).z /* * The Real_MessageCatalogRule defined in Motif.rules does not * install the generated catalog file. This rule adds an install * clause to do that. */ #define Real_MessageCatalogRule(prefix) @@\ prefix.cat Concat(prefix,MsgCatI.h): @@\ $(RM) Concat(prefix,MsgCatI.h) prefix.cat $(MLOCSRC)/C/msg/prefix.msg @@\ $(MKCATTOOL) Concat(prefix,MsgCatI.h) prefix.msg > $(MLOCSRC)/C/msg/prefix.msg @@\ $(GENCAT) prefix.cat $(MLOCSRC)/C/msg/prefix.msg @@\ @@\ includes:: prefix.cat Concat(prefix,MsgCatI.h) @@\ @@\ depend:: prefix.cat Concat(prefix,MsgCatI.h) @@\ @@\ all:: prefix.cat @@\ @@\ install:: prefix.cat @@\ MakeDir($(DESTDIR)$(MESSAGECATDIR)) @@\ $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) prefix.cat $(DESTDIR)$(MESSAGECATDIR)/prefix.cat @@\ $(RM) $(DESTDIR)$(MESSAGECATDIR)/prefix @@\ $(LN) prefix.cat $(DESTDIR)$(MESSAGECATDIR)/prefix @@\ MakeDir($(DESTDIR)$(NLSDIR)) @@\ $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) prefix.cat $(DESTDIR)$(NLSDIR)/prefix.cat @@\ $(RM) $(DESTDIR)$(NLSDIR)/prefix @@\ $(LN) prefix.cat $(DESTDIR)$(NLSDIR)/prefix @@\ @@\ clean:: @@\ $(RM) prefix.cat Concat(prefix,MsgCatI.h)