📄 library.tmpl
字号:
/* * 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.1 1997/06/11 12:08:29 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 = LibraryCCOptionsSTD_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#endifLIB_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 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) @@\ _SharedObjCompile(options)#ifdef CplusplusSource# define _CompileObjCplusplus(target, options) @@\target @@\ _DebuggedObjCplusplusCompile(options) @@\ _ProfiledObjCplusplusCompile(options) @@\ _NormalObjCplusplusCompile(options) @@\ _SharedObjCplusplusCompile(options)#else# define _CompileObjCplusplus(target, options)#endif#ifndef LibraryObjectRule# define LibraryObjectRule() @@\all:: @@\ _DebuggedLibMkdir() @@\ _ProfiledLibMkdir() @@\ _NormalLibMkdir() @@\ @@\includes:: @@\ _DebuggedLibMkdir() @@\ _ProfiledLibMkdir() @@\ _NormalLibMkdir() @@\ @@\_CompileObj(.c.Osuf:,$(_NOOP_)) @@\_CompileObjCplusplus(.SRCsuf.Osuf:,$(_NOOP_)) @@\ @@\clean:: @@\ _DebuggedCleanDir() @@\ _ProfiledCleanDir() @@\ _NormalCleanDir() @@\#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 LibNameLIBNAME = LibName# if defined(LibTookitMakeStringsDependency) && LibTookitMakeStringsDependency/* * Do ToolkitMakeStrings() before BuildIncludes so makestrs is still * built first, even if the generated header will be installed. */MakeStringsDependency# endifLibraryObjectRule()# 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),.,.)# elseSharedLibraryTarget($(LIBNAME),$(SoRev),$(OBJS),.,.)# endif# if !defined(LibInstall) || LibInstallInstallSharedLibrary($(LIBNAME),$(SoRev),$(SHLIBDIR))# endif# if HasSharedDataSharedLibraryDataTarget($(LIBNAME),$(SoRev),$(UNSHAREDOBJS))# if !defined(LibInstall) || LibInstallInstallSharedLibraryData($(LIBNAME),$(SoRev),$(SHLIBDIR))# endif# endif# endif# if DoNormalLib# if HugeLibrary# if DoSharedLib && SeparateSharedCompileUnsharedLibraryTarget3($(LIBNAME),$(OBJS1),$(OBJS2),$(OBJS3),unshared,..)# elseNormalLibraryTarget3($(LIBNAME),$(OBJS1),$(OBJS2),$(OBJS3))# endif# else# if DoSharedLib && SeparateSharedCompileUnsharedLibraryTarget($(LIBNAME),$(OBJS),unshared,..)# elseNormalLibraryTarget($(LIBNAME),$(OBJS))# endif# endif# if !defined(LibInstall) || LibInstallInstallLibrary($(LIBNAME),$(USRLIBDIR))# endif# endif# if DoProfileLibProfiledLibraryTarget($(LIBNAME),$(OBJS))# if !defined(LibInstall) || LibInstallInstallLibrary($(LIBNAME)_p,$(USRLIBDIR))# endif# endif# if DoDebugLibDebuggedLibraryTarget($(LIBNAME),$(OBJS))# if !defined(LibInstall) || LibInstallInstallLibrary($(LIBNAME)_d,$(USRLIBDIR))# endif# endifLintLibraryTarget($(LIBNAME),$(SRCS))# if !defined(LibInstall) || LibInstallInstallLintLibrary($(LIBNAME),$(LINTLIBDIR))# endif# else /* not LibCreate */# if HugeLibraryAllTarget($(OBJS1))AllTarget($(OBJS2))AllTarget($(OBJS3))# elseAllTarget($(OBJS))# endif# endif /* LibCreate */# ifdef IncSubdir# ifdef IncSubSubdirBuildIncludes($(HEADERS),IncSubdir/IncSubSubdir,../..)InstallMultipleFlags($(HEADERS),$(INCDIR)/IncSubdir/IncSubSubdir,$(INSTINCFLAGS))# elseBuildIncludes($(HEADERS),IncSubdir,..)InstallMultipleFlags($(HEADERS),$(INCDIR)/IncSubdir,$(INSTINCFLAGS))# endif# else# ifndef CplusplusSource# if !defined(LibHeaders) || LibHeadersBuildIncludesTop($(HEADERS))InstallMultipleFlags($(HEADERS),$(INCDIR),$(INSTINCFLAGS))# endif# endif# endifNormalLintTarget($(SRCS))#endif /* defined(LibName) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -