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.
- *
- * To suppress installation of the library define LibInstall NO.
- * To suppress creating (and installing) the library define LibCreate NO.
- * To suppress installing headers define LibHeaders NO.
- * Define LargePICTable YES if large (32-bit) PIC tables are needed.
- */
-
- XCOMM $TOG: Library.tmpl /main/44 1997/04/28 11:47:53 kaleb $
-
-
-
-
- XCOMM $XFree86: xc/config/cf/Library.tmpl,v 3.5.2.3 1998/11/06 23:14:02 dawes 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 $(PROJECT_DEFINES)
- CDEBUGFLAGS = LibraryCDebugFlags
- # if defined(LargePICTable) && LargePICTable && defined(LargePositionIndependentCFlags)
- PICFLAGS = LargePositionIndependentCFlags
- # endif
- #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 $(PROJECT_DEFINES)
- CXXDEBUGFLAGS = LibraryCplusplusDebugFlags
- # if defined(LargePICTable) && LargePICTable
- # ifdef LargePositionIndependentCplusplusFlags
- CXXPICFLAGS = LargePositionIndependentCplusplusFlags
- # elif defined(LargePositionIndependentCFlags)
- CXXPICFLAGS = LargePositionIndependentCFlags
- # endif
- # endif
- #endif
-
- LIB_MT_DEFINES = LibraryMTDefines
-
- #if defined(IHaveSubdirs) && HasSymLinks
- #define _LibMkdir LibMkdirLinkSubdirs
- #else
- #define _LibMkdir LibMkdir
- #endif
-
- #if DoDebugLib
- # define _DebuggedLibMkdir() _LibMkdir(debugger)
- # define _DebuggedObjCompile(options) DebuggedLibObjCompile(options)
- # define _DebuggedObjCplusplusCompile(options) DebuggedLibObjCplusplusCompile(options)
- # define _DebuggedCleanDir() LibCleanDir(debugger)
- #else
- # define _DebuggedLibMkdir() $(_NULLCMD_)
- # define _DebuggedObjCompile(options) $(_NULLCMD_)
- # define _DebuggedObjCplusplusCompile(options) $(_NULLCMD_)
- # define _DebuggedCleanDir() $(_NULLCMD_)
- #endif
-
- #if DoProfileLib
- # define _ProfiledLibMkdir() _LibMkdir(profiled)
- # define _ProfiledObjCompile(options) ProfiledLibObjCompile(options)
- # define _ProfiledObjCplusplusCompile(options) ProfiledLibObjCplusplusCompile(options)
- # define _ProfiledCleanDir() LibCleanDir(profiled)
- #else
- # define _ProfiledLibMkdir() $(_NULLCMD_)
- # define _ProfiledObjCompile(options) $(_NULLCMD_)
- # define _ProfiledObjCplusplusCompile(options) $(_NULLCMD_)
- # define _ProfiledCleanDir() $(_NULLCMD_)
- #endif
-
- #if !DoNormalLib
- # define _NormalLibMkdir() $(_NULLCMD_)
- # define _NormalObjCompile(options) $(_NULLCMD_)
- # define _NormalObjCplusplusCompile(options) $(_NULLCMD_)
- # define _NormalCleanDir() $(_NULLCMD_)
- #else
- # if DoSharedLib && SeparateSharedCompile
- # define _NormalLibMkdir() _LibMkdir(unshared)
- # define _NormalObjCompile(options) UnsharedLibObjCompile(options)
- # define _NormalObjCplusplusCompile(options) UnsharedLibObjCplusplusCompile(options)
- # define _NormalCleanDir() LibCleanDir(unshared)
- # else
- # define _NormalLibMkdir() $(_NULLCMD_)
- # define _NormalObjCompile(options) NormalLibObjCompile(options)
- # define _NormalObjCplusplusCompile(options) NormalLibObjCplusplusCompile(options)
- # define _NormalCleanDir() $(_NULLCMD_)
- # endif
- #endif
-
- #if !DoSharedLib || (DoNormalLib && !SeparateSharedCompile)
- # define _SharedObjCompile(options) $(_NULLCMD_)
- # define _SharedObjCplusplusCompile(options) $(_NULLCMD_)
- #else
- # if SeparateSharedCompile
- # define _SharedObjCompile(options) NormalSharedLibObjCompile(options)
- # define _SharedObjCplusplusCompile(options) NormalSharedLibObjCplusplusCompile(options)
- #else
- # define _SharedObjCompile(options) NormalLibObjCompile(options)
- # define _SharedObjCplusplusCompile(options) NormalLibObjCplusplusCompile(options)
- #endif
- #endif
-
- #ifndef DoExtraLib
- #define DoExtraLib NO
- #endif
-
- #if DoExtraLib && defined(ExtraLibRules)
- # define _ExtraLibMkdir() ExtraLibMkdir()
- # define _ExtraObjCompile(options) ExtraObjCompile(options)
- # define _ExtraObjCplusplusCompile(options) ExtraObjCplusplusCompile(options)
- # define _ExtraCleanDir() ExtraCleanDir()
- #else
- # define _ExtraLibMkdir() $(_NULLCMD_)
- # define _ExtraObjCompile(options) $(_NULLCMD_)
- # define _ExtraObjCplusplusCompile(options) $(_NULLCMD_)
- # define _ExtraCleanDir() $(_NULLCMD_)
- #endif
-
- #ifndef CplusplusSource
- # define SRCsuf c
- #else
- # define SRCsuf CCsuf
- # ifdef SunArchitecture
- .SUFFIXES: .CCsuf
- # endif
- #endif
-
- #define _CompileObj(target, options) @@\
- target @@\
- _DebuggedObjCompile(options) @@\
- _ProfiledObjCompile(options) @@\
- _NormalObjCompile(options) @@\
- _ExtraObjCompile(options) @@\
- _SharedObjCompile(options)
-
- #ifdef CplusplusSource
- # define _CompileObjCplusplus(target, options) @@\
- target @@\
- _DebuggedObjCplusplusCompile(options) @@\
- _ProfiledObjCplusplusCompile(options) @@\
- _NormalObjCplusplusCompile(options) @@\
- _ExtraObjCplusplusCompile(options) @@\
- _SharedObjCplusplusCompile(options)
- #else
- # define _CompileObjCplusplus(target, options)
- #endif
-
- #ifndef LibraryObjectRule
- # define LibraryObjectRule() @@\
- all:: @@\
- _DebuggedLibMkdir() @@\
- _ProfiledLibMkdir() @@\
- _NormalLibMkdir() @@\
- _ExtraLibMkdir() @@\
- @@\
- includes:: @@\
- _DebuggedLibMkdir() @@\
- _ProfiledLibMkdir() @@\
- _NormalLibMkdir() @@\
- _ExtraLibMkdir() @@\
- @@\
- _CompileObj(.c.Osuf:,$(_NOOP_)) @@\
- _CompileObjCplusplus(.SRCsuf.Osuf:,$(_NOOP_)) @@\
- @@\
- clean:: @@\
- _DebuggedCleanDir() @@\
- _ProfiledCleanDir() @@\
- _NormalCleanDir() @@\
- _ExtraCleanDir() @@\
-
- #endif /* LibraryObjectRule */
-
- #ifndef SpecialLibObjectRule
- # define SpecialLibObjectRule(objs,depends,options) @@\
- _CompileObj(objs: depends,options)
- #endif /* SpecialLibObjectRule */
-
- #ifndef SpecialCLibObjectRule
- # define SpecialCLibObjectRule(basename,depends,options) @@\
- _CompileObj(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) @@\
- _CompileObjCplusplus(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 MakeStringsDependency
- # define MakeStringsDependency @@\
- MAKESTRS = $(CONFIGSRC)/util/makestrs @@\
- NoCmpScript(ProgramTargetName($(MAKESTRS)) $(MAKESTRS).Osuf) @@\
- @@\
- ProgramTargetName($(MAKESTRS)) $(MAKESTRS).Osuf: @@\
- cd $(CONFIGSRC)/util && $(MAKE) ProgramTargetName(makestrs) @@\
- @@\
- includes:: ProgramTargetName($(MAKESTRS))
- #endif
- #ifndef ToolkitMakeStrings
- # if defined(LibTookitMakeStringsDependency) && LibTookitMakeStringsDependency
- # define ToolkitMakeStrings(files,source,options,depends,dest) @@\
- files: source depends @@\
- RemoveFiles(files) @@\
- RunProgram(MAKESTRS,options < source > dest) @@\
- @@\
- AllTarget(files) @@\
- @@\
- includes:: files @@\
- @@\
- depend:: files @@\
- @@\
- clean:: @@\
- RemoveFiles(files)
- # else
- # define ToolkitMakeStrings(files,source,options,depends,dest) @@\
- MakeStringsDependency @@\
- @@\
- files: source depends @@\
- RemoveFiles(files) @@\
- RunProgram(MAKESTRS,options < source > dest) @@\
- @@\
- AllTarget(files) @@\
- @@\
- includes:: files @@\
- @@\
- depend:: files @@\
- @@\
- clean:: @@\
- RemoveFiles(files)
- # endif
- #endif /* ToolkitMakeStrings */
-
- #ifdef LibName
-
- LIBNAME = LibName
-
- # if defined(LibTookitMakeStringsDependency) && LibTookitMakeStringsDependency
- /*
- * Do ToolkitMakeStrings() before BuildIncludes so makestrs is still
- * built first, even if the generated header will be installed.
- */
- MakeStringsDependency
- # endif
-
- LibraryObjectRule()
-
- # undef _LinkBuildLibrary
- # if !defined(LibInstall) || LibInstall
- # define _LinkBuildLibrary(lib) LinkBuildLibrary(lib)
- # else
- # define _LinkBuildLibrary(lib) $(_NULLCMD_)
- # endif
-
- # if !defined(LibCreate) || LibCreate
- # if DoSharedLib
- # if HugeLibrary && defined(SharedLibraryTarget3)
- SharedLibraryTarget3($(LIBNAME),$(SoRev),$(OBJS1),$(OBJS2),$(OBJS3),.,.)
- # else
- SharedLibraryTarget($(LIBNAME),$(SoRev),$(OBJS),.,.)
- # endif
- # if !defined(LibInstall) || LibInstall
- InstallSharedLibrary($(LIBNAME),$(SoRev),$(SHLIBDIR))
- # endif
- # if HasSharedData
- SharedLibraryDataTarget($(LIBNAME),$(SoRev),$(UNSHAREDOBJS))
- # if !defined(LibInstall) || LibInstall
- InstallSharedLibraryData($(LIBNAME),$(SoRev),$(SHLIBDIR))
- # endif
- # 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
- # if !defined(LibInstall) || LibInstall
- InstallLibrary($(LIBNAME),$(USRLIBDIR))
- # endif
- # endif
- # if DoProfileLib
- ProfiledLibraryTarget($(LIBNAME),$(OBJS))
- # if !defined(LibInstall) || LibInstall
- InstallLibrary($(LIBNAME)_p,$(USRLIBDIR))
- # endif
- # endif
- # if DoDebugLib
- DebuggedLibraryTarget($(LIBNAME),$(OBJS))
- # if !defined(LibInstall) || LibInstall
- InstallLibrary($(LIBNAME)_d,$(USRLIBDIR))
- # endif
- # endif
- # if DoExtraLib && defined(ExtraLibRules)
- ExtraLibraryTarget($(LIBNAME),$(SoRev),$(OBJS))
- # if !defined(LibInstall) || LibInstall
- ExtraInstallLibrary($(LIBNAME),$(SoRev))
- # endif
- # endif
-
- LintLibraryTarget($(LIBNAME),$(SRCS))
- # if !defined(LibInstall) || LibInstall
- InstallLintLibrary($(LIBNAME),$(LINTLIBDIR))
- # endif
- # else /* not LibCreate */
- # if HugeLibrary
- AllTarget($(OBJS1))
- AllTarget($(OBJS2))
- AllTarget($(OBJS3))
- # else
- AllTarget($(OBJS))
- # endif
- # endif /* LibCreate */
- # ifdef IncSubdir
- # ifdef IncSubSubdir
- BuildIncludes($(HEADERS),IncSubdir/IncSubSubdir,../..)
- InstallMultipleFlags($(HEADERS),$(INCDIR)/IncSubdir/IncSubSubdir,$(INSTINCFLAGS))
- # else
- BuildIncludes($(HEADERS),IncSubdir,..)
- InstallMultipleFlags($(HEADERS),$(INCDIR)/IncSubdir,$(INSTINCFLAGS))
- # endif
- # else
- # ifndef CplusplusSource
- # if !defined(LibHeaders) || LibHeaders
- BuildIncludesTop($(HEADERS))
- InstallMultipleFlags($(HEADERS),$(INCDIR),$(INSTINCFLAGS))
- # endif
- # endif
- # endif
-
- NormalLintTarget($(SRCS))
- #endif /* defined(LibName) */
-