XCOMM IBM_PROLOG_BEGIN_TAG 
XCOMM This is an automatically generated prolog. 
XCOMM  
XCOMM gos720 src/gos/2d/XTOP/config/cf/Library.tmpl 1.1 
XCOMM  
XCOMM Licensed Materials - Property of IBM 
XCOMM  
XCOMM COPYRIGHT International Business Machines Corp. 1996 
XCOMM All Rights Reserved 
XCOMM  
XCOMM US Government Users Restricted Rights - Use, duplication or 
XCOMM disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
XCOMM  
XCOMM IBM_PROLOG_END_TAG 
XCOMM SCCSID_BEGIN_TAG
XCOMM @(#)43  1.1  src/gos/2d/XTOP/config/cf/Library.tmpl, xclients, gos720 7/31/96 14:41:43
XCOMM SCCSID_END_TAG
/*
 * 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