home *** CD-ROM | disk | FTP | other *** search
- /*
- * 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 /main/36 1995/12/05 16:41:16 mor $
-
- #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.
- */
- /*
- * The NoCmpScript
- * prevents clearmake from trying to remake makestrs if it exists.
- * Including both $(MAKESTRS) and $(MAKESTRS).o as primary targets
- * prevents clearmake from trying to recompile makestrs from here.
- * We have includes, not files, depend on makestrs to try to get
- * clearmake to wink in the files. Bug in clearmake 2.0.2?
- */
-
- #ifndef ToolkitMakeStrings
- #define ToolkitMakeStrings(files,source,options,depends,dest) @@\
- MAKESTRS = $(CONFIGSRC)/util/makestrs @@\
- NoCmpScript(ProgramTargetName($(MAKESTRS)) $(MAKESTRS).Osuf) @@\
- @@\
- ProgramTargetName($(MAKESTRS)) $(MAKESTRS).Osuf: @@\
- cd $(CONFIGSRC)/util && $(MAKE) ProgramTargetName(makestrs) @@\
- @@\
- includes:: ProgramTargetName($(MAKESTRS)) @@\
- @@\
- files: source depends @@\
- RemoveFiles(files) @@\
- RunProgram(MAKESTRS,options < source > dest) @@\
- @@\
- AllTarget(files) @@\
- @@\
- includes:: files @@\
- @@\
- depend:: files @@\
- @@\
- clean:: @@\
- RemoveFiles(files)
-
- #endif /* ToolkitMakeStrings */
-
- #ifdef LibName
-
- LIBNAME = LibName
-
- LibraryObjectRule()
-
- #undef _LinkBuildLibrary
- #define _LinkBuildLibrary(lib) LinkBuildLibrary(lib)
-
- #if DoSharedLib
- #if HugeLibrary && defined(SharedLibraryTarget3)
- SharedLibraryTarget3($(LIBNAME),$(SoRev),$(OBJS1),$(OBJS2),$(OBJS3),.,.)
- #else
- SharedLibraryTarget($(LIBNAME),$(SoRev),$(OBJS),.,.)
- #endif
- 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
-