X-Git-Url: https://git.sesse.net/?p=rdpsrv;a=blobdiff_plain;f=Xserver%2Fconfig%2Fcf%2FLibrary.tmpl;fp=Xserver%2Fconfig%2Fcf%2FLibrary.tmpl;h=ba2445b2e9e0b9394e16595d54b902133b0c564e;hp=0000000000000000000000000000000000000000;hb=b6e6afccf37f4ad0515ef2a698f714fdf1bf23b3;hpb=e3340a110a3b01756b8e67531395a33b40a17d37 diff --git a/Xserver/config/cf/Library.tmpl b/Xserver/config/cf/Library.tmpl new file mode 100644 index 0000000..ba2445b --- /dev/null +++ b/Xserver/config/cf/Library.tmpl @@ -0,0 +1,412 @@ +/* + * 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 = 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 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 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 + +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) */