/* $Id: Library.tmpl,v 1.1.1.1 1995/12/20 15:26:40 cernlib Exp $ * * $Log: Library.tmpl,v $ * Revision 1.1.1.1 1995/12/20 15:26:40 cernlib * X11R6 config files unmodified * * */ /* * Library imakefile info - this contains any special redefinitions, etc. * that Imakefiles in the various library subtrees will need. * * Before including this, you must set the following boolean variables: * DoNormalLib, DoSharedLib, DoDebugLib, DoProfileLib * * To get automatic generation of standard rules, also set the variables: * LibName, SoRev, HasSharedData, and optionally HugeLibrary and IncSubdir */ XCOMM $XConsortium: Library.tmpl,v 1.34 95/06/16 17:44:51 gildea Exp $ #ifndef LibraryCplusplusOptions #if DoSharedLib && defined(SharedLibraryCplusplusOptions) #define LibraryCplusplusOptions SharedLibraryCplusplusOptions #else #define LibraryCplusplusOptions DefaultCplusplusOptions #endif #endif #ifndef LibraryDefines #define LibraryDefines StandardDefines #endif #ifndef LibraryCDebugFlags #define LibraryCDebugFlags DefaultCDebugFlags #endif #ifndef LibraryCplusplusDebugFlags #define LibraryCplusplusDebugFlags DefaultCplusplusDebugFlags #endif #ifndef SeparateSharedCompile #define SeparateSharedCompile YES #endif #ifndef CplusplusSource #ifndef LibraryCcCmd #if DoSharedLib && defined(SharedLibraryCcCmd) #define LibraryCcCmd SharedLibraryCcCmd #else #define LibraryCcCmd CcCmd #endif #endif #ifndef LibraryCCOptions #if DoSharedLib && defined(SharedLibraryCCOptions) #define LibraryCCOptions SharedLibraryCCOptions #else #define LibraryCCOptions DefaultCCOptions #endif #endif CC = LibraryCcCmd CCOPTIONS = LibraryCCOptions STD_DEFINES = LibraryDefines CDEBUGFLAGS = LibraryCDebugFlags #else #ifndef LibraryCplusplusCmd #if DoSharedLib && defined(SharedLibraryCplusplusCmd) #define LibraryCplusplusCmd SharedLibraryCplusplusCmd #else #define LibraryCplusplusCmd CplusplusCmd #endif #endif #ifndef LibraryCplusplusOptions #if DoSharedLib && defined(SharedLibraryCplusplusOptions) #define LibraryCplusplusOptions SharedLibraryCplusplusOptions #else #define LibraryCplusplusOptions DefaultCplusplusOptions #endif #endif CXX = LibraryCplusplusCmd CXXOPTIONS = LibraryCplusplusOptions STD_DEFINES = LibraryDefines CXXDEBUGFLAGS = LibraryCplusplusDebugFlags #endif #if DoDebugLib #define _DebuggedLibMkdir() LibMkdir(debugger) #ifndef CplusplusSource #define _DebuggedObjCompile(options) DebuggedLibObjCompile(options) #else #define _DebuggedObjCompile(options) DebuggedLibObjCplusplusCompile(options) #endif #define _DebuggedCleanDir() LibCleanDir(debugger) #else #define _DebuggedLibMkdir() $(_NULLCMD_) #define _DebuggedObjCompile(options) $(_NULLCMD_) #define _DebuggedCleanDir() $(_NULLCMD_) #endif #if DoProfileLib #define _ProfiledLibMkdir() LibMkdir(profiled) #ifndef CplusplusSource #define _ProfiledObjCompile(options) ProfiledLibObjCompile(options) #else #define _ProfiledObjCompile(options) ProfiledLibObjCplusplusCompile(options) #endif #define _ProfiledCleanDir() LibCleanDir(profiled) #else #define _ProfiledLibMkdir() $(_NULLCMD_) #define _ProfiledObjCompile(options) $(_NULLCMD_) #define _ProfiledCleanDir() $(_NULLCMD_) #endif #if !DoNormalLib #define _NormalLibMkdir() $(_NULLCMD_) #define _NormalObjCompile(options) $(_NULLCMD_) #define _NormalCleanDir() $(_NULLCMD_) #else #if DoSharedLib && SeparateSharedCompile #define _NormalLibMkdir() LibMkdir(unshared) #ifndef CplusplusSource #define _NormalObjCompile(options) UnsharedLibObjCompile(options) #else #define _NormalObjCompile(options) UnsharedLibObjCplusplusCompile(options) #endif #define _NormalCleanDir() LibCleanDir(unshared) #else #define _NormalLibMkdir() $(_NULLCMD_) #ifndef CplusplusSource #define _NormalObjCompile(options) NormalLibObjCompile(options) #else #define _NormalObjCompile(options) NormalLibObjCplusplusCompile(options) #endif #define _NormalCleanDir() $(_NULLCMD_) #endif #endif #if !DoSharedLib || (DoNormalLib && !SeparateSharedCompile) #define _SharedObjCompile(options) $(_NULLCMD_) #else #if SeparateSharedCompile #ifndef CplusplusSource #define _SharedObjCompile(options) NormalSharedLibObjCompile(options) #else #define _SharedObjCompile(options) NormalSharedLibObjCplusplusCompile(options) #endif #else #ifndef CplusplusSource #define _SharedObjCompile(options) NormalLibObjCompile(options) #else #define _SharedObjCompile(options) NormalLibObjCplusplusCompile(options) #endif #endif #endif #ifndef CplusplusSource #define SRCsuf c #else #define SRCsuf CCsuf #ifdef SunArchitecture .SUFFIXES: .CCsuf #endif #endif #ifndef LibraryObjectRule #define LibraryObjectRule() @@\ all:: @@\ _DebuggedLibMkdir() @@\ _ProfiledLibMkdir() @@\ _NormalLibMkdir() @@\ @@\ includes:: @@\ _DebuggedLibMkdir() @@\ _ProfiledLibMkdir() @@\ _NormalLibMkdir() @@\ @@\ .SRCsuf.Osuf: @@\ _DebuggedObjCompile($(_NOOP_)) @@\ _ProfiledObjCompile($(_NOOP_)) @@\ _NormalObjCompile($(_NOOP_)) @@\ _SharedObjCompile($(_NOOP_)) @@\ @@\ clean:: @@\ _DebuggedCleanDir() @@\ _ProfiledCleanDir() @@\ _NormalCleanDir() @@\ #endif /* LibraryObjectRule */ #ifndef SpecialLibObjectRule #define SpecialLibObjectRule(objs,depends,options) @@\ objs: depends @@\ _DebuggedObjCompile(options) @@\ _ProfiledObjCompile(options) @@\ _NormalObjCompile(options) @@\ _SharedObjCompile(options) @@\ #endif /* SpecialLibObjectRule */ #ifndef SpecialCLibObjectRule #define SpecialCLibObjectRule(basename,depends,options) @@\ SpecialLibObjectRule(basename.Osuf,basename.SRCsuf depends,options) @@\ @@\ basename.i: basename.SRCsuf depends @@\ CPPOnlyCompile(basename.SRCsuf,options) @@\ @@\ CenterLoadTarget(debug_src,basename.SRCsuf,NullParameter,$(ALLDEFINES) options) #endif /* SpecialCLibObjectRule */ #ifndef SpecialCplusplusLibObjectRule #define SpecialCplusplusLibObjectRule(basename,depends,options) @@\ SpecialLibObjectRule(basename.Osuf,basename.SRCsuf depends,options) @@\ @@\ CenterLoadTarget(debug_src,basename.SRCsuf,NullParameter,$(ALLDEFINES) options) #endif /* SpecialCplusplusLibObjectRule */ /* * ToolkitMakeStrings generates a string-table, i.e., a C source * file and the matching header(s), e.g., Xt's StringDefs.c, StringDefs.h, * and Shell.h files; or Motif's XmStrDefs.c and XmStrDefs.h files. * * The 'files' argument is the list of files that will be produced by * this rule, e.g., for Xt they would be "Shell.h StringDefs.c StringDefs.h" * and for Motif they would be "XmStrDefs.c XmStrDefs.h". * * The 'source' argument is the string-list file to be parsed, e.g., in * Xt that would be "util/string.list". For Motif 2.0 it would be * "../../tools/makestr/xmstring.list", and for Motif-CDE1 it would be * "util/xmstring.list". * * The 'options' argument is passed by the library's Imakefile, see the * Xt Imakefile for an example. Typically this would be nothing, -intelabi, * or -sparcabi; there are other choices, but these are typical. * * The 'depends' argument names additional files the target files * depend on. It should name the #ctmpl and #htmpl files from the * 'source' file. * * The 'dest' argument is the C source output file. For Xt this should * be "StringDefs.c", and for all versions of Motif it would be "XmStrDefs.c" * * Headers are generated and named according to data in the 'source' * file. */ #ifndef ToolkitMakeStrings #define ToolkitMakeStrings(files,source,options,depends,dest) @@\ MAKESTRS = $(CONFIGSRC)/util/makestrs @@\ @@\ $(MAKESTRS): $(MAKESTRS).c @@\ cd $(CONFIGSRC)/util && make makestrs @@\ @@\ files: $(MAKESTRS) source depends @@\ RemoveFiles(files) @@\ RunProgram(MAKESTRS,options < source > dest) @@\ @@\ AllTarget(files) @@\ @@\ includes:: files @@\ @@\ depend:: files #endif /* ToolkitMakeStrings */ #ifdef LibName LIBNAME = LibName LibraryObjectRule() #undef _LinkBuildLibrary #define _LinkBuildLibrary(lib) LinkBuildLibrary(lib) #if DoSharedLib SharedLibraryTarget($(LIBNAME),$(SoRev),$(OBJS),.,.) InstallSharedLibrary($(LIBNAME),$(SoRev),$(SHLIBDIR)) #if HasSharedData SharedLibraryDataTarget($(LIBNAME),$(SoRev),$(UNSHAREDOBJS)) InstallSharedLibraryData($(LIBNAME),$(SoRev),$(SHLIBDIR)) #endif #endif #if DoNormalLib #if HugeLibrary #if DoSharedLib && SeparateSharedCompile UnsharedLibraryTarget3($(LIBNAME),$(OBJS1),$(OBJS2),$(OBJS3),unshared,..) #else NormalLibraryTarget3($(LIBNAME),$(OBJS1),$(OBJS2),$(OBJS3)) #endif #else #if DoSharedLib && SeparateSharedCompile UnsharedLibraryTarget($(LIBNAME),$(OBJS),unshared,..) #else NormalLibraryTarget($(LIBNAME),$(OBJS)) #endif #endif InstallLibrary($(LIBNAME),$(USRLIBDIR)) #endif #if DoProfileLib ProfiledLibraryTarget($(LIBNAME),$(OBJS)) InstallLibrary($(LIBNAME)_p,$(USRLIBDIR)) #endif #if DoDebugLib DebuggedLibraryTarget($(LIBNAME),$(OBJS)) InstallLibrary($(LIBNAME)_d,$(USRLIBDIR)) #endif LintLibraryTarget($(LIBNAME),$(SRCS)) InstallLintLibrary($(LIBNAME),$(LINTLIBDIR)) #ifdef IncSubdir BuildIncludes($(HEADERS),IncSubdir,..) InstallMultipleFlags($(HEADERS),$(INCDIR)/IncSubdir,$(INSTINCFLAGS)) #else #ifndef CplusplusSource #if !defined(LibHeaders) || LibHeaders BuildIncludesTop($(HEADERS)) InstallMultipleFlags($(HEADERS),$(INCDIR),$(INSTINCFLAGS)) #endif #endif #endif NormalLintTarget($(SRCS)) #endif