Edit

IABSD.fr/xenocara/util/cf/sequentLib.rules

Branch :

  • Show log

    Commit

  • Author : matthieu
    Date : 2006-11-25 16:15:45
    Hash : 782466d3
    Message : import from X.Org 7.2RC2

  • util/cf/sequentLib.rules
  • 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 <sequentLib.tmpl>
    #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)