111d341caSmrg/*
211d341caSmrg * Library imakefile info  - this contains any special redefinitions, etc.
311d341caSmrg * that Imakefiles in the various library subtrees will need.
411d341caSmrg *
511d341caSmrg * Before including this, you must set the following boolean variables:
611d341caSmrg * DoNormalLib, DoSharedLib, DoDebugLib, DoProfileLib
711d341caSmrg *
811d341caSmrg * To get automatic generation of standard rules, also set the variables:
911d341caSmrg * LibName, SoRev, HasSharedData, and optionally HugeLibrary and IncSubdir.
1011d341caSmrg *
1111d341caSmrg * To suppress installation of the library define LibInstall NO.
1211d341caSmrg * To suppress creating (and installing) the library define LibCreate NO.
1311d341caSmrg * To suppress installing headers define LibHeaders NO.
1411d341caSmrg * Define LargePICTable YES if large (32-bit) PIC tables are needed.
1511d341caSmrg */
1611d341caSmrg
1711d341caSmrgXCOMM $Xorg: Library.tmpl,v 1.3 2000/08/17 19:41:46 cpqbld Exp $
1811d341caSmrg
1911d341caSmrg
2011d341caSmrg
2111d341caSmrg
2211d341caSmrgXCOMM $XFree86: xc/config/cf/Library.tmpl,v 3.23tsi Exp $
2311d341caSmrg
2411d341caSmrg#ifndef DoNormalLib
2511d341caSmrg#define DoNormalLib NO
2611d341caSmrg#endif
2711d341caSmrg#ifndef DoSharedLib
2811d341caSmrg#define DoSharedLib NO
2911d341caSmrg#endif
3011d341caSmrg#ifndef DoDebugLib
3111d341caSmrg#define DoDebugLib NO
3211d341caSmrg#endif
3311d341caSmrg#ifndef DoProfileLib
3411d341caSmrg#define DoProfileLib NO
3511d341caSmrg#endif
3611d341caSmrg#ifndef DoExtraLib
3711d341caSmrg#define DoExtraLib NO
3811d341caSmrg#endif
3911d341caSmrg
4011d341caSmrg#ifndef HasSharedData
4111d341caSmrg#define HasSharedData NO
4211d341caSmrg#endif
4311d341caSmrg#ifndef HugeLibrary
4411d341caSmrg#define HugeLibrary NO
4511d341caSmrg#endif
4611d341caSmrg
4711d341caSmrg#ifndef ShlibBindGlobals
4811d341caSmrg#define ShlibBindGlobals NO
4911d341caSmrg#endif
5011d341caSmrg
5111d341caSmrg#if ShlibBindGlobals && defined(ShlibGlobalsFlags)
5211d341caSmrgSHLIBGLOBALSFLAGS = ShlibGlobalsFlags
5311d341caSmrg#endif
5411d341caSmrg
5511d341caSmrg#ifndef LibraryCplusplusOptions
5611d341caSmrg# if DoSharedLib && defined(SharedLibraryCplusplusOptions)
5711d341caSmrg#  define LibraryCplusplusOptions SharedLibraryCplusplusOptions
5811d341caSmrg# else
5911d341caSmrg#  define LibraryCplusplusOptions DefaultCplusplusOptions
6011d341caSmrg# endif
6111d341caSmrg#endif
6211d341caSmrg#ifndef LibraryDefines
6311d341caSmrg# define LibraryDefines StandardDefines
6411d341caSmrg#endif
6511d341caSmrg#ifndef LibraryDebugOpt
6611d341caSmrg# define LibraryDebugOpt /**/
6711d341caSmrg#endif
6811d341caSmrg/* Note: Changing LibraryCDebugFlags has no effect because CDEBUGFLAGS is over-
6911d341caSmrg   ridden by PassCDebugFlags in the parent Makefile or toplevel xmakefile. */
7011d341caSmrg#ifndef LibraryCDebugFlags
7111d341caSmrg# define LibraryCDebugFlags DefaultCDebugFlags
7211d341caSmrg#endif
7311d341caSmrg#ifndef LibraryCplusplusDebugFlags
7411d341caSmrg# define LibraryCplusplusDebugFlags DefaultCplusplusDebugFlags
7511d341caSmrg#endif
7611d341caSmrg#ifndef SeparateSharedCompile
7711d341caSmrg# define SeparateSharedCompile YES
7811d341caSmrg#endif
7911d341caSmrg
8011d341caSmrg#ifdef CrossCompileDir
8111d341caSmrg# ifndef StripPath
8211d341caSmrg#  define StripPath(x) `echo x|sed "s%.*/%%"`
8311d341caSmrg# endif
8411d341caSmrg#endif
8511d341caSmrg
8611d341caSmrg#ifndef CplusplusSource
8711d341caSmrg# ifndef LibraryCcCmd
8811d341caSmrg#  if DoSharedLib && defined(SharedLibraryCcCmd)
8911d341caSmrg#   define LibraryCcCmd SharedLibraryCcCmd
9011d341caSmrg#  else
9111d341caSmrg#   define LibraryCcCmd CcCmd
9211d341caSmrg#  endif
9311d341caSmrg# endif
9411d341caSmrg# ifndef LibraryCCOptions
9511d341caSmrg#  if DoSharedLib && defined(SharedLibraryCCOptions)
9611d341caSmrg#   define LibraryCCOptions SharedLibraryCCOptions
9711d341caSmrg#  else
9811d341caSmrg#   define LibraryCCOptions DefaultCCOptions
9911d341caSmrg#  endif
10011d341caSmrg# endif
10111d341caSmrg
10211d341caSmrg#ifdef CrossCompileDir
10311d341caSmrg# ifndef CrossLibraryCcCmd
10411d341caSmrg#  define CrossLibraryCcCmd Concat3(CrossCompileDir,/,StripPath(LibraryCcCmd))
10511d341caSmrg# endif
10611d341caSmrg#endif
10711d341caSmrg
10811d341caSmrg#ifdef CrossCompileDir
10911d341caSmrg         CC = CrossLibraryCcCmd
11011d341caSmrg#else
11111d341caSmrg         CC = LibraryCcCmd
11211d341caSmrg#endif
11311d341caSmrg  CCOPTIONS = LibraryCCOptions
11411d341caSmrgSTD_DEFINES = LibraryDefines $(PROJECT_DEFINES)
11511d341caSmrgCDEBUGFLAGS = LibraryCDebugFlags
11611d341caSmrgCLIBDEBUGFLAGS = LibraryDebugOpt
11711d341caSmrg     CFLAGS = $(CDEBUGFLAGS) $(CLIBDEBUGFLAGS) $(CCOPTIONS) $(THREADS_CFLAGS) $(ALLDEFINES)
11811d341caSmrg# if defined(LargePICTable) && LargePICTable && defined(LargePositionIndependentCFlags)
11911d341caSmrg   PICFLAGS = LargePositionIndependentCFlags
12011d341caSmrg# endif
12111d341caSmrg#else
12211d341caSmrg# ifndef CrossCompileDir
12311d341caSmrg#  ifndef LibraryCplusplusCmd
12411d341caSmrg#   if DoSharedLib && defined(SharedLibraryCplusplusCmd)
12511d341caSmrg#    define LibraryCplusplusCmd SharedLibraryCplusplusCmd
12611d341caSmrg#   else
12711d341caSmrg#    define LibraryCplusplusCmd CplusplusCmd
12811d341caSmrg#   endif
12911d341caSmrg#  endif
13011d341caSmrg# else
13111d341caSmrg#  ifndef CrossLibraryCplusplusCmd
13211d341caSmrg#   if DoSharedLib && defined(SharedLibraryCplusplusCmd)
13311d341caSmrg#    define CrossLibraryCplusplusCmd Concat3(CrossCompileDir,/,StripPath(SharedLibraryCplusplusCmd))
13411d341caSmrg#   else
13511d341caSmrg#    define CrossLibraryCplusplusCmd Concat3(CrossCompileDir,/,StripPath(CplusplusCmd))
13611d341caSmrg#   endif
13711d341caSmrg#  endif
13811d341caSmrg# endif
13911d341caSmrg
14011d341caSmrg# ifndef LibraryCplusplusOptions
14111d341caSmrg#  if DoSharedLib && defined(SharedLibraryCplusplusOptions)
14211d341caSmrg#   define LibraryCplusplusOptions SharedLibraryCplusplusOptions
14311d341caSmrg#  else
14411d341caSmrg#   define LibraryCplusplusOptions DefaultCplusplusOptions
14511d341caSmrg#  endif
14611d341caSmrg# endif
14711d341caSmrg
14811d341caSmrg#ifdef CrossCompileDir
14911d341caSmrg          CXX = CrossLibraryCplusplusCmd
15011d341caSmrg#else
15111d341caSmrg          CXX = LibraryCplusplusCmd
15211d341caSmrg#endif
15311d341caSmrg   CXXOPTIONS = LibraryCplusplusOptions
15411d341caSmrg  STD_DEFINES = LibraryDefines $(PROJECT_DEFINES)
15511d341caSmrgCXXDEBUGFLAGS = LibraryCplusplusDebugFlags
15611d341caSmrgCXXLIBDEBUGFLAGS = LibraryDebugOpt
15711d341caSmrg     CXXFLAGS = $(CXXDEBUGFLAGS) $(CXXLIBDEBUGFLAGS) $(CXXOPTIONS) $(THREADS_CXXFLAGS) $(CXXDEFINES)
15811d341caSmrg# if defined(LargePICTable) && LargePICTable
15911d341caSmrg#  ifdef LargePositionIndependentCplusplusFlags
16011d341caSmrg  CXXPICFLAGS = LargePositionIndependentCplusplusFlags
16111d341caSmrg#  elif defined(LargePositionIndependentCFlags)
16211d341caSmrg  CXXPICFLAGS = LargePositionIndependentCFlags
16311d341caSmrg#  endif
16411d341caSmrg# endif
16511d341caSmrg#endif
16611d341caSmrg
16711d341caSmrg#ifdef LibraryMTDefines
16811d341caSmrgLIB_MT_DEFINES = LibraryMTDefines
16911d341caSmrg#endif
17011d341caSmrg
17111d341caSmrg#if defined(IHaveSubdirs) && HasSymLinks && !defined(NoLibSubdirs)
17211d341caSmrg#define _LibMkdir LibMkdirLinkSubdirs
17311d341caSmrg#else
17411d341caSmrg#define _LibMkdir LibMkdir
17511d341caSmrg#endif
17611d341caSmrg
17711d341caSmrg#if DoDebugLib
17811d341caSmrg# define _DebuggedLibMkdir() _LibMkdir(debugger)
17911d341caSmrg# define _DebuggedObjCompile(options) DebuggedLibObjCompile(options)
18011d341caSmrg# define _DebuggedObjCplusplusCompile(options) DebuggedLibObjCplusplusCompile(options)
18111d341caSmrg# define _DebuggedCleanDir() LibCleanDir(debugger)
18211d341caSmrg#else
18311d341caSmrg# define _DebuggedLibMkdir() $(_NULLCMD_)
18411d341caSmrg# define _DebuggedObjCompile(options) $(_NULLCMD_)
18511d341caSmrg# define _DebuggedObjCplusplusCompile(options) $(_NULLCMD_)
18611d341caSmrg# define _DebuggedCleanDir() $(_NULLCMD_)
18711d341caSmrg#endif
18811d341caSmrg
18911d341caSmrg#if DoProfileLib
19011d341caSmrg# define _ProfiledLibMkdir() _LibMkdir(profiled)
19111d341caSmrg# define _ProfiledObjCompile(options) ProfiledLibObjCompile(options)
19211d341caSmrg# define _ProfiledObjCplusplusCompile(options) ProfiledLibObjCplusplusCompile(options)
19311d341caSmrg# define _ProfiledCleanDir() LibCleanDir(profiled)
19411d341caSmrg#else
19511d341caSmrg# define _ProfiledLibMkdir() $(_NULLCMD_)
19611d341caSmrg# define _ProfiledObjCompile(options) $(_NULLCMD_)
19711d341caSmrg# define _ProfiledObjCplusplusCompile(options) $(_NULLCMD_)
19811d341caSmrg# define _ProfiledCleanDir() $(_NULLCMD_)
19911d341caSmrg#endif
20011d341caSmrg
20111d341caSmrg#if !DoNormalLib
20211d341caSmrg# define _NormalLibMkdir() $(_NULLCMD_)
20311d341caSmrg# define _NormalObjCompile(options) $(_NULLCMD_)
20411d341caSmrg# define _NormalObjCplusplusCompile(options) $(_NULLCMD_)
20511d341caSmrg# define _NormalCleanDir() $(_NULLCMD_)
20611d341caSmrg#else
20711d341caSmrg# if DoSharedLib && SeparateSharedCompile
20811d341caSmrg#  define _NormalLibMkdir() _LibMkdir(unshared)
20911d341caSmrg#  define _NormalObjCompile(options) UnsharedLibObjCompile(options)
21011d341caSmrg#  define _NormalObjCplusplusCompile(options) UnsharedLibObjCplusplusCompile(options)
21111d341caSmrg#  define _NormalCleanDir() LibCleanDir(unshared)
21211d341caSmrg# else
21311d341caSmrg#  define _NormalLibMkdir() $(_NULLCMD_)
21411d341caSmrg#  if !DoSharedLib &&  defined(IncludeSharedObjectInNormalLib)
21511d341caSmrg#   define _NormalObjCompile(options) NormalRelocLibObjCompile(options)
21611d341caSmrg#  else
21711d341caSmrg#   define _NormalObjCompile(options) NormalLibObjCompile(options)
21811d341caSmrg#  endif
21911d341caSmrg#  define _NormalObjCplusplusCompile(options) NormalLibObjCplusplusCompile(options)
22011d341caSmrg#  define _NormalCleanDir() $(_NULLCMD_)
22111d341caSmrg# endif
22211d341caSmrg#endif
22311d341caSmrg
22411d341caSmrg#if !DoSharedLib || (DoNormalLib && !SeparateSharedCompile)
22511d341caSmrg# define _SharedObjCompile(options) $(_NULLCMD_)
22611d341caSmrg# define _SharedObjCplusplusCompile(options) $(_NULLCMD_)
22711d341caSmrg#else
22811d341caSmrg# if SeparateSharedCompile
22911d341caSmrg#  define _SharedObjCompile(options) NormalSharedLibObjCompile(options)
23011d341caSmrg#  define _SharedObjCplusplusCompile(options) NormalSharedLibObjCplusplusCompile(options)
23111d341caSmrg#else
23211d341caSmrg# define _SharedObjCompile(options) NormalLibObjCompile(options)
23311d341caSmrg# define _SharedObjCplusplusCompile(options) NormalLibObjCplusplusCompile(options)
23411d341caSmrg#endif
23511d341caSmrg#endif
23611d341caSmrg
23711d341caSmrg#ifndef LibInstallBuild
23811d341caSmrg#define LibInstallBuild NO
23911d341caSmrg#endif
24011d341caSmrg
24111d341caSmrg#if DoExtraLib && defined(ExtraLibRules)
24211d341caSmrg# define _ExtraLibMkdir() ExtraLibMkdir()
24311d341caSmrg# define _ExtraObjCompile(options) ExtraObjCompile(options)
24411d341caSmrg# define _ExtraObjCplusplusCompile(options) ExtraObjCplusplusCompile(options)
24511d341caSmrg# define _ExtraCleanDir() ExtraCleanDir()
24611d341caSmrg#else
24711d341caSmrg# define _ExtraLibMkdir() $(_NULLCMD_)
24811d341caSmrg# define _ExtraObjCompile(options) $(_NULLCMD_)
24911d341caSmrg# define _ExtraObjCplusplusCompile(options) $(_NULLCMD_)
25011d341caSmrg# define _ExtraCleanDir() $(_NULLCMD_)
25111d341caSmrg#endif
25211d341caSmrg
25311d341caSmrg#ifndef CplusplusSource
25411d341caSmrg# define SRCsuf c
25511d341caSmrg# define Isuf i
25611d341caSmrg#else
25711d341caSmrg# define SRCsuf CCsuf
25811d341caSmrg# define Isuf ii
25911d341caSmrg# ifdef SunArchitecture
26011d341caSmrg.SUFFIXES: Concat(.,CCsuf)
26111d341caSmrg# endif
26211d341caSmrg#endif
26311d341caSmrg
26411d341caSmrg#define _CompileObj(target, options)					@@\
26511d341caSmrgtarget									@@\
26611d341caSmrg	_DebuggedObjCompile(options)					@@\
26711d341caSmrg	_ProfiledObjCompile(options)					@@\
26811d341caSmrg	_NormalObjCompile(options)					@@\
26911d341caSmrg	_ExtraObjCompile(options)					@@\
27011d341caSmrg	_SharedObjCompile(options)
27111d341caSmrg
27211d341caSmrg#ifndef SeparateSharedCompile
27311d341caSmrg# define _CompileObjSeparateOpts(target,staticopts,sharedopts) \
27411d341caSmrg	_CompileObj(target,sharedopts)
27511d341caSmrg#else
27611d341caSmrg# define _CompileObjSeparateOpts(target,staticopts,sharedopts)		@@\
27711d341caSmrgtarget									@@\
27811d341caSmrg	_DebuggedObjCompile(staticopts)					@@\
27911d341caSmrg	_ProfiledObjCompile(staticopts)					@@\
28011d341caSmrg	_NormalObjCompile(staticopts)					@@\
28111d341caSmrg	_ExtraObjCompile(staticopts)					@@\
28211d341caSmrg	_SharedObjCompile(sharedopts)
28311d341caSmrg#endif
28411d341caSmrg
28511d341caSmrg#ifdef CplusplusSource
28611d341caSmrg# define _CompileObjCplusplus(target, options)				@@\
28711d341caSmrgtarget									@@\
28811d341caSmrg	_DebuggedObjCplusplusCompile(options)				@@\
28911d341caSmrg	_ProfiledObjCplusplusCompile(options)				@@\
29011d341caSmrg	_NormalObjCplusplusCompile(options)				@@\
29111d341caSmrg	_ExtraObjCplusplusCompile(options)				@@\
29211d341caSmrg	_SharedObjCplusplusCompile(options)
29311d341caSmrg#else
29411d341caSmrg# define _CompileObjCplusplus(target, options)
29511d341caSmrg#endif
29611d341caSmrg
29711d341caSmrg#ifndef LibraryObjectRule
29811d341caSmrg# define LibraryObjectRule()						@@\
29911d341caSmrgall::									@@\
30011d341caSmrg	_DebuggedLibMkdir()						@@\
30111d341caSmrg	_ProfiledLibMkdir()						@@\
30211d341caSmrg	_NormalLibMkdir()						@@\
30311d341caSmrg	_ExtraLibMkdir()						@@\
30411d341caSmrg									@@\
30511d341caSmrgincludes::								@@\
30611d341caSmrg	_DebuggedLibMkdir()						@@\
30711d341caSmrg	_ProfiledLibMkdir()						@@\
30811d341caSmrg	_NormalLibMkdir()						@@\
30911d341caSmrg	_ExtraLibMkdir()						@@\
31011d341caSmrg									@@\
31111d341caSmrg_CompileObj(.c.Osuf:,$(_NOOP_))						@@\
31211d341caSmrg_CompileObjCplusplus(.SRCsuf.Osuf:,$(_NOOP_))				@@\
31311d341caSmrg									@@\
31411d341caSmrgclean::									@@\
31511d341caSmrg	_DebuggedCleanDir()						@@\
31611d341caSmrg	_ProfiledCleanDir()						@@\
31711d341caSmrg	_NormalCleanDir()						@@\
31811d341caSmrg	_ExtraCleanDir()						@@\
31911d341caSmrg
32011d341caSmrg#endif /* LibraryObjectRule */
32111d341caSmrg
32211d341caSmrg#ifndef SpecialLibObjectRule
32311d341caSmrg# define SpecialLibObjectRule(objs,depends,options)			@@\
32411d341caSmrg_CompileObj(objs: depends,options)
32511d341caSmrg#endif /* SpecialLibObjectRule */
32611d341caSmrg
32711d341caSmrg#ifndef SpecialCLibObjectRule
32811d341caSmrg# define SpecialCLibObjectRule(basename,depends,options)		@@\
32911d341caSmrg_CompileObj(basename.Osuf: basename.SRCsuf depends,options)		@@\
33011d341caSmrg									@@\
33111d341caSmrgbasename.Isuf: basename.SRCsuf depends					@@\
33211d341caSmrg	CPPOnlyCompile(basename.SRCsuf,options)				@@\
33311d341caSmrg									@@\
33411d341caSmrgCenterLoadTarget(debug_src,basename.SRCsuf,NullParameter,$(ALLDEFINES) options)
33511d341caSmrg#endif /* SpecialCLibObjectRule */
33611d341caSmrg
33711d341caSmrg#ifndef SpecialCLibObjectRuleSeparateOpts
33811d341caSmrg# define SpecialCLibObjectRuleSeparateOpts(basename,depends,staticopts,shopts) @@\
33911d341caSmrg_CompileObjSeparateOpts(basename.Osuf: basename.SRCsuf depends,staticopts,shopts)	@@\
34011d341caSmrg									@@\
34111d341caSmrgbasename.Isuf: basename.SRCsuf depends					@@\
34211d341caSmrg	CPPOnlyCompile(basename.SRCsuf,sharedopts)			@@\
34311d341caSmrg									@@\
34411d341caSmrgCenterLoadTarget(debug_src,basename.SRCsuf,NullParameter,$(ALLDEFINES) options)
34511d341caSmrg#endif /* SpecialCLibObjectRuleSepareateOpts */
34611d341caSmrg
34711d341caSmrg#ifndef SpecialCplusplusLibObjectRule
34811d341caSmrg# define SpecialCplusplusLibObjectRule(basename,depends,options)	@@\
34911d341caSmrg_CompileObjCplusplus(basename.Osuf: basename.SRCsuf depends,options)	@@\
35011d341caSmrg									@@\
35111d341caSmrgCenterLoadTarget(debug_src,basename.SRCsuf,NullParameter,$(ALLDEFINES) options)
35211d341caSmrg#endif /* SpecialCplusplusLibObjectRule */
35311d341caSmrg
35411d341caSmrg/*
35511d341caSmrg * ToolkitMakeStrings generates a string-table, i.e., a C source
35611d341caSmrg * file and the matching header(s), e.g., Xt's StringDefs.c, StringDefs.h,
35711d341caSmrg * and Shell.h files; or Motif's XmStrDefs.c and XmStrDefs.h files.
35811d341caSmrg *
35911d341caSmrg * The 'files' argument is the list of files that will be produced by
36011d341caSmrg * this rule, e.g., for Xt they would be "Shell.h StringDefs.c StringDefs.h"
36111d341caSmrg * and for Motif they would be "XmStrDefs.c XmStrDefs.h".
36211d341caSmrg *
36311d341caSmrg * The 'source' argument is the string-list file to be parsed, e.g., in
36411d341caSmrg * Xt that would be "util/string.list".  For Motif 2.0 it would be
36511d341caSmrg * "../../tools/makestr/xmstring.list", and for Motif-CDE1 it would be
36611d341caSmrg * "util/xmstring.list".
36711d341caSmrg *
36811d341caSmrg * The 'options' argument is passed by the library's Imakefile, see the
36911d341caSmrg * Xt Imakefile for an example.  Typically this would be nothing, -intelabi,
37011d341caSmrg * or -sparcabi; there are other choices, but these are typical.
37111d341caSmrg *
37211d341caSmrg * The 'depends' argument names additional files the target files
37311d341caSmrg * depend on.  It should name the #ctmpl and #htmpl files from the
37411d341caSmrg * 'source' file.
37511d341caSmrg *
37611d341caSmrg * The 'dest' argument is the C source output file.  For Xt this should
37711d341caSmrg * be "StringDefs.c", and for all versions of Motif it would be "XmStrDefs.c"
37811d341caSmrg *
37911d341caSmrg * Headers are generated and named according to data in the 'source'
38011d341caSmrg * file.
38111d341caSmrg */
38211d341caSmrg/*
38311d341caSmrg * The NoCmpScript
38411d341caSmrg * prevents clearmake from trying to remake makestrs if it exists.
38511d341caSmrg * Including both $(MAKESTRS) and $(MAKESTRS).o as primary targets
38611d341caSmrg * prevents clearmake from trying to recompile makestrs from here.
38711d341caSmrg * We have includes, not files, depend on makestrs to try to get
38811d341caSmrg * clearmake to wink in the files.  Bug in clearmake 2.0.2?
38911d341caSmrg */
39011d341caSmrg
39111d341caSmrg#ifndef MakeStringsDependency
39211d341caSmrg# ifndef UseInstalled
39311d341caSmrg#  define MakeStringsDependency						@@\
39411d341caSmrgMAKESTRS = $(CONFIGSRC)/util/makestrs					@@\
39511d341caSmrgNoCmpScript(HostProgramTargetName($(MAKESTRS)) $(MAKESTRS).Osuf)	@@\
39611d341caSmrg									@@\
39711d341caSmrgHostProgramTargetName($(MAKESTRS)) $(MAKESTRS).Osuf:			@@\
39811d341caSmrg	cd $(CONFIGSRC)/util && $(MAKE) HostProgramTargetName(makestrs)	@@\
39911d341caSmrg									@@\
40011d341caSmrgincludes:: HostProgramTargetName($(MAKESTRS))
40111d341caSmrg# else
40211d341caSmrg#  define MakeStringsDependency  /**/
40311d341caSmrg# endif
40411d341caSmrg#endif
40511d341caSmrg
40611d341caSmrg#ifndef ToolkitMakeStrings
40711d341caSmrg# if defined(LibTookitMakeStringsDependency) && LibTookitMakeStringsDependency
40811d341caSmrg#  define ToolkitMakeStrings(files,source,options,depends,dest)		@@\
40911d341caSmrgfiles: source depends							@@\
41011d341caSmrg	RemoveFiles(files)						@@\
41111d341caSmrg	RunProgram(MAKESTRS,options < source > dest)			@@\
41211d341caSmrg									@@\
41311d341caSmrgAllTarget(files)							@@\
41411d341caSmrg									@@\
41511d341caSmrgincludes:: files							@@\
41611d341caSmrg									@@\
41711d341caSmrgdepend:: files								@@\
41811d341caSmrg									@@\
41911d341caSmrgclean::									@@\
42011d341caSmrg	RemoveFiles(files)
42111d341caSmrg# else
42211d341caSmrg#  define ToolkitMakeStrings(files,source,options,depends,dest)		@@\
42311d341caSmrgMakeStringsDependency							@@\
42411d341caSmrg									@@\
42511d341caSmrgfiles: source depends							@@\
42611d341caSmrg	RemoveFiles(files)						@@\
42711d341caSmrg	RunProgram(MAKESTRS,options < source > dest)			@@\
42811d341caSmrg									@@\
42911d341caSmrgAllTarget(files)							@@\
43011d341caSmrg									@@\
43111d341caSmrgincludes:: files							@@\
43211d341caSmrg									@@\
43311d341caSmrgdepend:: files								@@\
43411d341caSmrg									@@\
43511d341caSmrgclean::									@@\
43611d341caSmrg	RemoveFiles(files)
43711d341caSmrg# endif
43811d341caSmrg#endif /* ToolkitMakeStrings */
43911d341caSmrg
44011d341caSmrg#ifdef LibName
44111d341caSmrg
44211d341caSmrgLIBNAME = LibName
44311d341caSmrg
44411d341caSmrg# if defined(LibTookitMakeStringsDependency) && LibTookitMakeStringsDependency
44511d341caSmrg/*
44611d341caSmrg * Do ToolkitMakeStrings() before BuildIncludes so makestrs is still
44711d341caSmrg * built first, even if the generated header will be installed.
44811d341caSmrg */
44911d341caSmrgMakeStringsDependency
45011d341caSmrg# endif
45111d341caSmrg
45211d341caSmrgLibraryObjectRule()
45311d341caSmrg
45411d341caSmrg# undef _LinkBuildLibrary
45511d341caSmrg# if !defined(LibInstall) || LibInstall || LibInstallBuild
45611d341caSmrg#  define _LinkBuildLibrary(lib) LinkBuildLibrary(lib)
45711d341caSmrg# else
45811d341caSmrg#  define _LinkBuildLibrary(lib) $(_NULLCMD_)
45911d341caSmrg# endif
46011d341caSmrg
46111d341caSmrg# if defined(LibBuild) && !LibBuild
46211d341caSmrg#  define LibCreate NO
46311d341caSmrg# endif
46411d341caSmrg
46511d341caSmrg# if !defined(LibCreate) || LibCreate
46611d341caSmrg#  if DoSharedLib
46711d341caSmrg#   if HugeLibrary && defined(SharedLibraryTarget3)
46811d341caSmrgSharedLibraryTarget3($(LIBNAME),$(SoRev),$(OBJS1),$(OBJS2),$(OBJS3) $(EXTRASHAREDOBJS),.,.)
46911d341caSmrg#   else
47011d341caSmrg#    if defined(SharedLibtoolRev) && defined(SharedLibtoolLibraryTarget)
47111d341caSmrgSharedLibtoolLibraryTarget($(LIBNAME),SharedLibtoolRev,$(OBJS) $(EXTRASHAREDOBJS),.,.)
47211d341caSmrg#    else
47311d341caSmrgSharedLibraryTarget($(LIBNAME),$(SoRev),$(OBJS) $(EXTRASHAREDOBJS),.,.)
47411d341caSmrg#    endif
47511d341caSmrg#   endif
47611d341caSmrg#   if !defined(LibInstall) || LibInstall
47711d341caSmrg#    if defined(SharedLibtoolRev) && defined(InstallSharedLibtoolLibrary)
47811d341caSmrgInstallSharedLibtoolLibrary($(LIBNAME),SharedLibtoolRev,$(SHLIBDIR))
47911d341caSmrg#    else
48011d341caSmrgInstallSharedLibrary($(LIBNAME),$(SoRev),$(SHLIBDIR))
48111d341caSmrg#    endif
48211d341caSmrg#   endif
48311d341caSmrg#   if HasSharedData
48411d341caSmrgSharedLibraryDataTarget($(LIBNAME),$(SoRev),$(UNSHAREDOBJS))
48511d341caSmrg#    if !defined(LibInstall) || LibInstall
48611d341caSmrgInstallSharedLibraryData($(LIBNAME),$(SoRev),$(SHLIBDIR))
48711d341caSmrg#    endif
48811d341caSmrg#   endif
48911d341caSmrg#  endif
49011d341caSmrg#  if DoNormalLib
49111d341caSmrg#   if HugeLibrary
49211d341caSmrg#    if DoSharedLib && SeparateSharedCompile
49311d341caSmrgUnsharedLibraryTarget3($(LIBNAME),$(OBJS1),$(OBJS2),$(OBJS3) $(EXTRAUNSHAREDOBJS),unshared,..)
49411d341caSmrg#    else
49511d341caSmrgNormalLibraryTarget3($(LIBNAME),$(OBJS1),$(OBJS2),$(OBJS3) $(EXTRAUNSHAREDOBJS))
49611d341caSmrg#    endif
49711d341caSmrg#   else
49811d341caSmrg#    if DoSharedLib && SeparateSharedCompile
49911d341caSmrgUnsharedLibraryTarget($(LIBNAME),$(OBJS) $(EXTRAUNSHAREDOBJS),unshared,..)
50011d341caSmrg#    else
50111d341caSmrgNormalLibraryTarget($(LIBNAME),$(OBJS) $(EXTRAUNSHAREDOBJS))
50211d341caSmrg#    endif
50311d341caSmrg#   endif
50411d341caSmrg#   if !defined(LibInstall) || LibInstall
50511d341caSmrgInstallLibrary($(LIBNAME),$(USRLIBDIR))
50611d341caSmrg#   endif
50711d341caSmrg#  endif
50811d341caSmrg#  if DoProfileLib
50911d341caSmrgProfiledLibraryTarget($(LIBNAME),$(OBJS) $(EXTRAUNSHAREDOBJS))
51011d341caSmrg#   if !defined(LibInstall) || LibInstall
51111d341caSmrgInstallLibrary($(LIBNAME)_p,$(USRLIBDIR))
51211d341caSmrg#   endif
51311d341caSmrg#  endif
51411d341caSmrg#  if DoDebugLib
51511d341caSmrgDebuggedLibraryTarget($(LIBNAME),$(OBJS) $(EXTRAUNSHAREDOBJS))
51611d341caSmrg#   if !defined(LibInstall) || LibInstall
51711d341caSmrgInstallLibrary($(LIBNAME)_d,$(USRLIBDIR))
51811d341caSmrg#   endif
51911d341caSmrg#  endif
52011d341caSmrg#  if DoExtraLib && defined(ExtraLibRules)
52111d341caSmrgExtraLibraryTarget($(LIBNAME),$(SoRev),$(OBJS) $(EXTRAUNSHAREDOBJS))
52211d341caSmrg#   if !defined(LibInstall) || LibInstall
52311d341caSmrgExtraInstallLibrary($(LIBNAME),$(SoRev))
52411d341caSmrg#   endif
52511d341caSmrg#  endif
52611d341caSmrg
52711d341caSmrgLintLibraryTarget($(LIBNAME),$(SRCS))
52811d341caSmrg#  if !defined(LibInstall) || LibInstall
52911d341caSmrgInstallLintLibrary($(LIBNAME),$(LINTLIBDIR))
53011d341caSmrg#  endif
53111d341caSmrg# else /* not LibCreate */
53211d341caSmrg#  if LibBuild
53311d341caSmrg#   if HugeLibrary
53411d341caSmrgAllTarget($(OBJS1))
53511d341caSmrgAllTarget($(OBJS2))
53611d341caSmrgAllTarget($(OBJS3))
53711d341caSmrg#   else
53811d341caSmrgAllTarget($(OBJS))
53911d341caSmrg#   endif
54011d341caSmrg#   if DoSharedLib
54111d341caSmrgAllTarget($(EXTRASHAREDOBJS))
54211d341caSmrg#   endif
54311d341caSmrg#   if DoNormalLib
54411d341caSmrgAllTarget($(EXTRAUNSHAREDOBJS))
54511d341caSmrg#   endif
54611d341caSmrg#  endif /* LibBuild */
54711d341caSmrg# endif /* LibCreate */
54811d341caSmrg# ifdef IncSubdir
54911d341caSmrg#  ifdef IncSubSubdir
55011d341caSmrg#   if !defined(LibHeaders) || LibHeaders
55111d341caSmrgBuildIncludes($(HEADERS),IncSubdir/IncSubSubdir,../..)
55211d341caSmrg#    if BuildLibraries
55311d341caSmrgInstallMultipleFlags($(HEADERS),$(INCDIR)/IncSubdir/IncSubSubdir,$(INSTINCFLAGS))
55411d341caSmrg#     endif
55511d341caSmrg#   endif
55611d341caSmrg#  else
55711d341caSmrg#   if !defined(LibHeaders) || LibHeaders
55811d341caSmrgBuildIncludes($(HEADERS),IncSubdir,..)
55911d341caSmrg#    if BuildLibraries
56011d341caSmrgInstallMultipleFlags($(HEADERS),$(INCDIR)/IncSubdir,$(INSTINCFLAGS))
56111d341caSmrg#    endif
56211d341caSmrg#   endif
56311d341caSmrg#  endif
56411d341caSmrg# else
56511d341caSmrg#  ifndef CplusplusSource
56611d341caSmrg#   if !defined(LibHeaders) || LibHeaders
56711d341caSmrgBuildIncludesTop($(HEADERS))
56811d341caSmrg#    if BuildLibraries
56911d341caSmrgInstallMultipleFlags($(HEADERS),$(INCDIR),$(INSTINCFLAGS))
57011d341caSmrg#    endif
57111d341caSmrg#   endif
57211d341caSmrg#  endif
57311d341caSmrg# endif
57411d341caSmrg
57511d341caSmrgNormalLintTarget($(SRCS))
57611d341caSmrg#endif /* defined(LibName) */
57711d341caSmrg
57811d341caSmrg#ifdef NoSoSymlink
57911d341caSmrgSOSYMLINK = false
58011d341caSmrg#else
58111d341caSmrgSOSYMLINK = true
58211d341caSmrg#endif
583