Imake.rules revision 11d341ca
111d341caSmrgXCOMM --------------------------------------------------------------------- 211d341caSmrgXCOMM Imake rules for building libraries, programs, scripts, and data files 311d341caSmrgXCOMM rules: $Xorg: Imake.rules,v 1.3 2000/08/17 19:41:46 cpqbld Exp $ 411d341caSmrgXCOMM rules: $XdotOrg: util/cf/Imake.rules,v 1.11 2005/11/08 06:33:24 jkj Exp $ 511d341caSmrgXCOMM 611d341caSmrgXCOMM 711d341caSmrgXCOMM 811d341caSmrgXCOMM 911d341caSmrgXCOMM rules: $XFree86: xc/config/cf/Imake.rules,v 3.128 2003/11/15 03:25:17 dawes Exp $ 1011d341caSmrg 1111d341caSmrg/* 1211d341caSmrg * MACHINE-INDEPENDENT RULES; DO NOT MODIFY 1311d341caSmrg * 1411d341caSmrg * Warning, when defining rules: make sure you do not include both a trailing 1511d341caSmrg * backslash and double ampersand backslash or else you will get an extra 1611d341caSmrg * backslash in the Makefile. 1711d341caSmrg * 1811d341caSmrg * The following macros are defined for the various templates and Imakefiles 1911d341caSmrg * (for a list of the applicable make variables, see the template files): 2011d341caSmrg * 2111d341caSmrg * Concat (a,b) 2211d341caSmrg * Concat3 (a,b,c) 2311d341caSmrg * Concat4 (a,b,c,d) 2411d341caSmrg * _Use (a,b) 2511d341caSmrg * _UseCat (a,b,c) 2611d341caSmrg * _MUse (a,b) 2711d341caSmrg * _MUseCat (a,b,c) 2811d341caSmrg * ProgramTargetName (target) 2911d341caSmrg * HostProgramTargetName (target) 3011d341caSmrg * RunProgram (progvar,options) 3111d341caSmrg * RunProgramWithSetup (setup,progvar,options) 3211d341caSmrg * RemoveFile (file) 3311d341caSmrg * RemoveFiles (files) 3411d341caSmrg * CenterLoadTarget (target,srclist,libs,defines) 3511d341caSmrg * CenterProgramTarget (program,srclist,objlist,locallibs,syslibs) 3611d341caSmrg * SentinelLinkTarget (step,program,linklist) 3711d341caSmrg * SentinelProgramTarget (program,deplist,linklist) 3811d341caSmrg * SentinelCplusplusProgramTarget (program,deplist,linklist) 3911d341caSmrg * PurifyLinkTarget (step,program,linklist) 4011d341caSmrg * PurifyProgramTarget (program,deplist,linklist) 4111d341caSmrg * PurifyCplusplusProgramTarget (program,deplist,linklist) 4211d341caSmrg * ProofLinkTarget (step,program,linklist) 4311d341caSmrg * ProofProgramTarget (program,deplist,linklist) 4411d341caSmrg * ProofCplusplusProgramTarget (program,deplist,linklist) 4511d341caSmrg * ProofCleanTarget () 4611d341caSmrg * RemoveTargetProgram (program) 4711d341caSmrg * MakeDir (dir) 4811d341caSmrg * InstallDirectory (dir) 4911d341caSmrg * BuildIncludesTop (srclist) 5011d341caSmrg * BuildIncludes (srclist,dstsubdir,dstupdir) 5111d341caSmrg * LinkRule (program,options,objects,libraries) 5211d341caSmrg * HostLinkRule (program,options,objects,libraries) 5311d341caSmrg * NoCmpScript (target) 5411d341caSmrg * NoConfigRec (target) 5511d341caSmrg * NormalProgramTarget (program,objects,deplibs,locallibs,syslibs) 5611d341caSmrg * SetUIDProgramTarget (program,objects,deplibs,locallibs,syslibs) 5711d341caSmrg * SingleProgramTarget (program,objects,locallibs,syslibs) 5811d341caSmrg * SimpleProgramTarget (program) 5911d341caSmrg * ComplexProgramTarget (program) 6011d341caSmrg * ComplexProgramTarget_1 (program,locallib,syslib) 6111d341caSmrg * ComplexProgramTarget_2 (program,locallib,syslib) 6211d341caSmrg * ComplexProgramTarget_3 (program,locallib,syslib) 6311d341caSmrg * ServerTargetWithFlags (server,subdirs,objects,libs,syslibs,flags) 6411d341caSmrg * ServerTarget (server,subdirs,objects,libs,syslibs) 6511d341caSmrg * MoveToBakFile (file) 6611d341caSmrg * RMoveToBakFile (file) 6711d341caSmrg * RanLibrary (args) 6811d341caSmrg * LibraryTargetName (libname) 6911d341caSmrg * LibraryTargetNameSuffix (libname,suffix) 7011d341caSmrg * InstallNamedTarget (step,srcname,flags,dest,dstname) 7111d341caSmrg * InstallTarget (step,file,flags,dest) 7211d341caSmrg * InstallLibrary (libname,dest) 7311d341caSmrg * MergeIntoInstalledLibrary (tolib,fromlib) 7411d341caSmrg * InstallLibraryAlias (libname,alias,dest) 7511d341caSmrg * InstallLintLibrary (libname,dest) 7611d341caSmrg * InstallManPageLong (file,destdir,dest) 7711d341caSmrg * InstallManPage (file,destdir) 7811d341caSmrg * InstallManPageAliases (file,destdir,aliases) 7911d341caSmrg * ManKeywordsTarget (manpath) 8011d341caSmrg * InstallNamedNonExec (srcname,dstname,dest) 8111d341caSmrg * InstallNonExecFile (file,dest) 8211d341caSmrg * InstallNonExecFileNoClobber (file,dest) 8311d341caSmrg * InstallNonExec (file,dest) 8411d341caSmrg * InstallProgramWithFlags (program,dest,flags) 8511d341caSmrg * InstallProgram (program,dest) 8611d341caSmrg * InstallScript (program,dest) 8711d341caSmrg * InstallNamedProg (srcname,dstname,dest) 8811d341caSmrg * InstallNamedProgNoClobber (srcname,dstname,dest) 8911d341caSmrg * MakeFlagsToShellFlags (makeflags,shellcmd) 9011d341caSmrg * MakeNamedTargetSubdir (dir,flags,subname) 9111d341caSmrg * LinkConfDirectoryLong (mdir,cdir,rdir,ldir,opath,npath) 9211d341caSmrg * LinkConfDirectory (mdir,cdir,rdir,ldir) 9311d341caSmrg * LinkConfFileLong (cfile,lfile,opath,npath) 9411d341caSmrg * LinkConfFile (cfile,lfile) 9511d341caSmrg * LinkFileList (step,list,dir,sub) 9611d341caSmrg * LinkVarDirectory (mdir,cdir,rdir,ldir) 9711d341caSmrg * InstallMultipleDestFlags (step,list,dest,flags) 9811d341caSmrg * InstallMultipleDest (step,list,dest) 9911d341caSmrg * InstallMultiple (list,dest) 10011d341caSmrg * InstallMultipleFlags (list,dest,flags) 10111d341caSmrg * InstallMultipleMan (list,dest) 10211d341caSmrg * InstallMultipleManSuffix (list,dest,suffix) 10311d341caSmrg * DependDependency () 10411d341caSmrg * DependTarget () 10511d341caSmrg * DependTarget3 (srcs1,srcs2,srcs3) 10611d341caSmrg * CleanTarget () 10711d341caSmrg * TagsTarget () 10811d341caSmrg * ImakeDependency (target) 10911d341caSmrg * BuildMakefileTarget (notused,imakeflags) 11011d341caSmrg * MakefileTarget () 11111d341caSmrg * LibMkdir (dir) 11211d341caSmrg * LibCleanDir (dir) 11311d341caSmrg * LintLibReferences (varname,libname,libsource) 11411d341caSmrg * UnsharedLibReferences (varname,libname,libsource) 11511d341caSmrg * ProjectUnsharedLibReferences (varname,libname,libsource,buildlibdir) 11611d341caSmrg * SharedLibDependencies (libname,libsource,revname) 11711d341caSmrg * SharedDSLibDependencies (libname,libsource,revname) 11811d341caSmrg * SharedLibReferences (varname,libname,libsource,revname,rev) 11911d341caSmrg * SharedDSLibReferences (varname,libname,libsource,revname,rev) 12011d341caSmrg * ObjectCompile (options) 12111d341caSmrg * NormalLibObjCompile (options) 12211d341caSmrg * NormalSharedLibObjCompile (options) 12311d341caSmrg * NormalRelocLibObjCompile (options) 12411d341caSmrg * LibObjCompile (dir,options) 12511d341caSmrg * DebuggedLibObjCompile (options) 12611d341caSmrg * ProfiledLibObjCompile (options) 12711d341caSmrg * SharedLibObjCompile (options) 12811d341caSmrg * NormalLibraryObjectRule () 12911d341caSmrg * NormalFortranObjectRule () 13011d341caSmrg * ObjectFromSpecialSource (dst,src,flags) 13111d341caSmrg * SpecialObjectRule (objs,depends,options) 13211d341caSmrg * SpecialCObjectRule (basename,depends,options) 13311d341caSmrg * LexFile (file) 13411d341caSmrg * M4File (file,includes) 13511d341caSmrg * YaccFile (file,flags) 13611d341caSmrg * YaccFileNoFlags (file) 13711d341caSmrg * MakeLibrary (libname,objlist) 13811d341caSmrg * LinkBuildLibrary (lib) 13911d341caSmrg * LinkBuildSonameLibrary (lib) 14011d341caSmrg * NormalLibraryTarget (libname,objlist) 14111d341caSmrg * NormalLibraryTarget2 (libname,objlist1,objlist2) 14211d341caSmrg * NormalLibraryTarget3 (libname,objlist1,objlist2,objlist3) 14311d341caSmrg * NormalDepLibraryTarget (libname,deplist,objlist) 14411d341caSmrg * UnsharedLibraryTarget (libname,objlist,down,up) 14511d341caSmrg * UnsharedLibraryTarget3 (libname,objlist1,objlist2,objlist3,down,up) 14611d341caSmrg * SubdirLibraryRule (objlist) 14711d341caSmrg * ProfiledLibraryTarget (libname,objlist) 14811d341caSmrg * DebuggedLibraryTarget (libname,objlist) 14911d341caSmrg * AliasedLibraryTarget (libname,alias) 15011d341caSmrg * NormalRelocatableTarget (objname,objlist) 15111d341caSmrg * ProfiledRelocatableTarget (objname,objlist) 15211d341caSmrg * DebuggedRelocatableTarget (objname,objlist) 15311d341caSmrg * LintLibraryTarget (libname,srclist) 15411d341caSmrg * NormalLintTarget (srclist) 15511d341caSmrg * LintTarget () 15611d341caSmrg * LinkSourceFile (src,dir) 15711d341caSmrg * LinkFile (tofile,fromfile) 15811d341caSmrg * MakeSubincludesForBuild (step,dir,srclist) 15911d341caSmrg * LangNamedTargetSubdirs (lang,name,dirs,verb,flags,subname) 16011d341caSmrg * LangNamedMakeSubdirs (lang,name,dirs) 16111d341caSmrg * LangMakeSubdirs (lang,dirs) 16211d341caSmrg * NamedTargetSubdirs (name,dirs,verb,flags,subname) 16311d341caSmrg * NamedMakeSubdirs (name,dirs) 16411d341caSmrg * MakeSubdirs (dirs) 16511d341caSmrg * DependSubdirs (dirs) 16611d341caSmrg * ForceSubdirs (dirs) 16711d341caSmrg * InstallSubdirs (dirs) 16811d341caSmrg * InstallManSubdirs (dirs) 16911d341caSmrg * IncludesSubdirs (dirs) 17011d341caSmrg * NamedCleanSubdirs (name,dirs) 17111d341caSmrg * CleanSubdirs (dirs) 17211d341caSmrg * NamedTagSubdirs (name,dirs) 17311d341caSmrg * TagSubdirs (dirs) 17411d341caSmrg * MakeLintSubdirs (dirs,target,subtarget) 17511d341caSmrg * LintSubdirs (dirs) 17611d341caSmrg * MakeLintLibSubdirs (dirs) 17711d341caSmrg * MakeMakeSubdirs (dirs,target) 17811d341caSmrg * MakefileSubdirs (dirs) 17911d341caSmrg * CppScriptTarget (dst,src,defs,deplist) 18011d341caSmrg * MakeScriptFromCpp (name,defs) 18111d341caSmrg * CppFileTarget (dst,src,defs,deplist) 18211d341caSmrg * CppSourceFile (dst,src,defs,deplist) 18311d341caSmrg * MakeDirectories (step,dirs) 18411d341caSmrg * AllTarget (depends) 18511d341caSmrg * StaticLibrary (libpath,libname) 18611d341caSmrg * MakeMutex (targets) 18711d341caSmrg * LinkBuildModule (module,subdir) 18811d341caSmrg * LinkBuildNamedModule (module,name,subdir) 18911d341caSmrg * DynamicModuleTarget (module,modlist) 19011d341caSmrg * InstallDynamicModule (module,dest,subdir) 19111d341caSmrg * InstallDynamicNamedModule (module,instname,dest,subdir) 19211d341caSmrg * LinkerRuntimeLibraryPathFlag (path) 19311d341caSmrg * 19411d341caSmrg * 19511d341caSmrg * The following are in specific <os>Lib.rules: 19611d341caSmrg * 19711d341caSmrg * SharedLibraryTarget (libname,rev,solist,down,up) 19811d341caSmrg * SharedLibraryDataTarget (libname,rev,salist) 19911d341caSmrg * InstallSharedLibrary (libname,rev,dest) 20011d341caSmrg * InstallSharedLibraryData (libname,rev,dest) 20111d341caSmrg * SharedDepModuleTarget (name,deps,solist) 20211d341caSmrg * 20311d341caSmrg */ 20411d341caSmrg 20511d341caSmrg#define NullParameter 20611d341caSmrg 20711d341caSmrg/* if [ -d ] or [ ! -d ] causes make to fail, define this as - */ 20811d341caSmrg#ifndef DirFailPrefix 20911d341caSmrg#define DirFailPrefix 21011d341caSmrg#endif 21111d341caSmrg 21211d341caSmrg/* 21311d341caSmrg * NoCmpScript - suppress clearmake build script comparison. 21411d341caSmrg */ 21511d341caSmrg#ifndef NoCmpScript 21611d341caSmrg#if HasClearmake 21711d341caSmrg#define NoCmpScript(targ) @@\ 21811d341caSmrgXCOMM special target for clearmake @@\ 21911d341caSmrg.NO_CMP_SCRIPT: targ 22011d341caSmrg#else 22111d341caSmrg#define NoCmpScript(targ) /**/ 22211d341caSmrg#endif 22311d341caSmrg#endif 22411d341caSmrg 22511d341caSmrg/* 22611d341caSmrg * NoConfigRec - suppress using clearmake configuration records. 22711d341caSmrg */ 22811d341caSmrg#ifndef NoConfigRec 22911d341caSmrg#if HasClearmake 23011d341caSmrg#define NoConfigRec(targ) @@\ 23111d341caSmrgXCOMM special target for clearmake @@\ 23211d341caSmrg.NO_CONFIG_REC: targ 23311d341caSmrg#else 23411d341caSmrg#define NoConfigRec(targ) /**/ 23511d341caSmrg#endif 23611d341caSmrg#endif 23711d341caSmrg 23811d341caSmrg/* 23911d341caSmrg * Concat - concatenates two strings. 24011d341caSmrg */ 24111d341caSmrg#ifndef Concat 24211d341caSmrg#if (defined(__STDC__) && !defined(UnixCpp)) || defined(AnsiCpp) 24311d341caSmrg#define Concat(a,b)a##b 24411d341caSmrg#else 24511d341caSmrg#define Concat(a,b)a/**/b 24611d341caSmrg#endif 24711d341caSmrg#endif 24811d341caSmrg 24911d341caSmrg/* 25011d341caSmrg * Concat3 - concatenates three strings. 25111d341caSmrg */ 25211d341caSmrg#ifndef Concat3 25311d341caSmrg#if (defined(__STDC__) && !defined(UnixCpp)) || defined(AnsiCpp) 25411d341caSmrg#define Concat3(a,b,c)a##b##c 25511d341caSmrg#else 25611d341caSmrg#define Concat3(a,b,c)a/**/b/**/c 25711d341caSmrg#endif 25811d341caSmrg#endif 25911d341caSmrg 26011d341caSmrg/* 26111d341caSmrg * Concat4 - concatenates four strings. 26211d341caSmrg */ 26311d341caSmrg#ifndef Concat4 26411d341caSmrg#if (defined(__STDC__) && !defined(UnixCpp)) || defined(AnsiCpp) 26511d341caSmrg#define Concat4(a,b,c,d)a##b##c##d 26611d341caSmrg#else 26711d341caSmrg#define Concat4(a,b,c,d)a/**/b/**/c/**/d 26811d341caSmrg#endif 26911d341caSmrg#endif 27011d341caSmrg 27111d341caSmrg/* 27211d341caSmrg * _XUse - makes a choice based on UseInstalledX11. 27311d341caSmrg */ 27411d341caSmrg#ifndef _XUse 27511d341caSmrg# if defined(UseInstalled) || UseInstalledX11 27611d341caSmrg# define _XUse(a,b) a 27711d341caSmrg# else 27811d341caSmrg# define _XUse(a,b) b 27911d341caSmrg# endif 28011d341caSmrg#endif /* _XUse */ 28111d341caSmrg 28211d341caSmrg/* 28311d341caSmrg * _Use - makes a choice based on UseInstalled. 28411d341caSmrg */ 28511d341caSmrg#ifndef _Use 28611d341caSmrg# define _Use _XUse 28711d341caSmrg#endif /* _Use */ 28811d341caSmrg 28911d341caSmrg/* 29011d341caSmrg * _XUseCat - combination of _XUse and Concat. 29111d341caSmrg * exists to avoid problems with some preprocessors 29211d341caSmrg */ 29311d341caSmrg#ifndef _XUseCat 29411d341caSmrg# if (defined(__STDC__) && !defined(UnixCpp)) || defined(AnsiCpp) 29511d341caSmrg# if defined(UseInstalled) || UseInstalledX11 29611d341caSmrg# define _XUseCat(a,b,c) a##c 29711d341caSmrg# else 29811d341caSmrg# define _XUseCat(a,b,c) b##c 29911d341caSmrg# endif 30011d341caSmrg# else 30111d341caSmrg# if defined(UseInstalled) || UseInstalledX11 30211d341caSmrg# define _XUseCat(a,b,c) a/**/c 30311d341caSmrg# else 30411d341caSmrg# define _XUseCat(a,b,c) b/**/c 30511d341caSmrg# endif 30611d341caSmrg# endif 30711d341caSmrg#endif /* _XUseCat */ 30811d341caSmrg 30911d341caSmrg/* 31011d341caSmrg * _UseCat - combination of _Use and Concat. 31111d341caSmrg * exists to avoid problems with some preprocessors 31211d341caSmrg */ 31311d341caSmrg#ifndef _UseCat 31411d341caSmrg# define _UseCat _XUseCat 31511d341caSmrg#endif /* _UseCat */ 31611d341caSmrg 31711d341caSmrg#ifndef ProgramTargetName 31811d341caSmrg#define ProgramTargetName(target)target 31911d341caSmrg#endif 32011d341caSmrg 32111d341caSmrg#ifndef HostProgramTargetName 32211d341caSmrg#define HostProgramTargetName(target)target 32311d341caSmrg#endif 32411d341caSmrg 32511d341caSmrg#ifndef RunProgram 32611d341caSmrg#define RunProgram(progvar,options) $(progvar) options 32711d341caSmrg#endif 32811d341caSmrg 32911d341caSmrg#ifndef RunProgramWithSetup 33011d341caSmrg#define RunProgramWithSetup(setup,progvar,options) setup $(progvar) options 33111d341caSmrg#endif 33211d341caSmrg 33311d341caSmrg#ifndef RunPerlScript 33411d341caSmrg#define RunPerlScript(script,options) $(PERLENVSETUP) $(PERL) $(PERLOPTS) script options 33511d341caSmrg#endif 33611d341caSmrg 33711d341caSmrg#ifndef RemoveFile 33811d341caSmrg#define RemoveFile(file) $(RM) file 33911d341caSmrg#endif /* RemoveFile */ 34011d341caSmrg 34111d341caSmrg#ifndef RemoveFiles 34211d341caSmrg#define RemoveFiles(files) $(RM) files 34311d341caSmrg#endif /* RemoveFiles */ 34411d341caSmrg 34511d341caSmrg#if RemoveObsoleteFiles 34611d341caSmrg#define RemoveOldFile(new,old,dir) @@\ 34711d341caSmrg @if [ -f new ]; then set -x; \ @@\ 34811d341caSmrg RemoveFile($(DESTDIR)dir/old); \ @@\ 34911d341caSmrg fi 35011d341caSmrg#else 35111d341caSmrg#define RemoveOldFile(new,old,dir) $(_NULLCMD_) 35211d341caSmrg#endif 35311d341caSmrg 35411d341caSmrg/* 35511d341caSmrg * CenterLoadTarget - generate rules to load files into CodeCenter 35611d341caSmrg */ 35711d341caSmrg#ifndef CenterLoadTarget 35811d341caSmrg#if HasCodeCenter 35911d341caSmrg#define CenterLoadTarget(target,srclist,libs,defines) @@\ 36011d341caSmrgProgramTargetName(target):: srclist @@\ 36111d341caSmrg XCOMM load defines srclist libs 36211d341caSmrg#else 36311d341caSmrg#define CenterLoadTarget(target,srclist,libs,defines) /**/ 36411d341caSmrg#endif 36511d341caSmrg#endif /* CenterLoadTarget */ 36611d341caSmrg 36711d341caSmrg/* 36811d341caSmrg * CenterProgramTarget - generate rules to make CodeCenter read in sources 36911d341caSmrg * and objects. 37011d341caSmrg */ 37111d341caSmrg#ifndef CenterProgramTarget 37211d341caSmrg#define CenterProgramTarget(program,srclist,objlist,locallibs,syslibs) @@\ 37311d341caSmrgCenterLoadTarget(Concat(debug_,program),srclist,$(EXTRA_LDOPTIONS) $(LOCAL_LDFLAGS) $(LDPRELIBS) locallibs $(LDLIBS) syslibs,$(ALLDEFINES)) @@\ 37411d341caSmrg @@\ 37511d341caSmrgCenterLoadTarget(Concat(odebug_,program),objlist,$(EXTRA_LDOPTIONS) $(LOCAL_LDFLAGS) $(LDPRELIBS) locallibs $(LDLIBS) syslibs,$(ALLDEFINES)) 37611d341caSmrg#endif /* CenterProgramTarget */ 37711d341caSmrg 37811d341caSmrg#ifndef SentinelLinkTarget 37911d341caSmrg#if HasSentinel 38011d341caSmrg#define SentinelLinkTarget(step,program,linklist) @@\ 38111d341caSmrgProgramTargetName(step.sentinel): @@\ 38211d341caSmrg RemoveTargetProgram($@) @@\ 38311d341caSmrg $(CCENVSETUP) $(SENTINEL) $(SENTINELOPTIONS) $(CC) -o program.sentinel $(LDOPTIONS) linklist $(EXTRA_LOAD_FLAGS) 38411d341caSmrg#else 38511d341caSmrg#define SentinelLinkTarget(step,program,linklist) /**/ 38611d341caSmrg#endif 38711d341caSmrg#endif /* SentinelLinkTarget */ 38811d341caSmrg 38911d341caSmrg/* 39011d341caSmrg * SentinelProgramTarget - generate rules to make Sentinel image 39111d341caSmrg */ 39211d341caSmrg#ifndef SentinelProgramTarget 39311d341caSmrg#if HasSentinel 39411d341caSmrg#define SentinelProgramTarget(program,deplist,linklist) @@\ 39511d341caSmrgProgramTargetName(program.sentinel): deplist @@\ 39611d341caSmrg RemoveTargetProgram($@) @@\ 39711d341caSmrg $(CCENVSETUP) $(SENTINEL) $(SENTINELOPTIONS) $(CC) -o $@ $(LDOPTIONS) linklist $(EXTRA_LOAD_FLAGS) @@\ 39811d341caSmrg @@\ 39911d341caSmrgclean clean.sentinel:: @@\ 40011d341caSmrg RemoveFile(program.sentinel) 40111d341caSmrg#else 40211d341caSmrg#define SentinelProgramTarget(program,deplist,linklist) /**/ 40311d341caSmrg#endif 40411d341caSmrg#endif /* SentinelProgramTarget */ 40511d341caSmrg 40611d341caSmrg/* 40711d341caSmrg * SentinelCplusplusProgramTarget - generate rules to make Sentinel image 40811d341caSmrg */ 40911d341caSmrg#ifndef SentinelCplusplusProgramTarget 41011d341caSmrg#if HasSentinel 41111d341caSmrg#define SentinelCplusplusProgramTarget(program,deplist,linklist) @@\ 41211d341caSmrgProgramTargetName(program.sentinel): deplist @@\ 41311d341caSmrg RemoveTargetProgram($@) @@\ 41411d341caSmrg $(CXXENVSETUP) $(SENTINEL) $(SENTINELOPTIONS) $(CXX) -o $@ $(CXXLDOPTIONS) linklist $(EXTRA_LOAD_FLAGS) @@\ 41511d341caSmrg @@\ 41611d341caSmrgclean clean.sentinel:: @@\ 41711d341caSmrg RemoveFile(program.sentinel) 41811d341caSmrg#else 41911d341caSmrg#define SentinelCplusplusProgramTarget(program,deplist,linklist) /**/ 42011d341caSmrg#endif 42111d341caSmrg#endif /* SentinelCplusplusProgramTarget */ 42211d341caSmrg 42311d341caSmrg#ifndef PurifyLinkTarget 42411d341caSmrg#if HasPurify 42511d341caSmrg#define PurifyLinkTarget(step,program,linklist) @@\ 42611d341caSmrgProgramTargetName(step.pure): @@\ 42711d341caSmrg RemoveTargetProgram($@) @@\ 42811d341caSmrg $(CCENVSETUP) $(PURIFY) $(PURIFYOPTIONS) $(CC) -o program.pure $(LDOPTIONS) linklist $(EXTRA_LOAD_FLAGS) 42911d341caSmrg#else 43011d341caSmrg#define PurifyLinkTarget(step,program,linklist) /**/ 43111d341caSmrg#endif 43211d341caSmrg#endif /* PurifyLinkTarget */ 43311d341caSmrg 43411d341caSmrg/* 43511d341caSmrg * PurifyProgramTarget - generate rules to make Purify'ed image 43611d341caSmrg */ 43711d341caSmrg#ifndef PurifyProgramTarget 43811d341caSmrg#if HasPurify 43911d341caSmrg#define PurifyProgramTarget(program,deplist,linklist) @@\ 44011d341caSmrgProgramTargetName(program.pure): deplist @@\ 44111d341caSmrg RemoveTargetProgram($@) @@\ 44211d341caSmrg $(CCENVSETUP) $(PURIFY) $(PURIFYOPTIONS) $(CC) -o $@ $(LDOPTIONS) linklist $(EXTRA_LOAD_FLAGS) @@\ 44311d341caSmrg @@\ 44411d341caSmrgclean clean.pure:: @@\ 44511d341caSmrg RemoveFile(program.pure) 44611d341caSmrg#else 44711d341caSmrg#define PurifyProgramTarget(program,deplist,linklist) /**/ 44811d341caSmrg#endif 44911d341caSmrg#endif /* PurifyProgramTarget */ 45011d341caSmrg 45111d341caSmrg/* 45211d341caSmrg * PurifyCplusplusProgramTarget - generate rules to make Purify'ed image 45311d341caSmrg */ 45411d341caSmrg#ifndef PurifyCplusplusProgramTarget 45511d341caSmrg#if HasPurify 45611d341caSmrg#define PurifyCplusplusProgramTarget(program,deplist,linklist) @@\ 45711d341caSmrgProgramTargetName(program.pure): deplist @@\ 45811d341caSmrg RemoveTargetProgram($@) @@\ 45911d341caSmrg $(CXXENVSETUP) $(PURIFY) $(PURIFYOPTIONS) $(CXX) -o $@ $(CXXLDOPTIONS) linklist $(EXTRA_LOAD_FLAGS) @@\ 46011d341caSmrg @@\ 46111d341caSmrgclean clean.pure:: @@\ 46211d341caSmrg RemoveFile(program.pure) 46311d341caSmrg#else 46411d341caSmrg#define PurifyCplusplusProgramTarget(program,deplist,linklist) /**/ 46511d341caSmrg#endif 46611d341caSmrg#endif /* PurifyCplusplusProgramTarget */ 46711d341caSmrg 46811d341caSmrg#ifndef ProofLinkTarget 46911d341caSmrg#if HasTestCenter 47011d341caSmrg#define ProofLinkTarget(step,program,linklist) @@\ 47111d341caSmrgProgramTargetName(step.tc): @@\ 47211d341caSmrg RemoveTargetProgram($@) @@\ 47311d341caSmrg $(CCENVSETUP) $(PROOF) $(PROOFOPTIONS) $(CC) -o program.tc $(LDOPTIONS) linklist $(EXTRA_LOAD_FLAGS) 47411d341caSmrg#else 47511d341caSmrg#define ProofLinkTarget(step,program,linklist) /**/ 47611d341caSmrg#endif 47711d341caSmrg#endif /* ProofLinkTarget */ 47811d341caSmrg 47911d341caSmrg/* 48011d341caSmrg * ProofProgramTarget - generate rules to make Proof'ed image 48111d341caSmrg */ 48211d341caSmrg#ifndef ProofProgramTarget 48311d341caSmrg#if HasTestCenter 48411d341caSmrg#define ProofProgramTarget(program,deplist,linklist) @@\ 48511d341caSmrgProgramTargetName(program.tc): deplist @@\ 48611d341caSmrg RemoveTargetProgram($@) @@\ 48711d341caSmrg $(CCENVSETUP) $(PROOF) $(PROOFOPTIONS) $(CC) -o $@ $(LDOPTIONS) linklist $(EXTRA_LOAD_FLAGS) @@\ 48811d341caSmrg @@\ 48911d341caSmrgclean cleantc:: @@\ 49011d341caSmrg RemoveFiles(program.tc program.tc.*.*) 49111d341caSmrg#else 49211d341caSmrg#define ProofProgramTarget(program,deplist,linklist) /**/ 49311d341caSmrg#endif 49411d341caSmrg#endif /* ProofProgramTarget */ 49511d341caSmrg 49611d341caSmrg/* 49711d341caSmrg * ProofCplusplusProgramTarget - generate rules to make Proof'ed image 49811d341caSmrg */ 49911d341caSmrg#ifndef ProofCplusplusProgramTarget 50011d341caSmrg#if HasTestCenter 50111d341caSmrg#define ProofCplusplusProgramTarget(program,deplist,linklist) @@\ 50211d341caSmrgProgramTargetName(program.tc): deplist @@\ 50311d341caSmrg RemoveTargetProgram($@) @@\ 50411d341caSmrg $(CXXENVSETUP) $(PROOF) $(PROOFOPTIONS) $(CXX) -o $@ $(CXXLDOPTIONS) linklist $(EXTRA_LOAD_FLAGS) @@\ 50511d341caSmrg @@\ 50611d341caSmrgclean cleantc:: @@\ 50711d341caSmrg RemoveFiles(program.tc program.tc.*.*) 50811d341caSmrg#else 50911d341caSmrg#define ProofCplusplusProgramTarget(program,deplist,linklist) /**/ 51011d341caSmrg#endif 51111d341caSmrg#endif /* ProofCplusplusProgramTarget */ 51211d341caSmrg 51311d341caSmrg#ifndef ProofCleanTarget 51411d341caSmrg#if HasTestCenter 51511d341caSmrg#define ProofCleanTarget() @@\ 51611d341caSmrgclean cleantc:: @@\ 51711d341caSmrg $(RM) -r TC.Cache 51811d341caSmrg#else 51911d341caSmrg#define ProofCleanTarget() /**/ 52011d341caSmrg#endif 52111d341caSmrg#endif /* ProofCleanTarget */ 52211d341caSmrg 52311d341caSmrg#ifndef RemoveTargetProgram 52411d341caSmrg#if RemoveTargetProgramByMoving 52511d341caSmrg#define RemoveTargetProgram(program) \ 52611d341caSmrg-if [ -f program ]; then RemoveFile(Concat(program,~)); $(MV) program Concat(program,~); fi 52711d341caSmrg#else 52811d341caSmrg#define RemoveTargetProgram(program) RemoveFile(program) 52911d341caSmrg#endif 53011d341caSmrg#endif /* RemoveTargetProgram */ 53111d341caSmrg 53211d341caSmrg#ifndef MakeDir 53311d341caSmrg#define MakeDir(dir) DirFailPrefix@if [ -d dir ]; then \ @@\ 53411d341caSmrg set +x; \ @@\ 53511d341caSmrg else \ @@\ 53611d341caSmrg if [ -h dir ]; then \ @@\ 53711d341caSmrg (set -x; rm -f dir); \ @@\ 53811d341caSmrg fi; \ @@\ 53911d341caSmrg (set -x; $(MKDIRHIER) dir); \ @@\ 54011d341caSmrg fi 54111d341caSmrg#endif /* MakeDir */ 54211d341caSmrg 54311d341caSmrg#ifndef MakeDirInline 54411d341caSmrg#define MakeDirInline(dir) if [ -d dir ]; then \ @@\ 54511d341caSmrg :; \ @@\ 54611d341caSmrg else \ @@\ 54711d341caSmrg if [ -h dir ]; then \ @@\ 54811d341caSmrg (set -x; rm -f dir); \ @@\ 54911d341caSmrg fi; \ @@\ 55011d341caSmrg (set -x; $(MKDIRHIER) dir); \ @@\ 55111d341caSmrg fi 55211d341caSmrg#endif /* MakeDirInline */ 55311d341caSmrg 55411d341caSmrg#ifndef InstallDirectory 55511d341caSmrg#define InstallDirectory(dir) @@\ 55611d341caSmrginstall:: @@\ 55711d341caSmrg MakeDir(dir) 55811d341caSmrg#endif /* InstallDirectory */ 55911d341caSmrg 56011d341caSmrg#ifndef InstallCreateLink 56111d341caSmrg# define InstallCreateLink(dest,from,to) @@\ 56211d341caSmrginstall:: @@\ 56311d341caSmrg cd $(DESTDIR)dest && \ @@\ 56411d341caSmrg $(LN) -sf from to 56511d341caSmrg#endif 56611d341caSmrg 56711d341caSmrg#ifndef BuildIncludesTop 56811d341caSmrg#define BuildIncludesTop(srclist) @@\ 56911d341caSmrgincludes:: srclist @@\ 57011d341caSmrg MakeDir($(BUILDINCDIR)) @@\ 57111d341caSmrg @(set -x; cd $(BUILDINCDIR) && for i in srclist; do \ @@\ 57211d341caSmrg RemoveFile($$i); \ @@\ 57311d341caSmrg $(LN) $(BUILDINCTOP)/$(CURRENT_DIR)/$$i .; \ @@\ 57411d341caSmrg done) 57511d341caSmrg#endif /* BuildIncludesTop */ 57611d341caSmrg 57711d341caSmrg#ifndef BuildIncludes 57811d341caSmrg#define BuildIncludes(srclist,dstsubdir,dstupdir) @@\ 57911d341caSmrgincludes:: srclist @@\ 58011d341caSmrg MakeDir($(BUILDINCDIR)/dstsubdir) @@\ 58111d341caSmrg @(set -x; cd $(BUILDINCDIR)/dstsubdir && for i in srclist; do \ @@\ 58211d341caSmrg RemoveFile($$i); \ @@\ 58311d341caSmrg $(LN) $(BUILDINCTOP)/dstupdir/$(CURRENT_DIR)/$$i .; \ @@\ 58411d341caSmrg done) 58511d341caSmrg#endif /* BuildIncludes */ 58611d341caSmrg 58711d341caSmrg/* 58811d341caSmrg * LinkBuildBinary - export a binary from the build tree. 58911d341caSmrg */ 59011d341caSmrg#ifndef LinkBuildBinary 59111d341caSmrg#define LinkBuildBinary(binary) @@\ 59211d341caSmrgall:: $(BUILDBINDIR)/binary binary @@\ 59311d341caSmrg @@\ 59411d341caSmrg$(BUILDBINDIR)/binary: binary @@\ 59511d341caSmrg MakeDir($(BUILDBINDIR)) @@\ 59611d341caSmrg RemoveFile($@) @@\ 59711d341caSmrg cd $(BUILDBINDIR) && $(LN) $(BUILDBINTOP)/$(CURRENT_DIR)/binary . 59811d341caSmrg#endif /* LinkBuildBinary */ 59911d341caSmrg 60011d341caSmrg#ifndef BuildInterfaces 60111d341caSmrg#define BuildInterfaces(srclist,dstsubdir,dstupdir) @@\ 60211d341caSmrginterfaces:: @@\ 60311d341caSmrg MakeDir($(BUILDINCDIR)/dstsubdir) @@\ 60411d341caSmrg @(set -x; cd $(BUILDINCDIR)/dstsubdir && for i in srclist; do \ @@\ 60511d341caSmrg RemoveFile($$i); \ @@\ 60611d341caSmrg $(LN) $(BUILDINCTOP)/dstupdir/$(CURRENT_DIR)/$$i .; \ @@\ 60711d341caSmrg done) 60811d341caSmrg#endif /* BuildInterfaces */ 60911d341caSmrg 61011d341caSmrg/* 61111d341caSmrg * LinkRule - link a program 61211d341caSmrg */ 61311d341caSmrg#ifndef LinkRule 61411d341caSmrg#define LinkRule(program,options,objects,libraries) \ 61511d341caSmrg$(CCLINK) -o program options objects libraries $(EXTRA_LOAD_FLAGS) 61611d341caSmrg#endif /* LinkRule */ 61711d341caSmrg 61811d341caSmrg/* 61911d341caSmrg * HostLinkRule - link a utility to be used on the build host 62011d341caSmrg * (differs from LinkRule if cross compiling) 62111d341caSmrg */ 62211d341caSmrg#ifndef HostLinkRule 62311d341caSmrg#define HostLinkRule LinkRule 62411d341caSmrg#endif 62511d341caSmrg 62611d341caSmrg#ifndef CplusplusLinkRule 62711d341caSmrg#define CplusplusLinkRule(program,options,objects,libraries) \ 62811d341caSmrg$(CXXLINK) -o program options objects libraries $(EXTRA_LOAD_FLAGS) 62911d341caSmrg#endif /* CplusplusLinkRule */ 63011d341caSmrg 63111d341caSmrg/* 63211d341caSmrg * NormalProgramTarget - generate rules to compile and link the indicated 63311d341caSmrg * program; since it does not use any default object files, it may be used for 63411d341caSmrg * multiple programs in the same Imakefile. 63511d341caSmrg */ 63611d341caSmrg#ifndef NormalProgramTarget 63711d341caSmrg#define NormalProgramTarget(program,objects,deplibs,locallibs,syslibs) @@\ 63811d341caSmrgProgramTargetName(program): objects deplibs @@\ 63911d341caSmrg RemoveTargetProgram($@) @@\ 64011d341caSmrg LinkRule($@,$(LDOPTIONS),objects,locallibs $(LDLIBS) syslibs) @@\ 64111d341caSmrg @@\ 64211d341caSmrgSentinelProgramTarget(program,objects deplibs,objects locallibs $(LDLIBS) syslibs) @@\ 64311d341caSmrgPurifyProgramTarget(program,objects deplibs,objects locallibs $(LDLIBS) syslibs) @@\ 64411d341caSmrgProofProgramTarget(program,objects deplibs,objects locallibs $(LDLIBS) syslibs) @@\ 64511d341caSmrg @@\ 64611d341caSmrgclean:: @@\ 64711d341caSmrg RemoveFile(ProgramTargetName(program)) 64811d341caSmrg#endif /* NormalProgramTarget */ 64911d341caSmrg 65011d341caSmrg 65111d341caSmrg/* 65211d341caSmrg * NormalCplusplusProgramTarget - Like NormalTargetProgram, but uses 65311d341caSmrg * C++ linking rules. 65411d341caSmrg */ 65511d341caSmrg#ifndef NormalCplusplusProgramTarget 65611d341caSmrg#define NormalCplusplusProgramTarget(program,objects,deplibs,locallibs,syslibs) @@\ 65711d341caSmrgProgramTargetName(program): objects deplibs @@\ 65811d341caSmrg RemoveTargetProgram($@) @@\ 65911d341caSmrg CplusplusLinkRule($@,$(CXXLDOPTIONS),objects,locallibs $(LDLIBS) syslibs) @@\ 66011d341caSmrg @@\ 66111d341caSmrgSentinelCplusplusProgramTarget(program,objects deplibs,objects locallibs $(LDLIBS) syslibs) @@\ 66211d341caSmrgPurifyCplusplusProgramTarget(program,objects deplibs,objects locallibs $(LDLIBS) syslibs) @@\ 66311d341caSmrgProofCplusplusProgramTarget(program,objects deplibs,objects locallibs $(LDLIBS) syslibs) @@\ 66411d341caSmrg @@\ 66511d341caSmrgclean:: @@\ 66611d341caSmrg RemoveFile(ProgramTargetName(program)) 66711d341caSmrg#endif /* NormalCplusplusProgramTarget */ 66811d341caSmrg 66911d341caSmrg 67011d341caSmrg#ifndef SetUIDProgramTarget 67111d341caSmrg#define SetUIDProgramTarget NormalProgramTarget 67211d341caSmrg#endif 67311d341caSmrg 67411d341caSmrg 67511d341caSmrg/* 67611d341caSmrg * SingleProgramTarget - obsolete version of NormalProgramTarget that does 67711d341caSmrg * not have deplibs. 67811d341caSmrg */ 67911d341caSmrg#ifndef SingleProgramTarget 68011d341caSmrg#define SingleProgramTarget(program,objects,locallibs,syslibs) @@\ 68111d341caSmrgNormalProgramTarget(program,objects,NullParameter,locallibs,syslibs) 68211d341caSmrg#endif /* SingleProgramTarget */ 68311d341caSmrg 68411d341caSmrg/* 68511d341caSmrg * SimpleProgramTarget - generate rules for compiling and linking programs 68611d341caSmrg * that only have one C source file. It should only be used in Imakefiles 68711d341caSmrg * that describe a single program. 68811d341caSmrg */ 68911d341caSmrg#ifndef SimpleProgramTarget 69011d341caSmrg#define SimpleProgramTarget(program) @@\ 69111d341caSmrg OBJS = program.o @@\ 69211d341caSmrg SRCS = program.c @@\ 69311d341caSmrg @@\ 69411d341caSmrgComplexProgramTarget(program) 69511d341caSmrg#endif /* SimpleProgramTarget */ 69611d341caSmrg 69711d341caSmrg#ifndef SimpleProgramTarget_1 69811d341caSmrg#define SimpleProgramTarget_1(program) @@\ 69911d341caSmrg OBJS1 = program.o @@\ 70011d341caSmrg SRCS1 = program.c @@\ 70111d341caSmrg @@\ 70211d341caSmrgComplexProgramTarget_1(program,$(LOCAL_LIBRARIES),NullParameter) 70311d341caSmrg#endif /* SimpleProgramTarget_1 */ 70411d341caSmrg#ifndef SimpleProgramTarget_2 70511d341caSmrg#define SimpleProgramTarget_2(program) @@\ 70611d341caSmrg OBJS2 = program.o @@\ 70711d341caSmrg SRCS2 = program.c @@\ 70811d341caSmrg @@\ 70911d341caSmrgComplexProgramTarget_2(program,$(LOCAL_LIBRARIES),NullParameter) 71011d341caSmrg#endif /* SimpleProgramTarget_2 */ 71111d341caSmrg#ifndef SimpleProgramTarget_3 71211d341caSmrg#define SimpleProgramTarget_3(program) @@\ 71311d341caSmrg OBJS3 = program.o @@\ 71411d341caSmrg SRCS3 = program.c @@\ 71511d341caSmrg @@\ 71611d341caSmrgComplexProgramTarget_3(program,$(LOCAL_LIBRARIES),NullParameter) 71711d341caSmrg#endif /* SimpleProgramTarget_3 */ 71811d341caSmrg#ifndef SimpleProgramTarget_4 71911d341caSmrg#define SimpleProgramTarget_4(program) @@\ 72011d341caSmrg OBJS4 = program.o @@\ 72111d341caSmrg SRCS4 = program.c @@\ 72211d341caSmrg @@\ 72311d341caSmrgComplexProgramTarget_4(program,$(LOCAL_LIBRARIES),NullParameter) 72411d341caSmrg#endif /* SimpleProgramTarget_4 */ 72511d341caSmrg#ifndef SimpleProgramTarget_5 72611d341caSmrg#define SimpleProgramTarget_5(program) @@\ 72711d341caSmrg OBJS5 = program.o @@\ 72811d341caSmrg SRCS5 = program.c @@\ 72911d341caSmrg @@\ 73011d341caSmrgComplexProgramTarget_5(program,$(LOCAL_LIBRARIES),NullParameter) 73111d341caSmrg#endif /* SimpleProgramTarget_5 */ 73211d341caSmrg#ifndef SimpleProgramTarget_6 73311d341caSmrg#define SimpleProgramTarget_6(program) @@\ 73411d341caSmrg OBJS6 = program.o @@\ 73511d341caSmrg SRCS6 = program.c @@\ 73611d341caSmrg @@\ 73711d341caSmrgComplexProgramTarget_6(program,$(LOCAL_LIBRARIES),NullParameter) 73811d341caSmrg#endif /* SimpleProgramTarget_6 */ 73911d341caSmrg#ifndef SimpleProgramTarget_7 74011d341caSmrg#define SimpleProgramTarget_7(program) @@\ 74111d341caSmrg OBJS7 = program.o @@\ 74211d341caSmrg SRCS7 = program.c @@\ 74311d341caSmrg @@\ 74411d341caSmrgComplexProgramTarget_7(program,$(LOCAL_LIBRARIES),NullParameter) 74511d341caSmrg#endif /* SimpleProgramTarget_7 */ 74611d341caSmrg#ifndef SimpleProgramTarget_8 74711d341caSmrg#define SimpleProgramTarget_8(program) @@\ 74811d341caSmrg OBJS8 = program.o @@\ 74911d341caSmrg SRCS8 = program.c @@\ 75011d341caSmrg @@\ 75111d341caSmrgComplexProgramTarget_8(program,$(LOCAL_LIBRARIES),NullParameter) 75211d341caSmrg#endif /* SimpleProgramTarget_8 */ 75311d341caSmrg#ifndef SimpleProgramTarget_9 75411d341caSmrg#define SimpleProgramTarget_9(program) @@\ 75511d341caSmrg OBJS9 = program.o @@\ 75611d341caSmrg SRCS9 = program.c @@\ 75711d341caSmrg @@\ 75811d341caSmrgComplexProgramTarget_9(program,$(LOCAL_LIBRARIES),NullParameter) 75911d341caSmrg#endif /* SimpleProgramTarget_9 */ 76011d341caSmrg#ifndef SimpleProgramTarget_10 76111d341caSmrg#define SimpleProgramTarget_10(program) @@\ 76211d341caSmrg OBJS10 = program.o @@\ 76311d341caSmrg SRCS10 = program.c @@\ 76411d341caSmrg @@\ 76511d341caSmrgComplexProgramTarget_10(program,$(LOCAL_LIBRARIES),NullParameter) 76611d341caSmrg#endif /* SimpleProgramTarget_10 */ 76711d341caSmrg 76811d341caSmrg#ifndef SimpleCplusplusProgramTarget 76911d341caSmrg#define SimpleCplusplusProgramTarget(program) @@\ 77011d341caSmrg OBJS = program.o @@\ 77111d341caSmrg SRCS = program.CCsuf @@\ 77211d341caSmrg @@\ 77311d341caSmrgComplexCplusplusProgramTarget(program) 77411d341caSmrg#endif /* SimpleCplusplusProgramTarget */ 77511d341caSmrg 77611d341caSmrg#ifndef ProgramTargetHelper 77711d341caSmrg#define ProgramTargetHelper(program,srcs,objs,deplib,locallib,syslib) @@\ 77811d341caSmrgProgramTargetName(program): $(objs) $(deplib) @@\ 77911d341caSmrg RemoveTargetProgram($@) @@\ 78011d341caSmrg LinkRule($@,$(LDOPTIONS),$(objs),locallib $(LDLIBS) syslib) @@\ 78111d341caSmrg @@\ 78211d341caSmrgCenterProgramTarget(program,$(srcs),$(objs),locallib,syslib) @@\ 78311d341caSmrgSentinelProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\ 78411d341caSmrgPurifyProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\ 78511d341caSmrgProofProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\ 78611d341caSmrg @@\ 78711d341caSmrgInstallProgram(program,$(BINDIR)) @@\ 78811d341caSmrgInstallManPage(program,$(MANDIR)) 78911d341caSmrg#endif /* ProgramTargetHelper */ 79011d341caSmrg 79111d341caSmrg#ifndef ProgramTargetHelperNoMan 79211d341caSmrg#define ProgramTargetHelperNoMan(program,srcs,objs,deplib,locallib,syslib) @@\ 79311d341caSmrgProgramTargetName(program): $(objs) $(deplib) @@\ 79411d341caSmrg RemoveTargetProgram($@) @@\ 79511d341caSmrg LinkRule($@,$(LDOPTIONS),$(objs),locallib $(LDLIBS) syslib) @@\ 79611d341caSmrg @@\ 79711d341caSmrgCenterProgramTarget(program,$(srcs),$(objs),locallib,syslib) @@\ 79811d341caSmrgSentinelProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\ 79911d341caSmrgPurifyProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\ 80011d341caSmrgProofProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\ 80111d341caSmrg @@\ 80211d341caSmrgInstallProgram(program,$(BINDIR)) 80311d341caSmrg#endif /* ProgramTargetHelperNoMan */ 80411d341caSmrg 80511d341caSmrg#ifndef CplusplusProgramTargetHelper 80611d341caSmrg#define CplusplusProgramTargetHelper(program,srcs,objs,deplib,locallib,syslib) @@\ 80711d341caSmrgProgramTargetName(program): $(objs) $(deplib) @@\ 80811d341caSmrg RemoveTargetProgram($@) @@\ 80911d341caSmrg CplusplusLinkRule($@,$(CXXLDOPTIONS),$(objs),locallib $(LDLIBS) syslib) @@\ 81011d341caSmrg @@\ 81111d341caSmrgCenterProgramTarget(program,$(srcs),$(objs),locallib,syslib) @@\ 81211d341caSmrgSentinelCplusplusProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\ 81311d341caSmrgPurifyCplusplusProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\ 81411d341caSmrgProofCplusplusProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\ 81511d341caSmrg @@\ 81611d341caSmrgInstallProgram(program,$(BINDIR)) @@\ 81711d341caSmrgInstallManPage(program,$(MANDIR)) 81811d341caSmrg#endif /* CplusplusProgramTargetHelper */ 81911d341caSmrg 82011d341caSmrg#ifndef CplusplusProgramTargetHelperNoMan 82111d341caSmrg#define CplusplusProgramTargetHelperNoMan(program,srcs,objs,deplib,locallib,syslib) @@\ 82211d341caSmrgProgramTargetName(program): $(objs) $(deplib) @@\ 82311d341caSmrg RemoveTargetProgram($@) @@\ 82411d341caSmrg CplusplusLinkRule($@,$(CXXLDOPTIONS),$(objs),locallib $(LDLIBS) syslib) @@\ 82511d341caSmrg @@\ 82611d341caSmrgCenterProgramTarget(program,$(srcs),$(objs),locallib,syslib) @@\ 82711d341caSmrgSentinelCplusplusProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\ 82811d341caSmrgPurifyCplusplusProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\ 82911d341caSmrgProofCplusplusProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\ 83011d341caSmrg @@\ 83111d341caSmrgInstallProgram(program,$(BINDIR)) @@ 83211d341caSmrg#endif /* CplusplusProgramTargetHelperNoMan */ 83311d341caSmrg 83411d341caSmrg/* 83511d341caSmrg * ComplexProgramTarget - generate rules for compiling and linking the 83611d341caSmrg * program specified by $(OBJS) and $(SRCS), installing the program and its 83711d341caSmrg * man page, and generating dependencies. It should only be used in 83811d341caSmrg * Imakefiles that describe a single program. 83911d341caSmrg */ 84011d341caSmrg#ifndef ComplexProgramTarget 84111d341caSmrg#define ComplexProgramTarget(program) @@\ 84211d341caSmrg PROGRAM = ProgramTargetName(program) @@\ 84311d341caSmrg @@\ 84411d341caSmrgAllTarget(ProgramTargetName(program)) @@\ 84511d341caSmrg @@\ 84611d341caSmrgProgramTargetHelper(program,SRCS,OBJS,DEPLIBS,$(LOCAL_LIBRARIES),NullParameter) @@\ 84711d341caSmrg @@\ 84811d341caSmrgDependTarget() @@\ 84911d341caSmrgLintTarget() @@\ 85011d341caSmrg @@\ 85111d341caSmrgclean:: @@\ 85211d341caSmrg RemoveFile(ProgramTargetName(program)) 85311d341caSmrg#endif /* ComplexProgramTarget */ 85411d341caSmrg 85511d341caSmrg#ifndef ComplexCplusplusProgramTarget 85611d341caSmrg#define ComplexCplusplusProgramTarget(program) @@\ 85711d341caSmrg PROGRAM = ProgramTargetName(program) @@\ 85811d341caSmrg @@\ 85911d341caSmrgAllTarget(ProgramTargetName(program)) @@\ 86011d341caSmrg @@\ 86111d341caSmrgCplusplusProgramTargetHelper(program,SRCS,OBJS,DEPLIBS,$(LOCAL_LIBRARIES),NullParameter) @@\ 86211d341caSmrg @@\ 86311d341caSmrgDependTarget() @@\ 86411d341caSmrgLintTarget() @@\ 86511d341caSmrg @@\ 86611d341caSmrgclean:: @@\ 86711d341caSmrg RemoveFile(ProgramTargetName(program)) 86811d341caSmrg#endif /* ComplexCplusplusProgramTarget */ 86911d341caSmrg 87011d341caSmrg/* 87111d341caSmrg * ComplexProgramTargetNoMan - generate rules for compiling and linking 87211d341caSmrg * the program specified by $(OBJS) and $(SRCS), installing the program 87311d341caSmrg * and generating dependencies. It should only be used in Imakefiles 87411d341caSmrg * that describe a single program, and have no manual page. 87511d341caSmrg */ 87611d341caSmrg#ifndef ComplexProgramTargetNoMan 87711d341caSmrg#define ComplexProgramTargetNoMan(program) @@\ 87811d341caSmrg PROGRAM = ProgramTargetName(program) @@\ 87911d341caSmrg @@\ 88011d341caSmrgAllTarget(ProgramTargetName(program)) @@\ 88111d341caSmrg @@\ 88211d341caSmrgProgramTargetHelperNoMan(program,SRCS,OBJS,DEPLIBS,$(LOCAL_LIBRARIES),NullParameter) @@\ 88311d341caSmrg @@\ 88411d341caSmrgDependTarget() @@\ 88511d341caSmrgLintTarget() @@\ 88611d341caSmrg @@\ 88711d341caSmrgclean:: @@\ 88811d341caSmrg RemoveFile(ProgramTargetName(program)) 88911d341caSmrg#endif /* ComplexProgramTargetNoMan */ 89011d341caSmrg 89111d341caSmrg#ifndef ComplexCplusplusProgramTarget 89211d341caSmrg#define ComplexCplusplusProgramTarget(program) @@\ 89311d341caSmrg PROGRAM = program @@\ 89411d341caSmrg @@\ 89511d341caSmrgAllTarget(program) @@\ 89611d341caSmrg @@\ 89711d341caSmrgCplusplusProgramTargetHelperNoMan(program,SRCS,OBJS,DEPLIBS,$(LOCAL_LIBRARIES),NullParameter) @@\ 89811d341caSmrg @@\ 89911d341caSmrgDependTarget() @@\ 90011d341caSmrgLintTarget() @@\ 90111d341caSmrg @@\ 90211d341caSmrgclean:: @@\ 90311d341caSmrg RemoveFile(ProgramTargetName(program)) 90411d341caSmrg#endif /* ComplexCplusplusProgramTarget */ 90511d341caSmrg 90611d341caSmrg/* 90711d341caSmrg * ComplexProgramTarget_1 - generate rules for compiling and linking the 90811d341caSmrg * program specified by $(OBJS1) and $(SRCS1), installing the program and its 90911d341caSmrg * man page, and generating dependencies for it and any programs described 91011d341caSmrg * by $(SRCS2) through $(SRCS10). It should be used to build the primary 91111d341caSmrg * program in Imakefiles that describe multiple programs. 91211d341caSmrg */ 91311d341caSmrg#ifndef ComplexProgramTarget_1 91411d341caSmrg#define ComplexProgramTarget_1(program,locallib,syslib) @@\ 91511d341caSmrg OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) $(OBJS5) \ @@\ 91611d341caSmrg $(OBJS6) $(OBJS7) $(OBJS8) $(OBJS9) $(OBJS10) @@\ 91711d341caSmrg SRCS = $(SRCS1) $(SRCS2) $(SRCS3) $(SRCS4) $(SRCS5) \ @@\ 91811d341caSmrg $(SRCS6) $(SRCS7) $(SRCS8) $(SRCS9) $(SRCS10) @@\ 91911d341caSmrg @@\ 92011d341caSmrgAllTarget($(PROGRAMS)) @@\ 92111d341caSmrg @@\ 92211d341caSmrgProgramTargetHelper(program,SRCS1,OBJS1,DEPLIBS1,locallib,syslib) @@\ 92311d341caSmrg @@\ 92411d341caSmrgDependTarget() @@\ 92511d341caSmrgLintTarget() @@\ 92611d341caSmrg @@\ 92711d341caSmrgclean:: @@\ 92811d341caSmrg RemoveFiles($(PROGRAMS)) 92911d341caSmrg#endif /* ComplexProgramTarget_1 */ 93011d341caSmrg 93111d341caSmrg#ifndef ComplexCplusplusProgramTarget_1 93211d341caSmrg#define ComplexCplusplusProgramTarget_1(program,locallib,syslib) @@\ 93311d341caSmrg OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) $(OBJS5) \ @@\ 93411d341caSmrg $(OBJS6) $(OBJS7) $(OBJS8) $(OBJS9) $(OBJS10) @@\ 93511d341caSmrg SRCS = $(SRCS1) $(SRCS2) $(SRCS3) $(SRCS4) $(SRCS5) \ @@\ 93611d341caSmrg $(SRCS6) $(SRCS7) $(SRCS8) $(SRCS9) $(SRCS10) @@\ 93711d341caSmrg @@\ 93811d341caSmrgAllTarget($(PROGRAMS)) @@\ 93911d341caSmrg @@\ 94011d341caSmrgCplusplusProgramTargetHelper(program,SRCS1,OBJS1,DEPLIBS1,locallib,syslib)@@\ 94111d341caSmrg @@\ 94211d341caSmrgDependTarget() @@\ 94311d341caSmrgLintTarget() @@\ 94411d341caSmrg @@\ 94511d341caSmrgclean:: @@\ 94611d341caSmrg RemoveFiles($(PROGRAMS)) 94711d341caSmrg#endif /* ComplexCplusplusProgramTarget_1 */ 94811d341caSmrg 94911d341caSmrg/* 95011d341caSmrg * ComplexProgramTarget_2 - generate rules for compiling and linking the 95111d341caSmrg * program specified by $(OBJS2) and $(SRCS2) and installing the program and 95211d341caSmrg * man page. It should be used to build the second program in Imakefiles 95311d341caSmrg * describing more than one program. 95411d341caSmrg */ 95511d341caSmrg#ifndef ComplexProgramTarget_2 95611d341caSmrg#define ComplexProgramTarget_2(program,locallib,syslib) @@\ 95711d341caSmrgProgramTargetHelper(program,SRCS2,OBJS2,DEPLIBS2,locallib,syslib) 95811d341caSmrg#endif /* ComplexProgramTarget_2 */ 95911d341caSmrg 96011d341caSmrg#ifndef ComplexCplusplusProgramTarget_2 96111d341caSmrg#define ComplexCplusplusProgramTarget_2(program,locallib,syslib) @@\ 96211d341caSmrgCplusplusProgramTargetHelper(program,SRCS2,OBJS2,DEPLIBS2,locallib,syslib) 96311d341caSmrg#endif /* ComplexCplusplusProgramTarget_2 */ 96411d341caSmrg 96511d341caSmrg/* 96611d341caSmrg * ComplexProgramTarget_3 - generate rules for compiling and linking the 96711d341caSmrg * program specified by $(OBJS3) and $(SRCS3) and installing the program and 96811d341caSmrg * man page. It should be used to build the third program in Imakefiles 96911d341caSmrg * describing more than one program. 97011d341caSmrg */ 97111d341caSmrg#ifndef ComplexProgramTarget_3 97211d341caSmrg#define ComplexProgramTarget_3(program,locallib,syslib) @@\ 97311d341caSmrgProgramTargetHelper(program,SRCS3,OBJS3,DEPLIBS3,locallib,syslib) 97411d341caSmrg#endif /* ComplexProgramTarget_3 */ 97511d341caSmrg 97611d341caSmrg#ifndef ComplexCplusplusProgramTarget_3 97711d341caSmrg#define ComplexCplusplusProgramTarget_3(program,locallib,syslib) @@\ 97811d341caSmrgCplusplusProgramTargetHelper(program,SRCS3,OBJS3,DEPLIBS3,locallib,syslib) 97911d341caSmrg#endif /* ComplexCplusplusProgramTarget_3 */ 98011d341caSmrg 98111d341caSmrg/* 98211d341caSmrg * ComplexProgramTarget_4 - generate rules for compiling and linking the 98311d341caSmrg * program specified by $(OBJS4) and $(SRCS4) and installing the program and 98411d341caSmrg * man page. It should be used to build the third program in Imakefiles 98511d341caSmrg * describing more than one program. 98611d341caSmrg */ 98711d341caSmrg#ifndef ComplexProgramTarget_4 98811d341caSmrg#define ComplexProgramTarget_4(program,locallib,syslib) @@\ 98911d341caSmrgProgramTargetHelper(program,SRCS4,OBJS4,DEPLIBS4,locallib,syslib) 99011d341caSmrg#endif /* ComplexProgramTarget_4 */ 99111d341caSmrg 99211d341caSmrg#ifndef ComplexCplusplusProgramTarget_4 99311d341caSmrg#define ComplexCplusplusProgramTarget_4(program,locallib,syslib) @@\ 99411d341caSmrgCplusplusProgramTargetHelper(program,SRCS4,OBJS4,DEPLIBS4,locallib,syslib) 99511d341caSmrg#endif /* ComplexCplusplusProgramTarget_4 */ 99611d341caSmrg 99711d341caSmrg/* 99811d341caSmrg * ComplexProgramTarget_5 - generate rules for compiling and linking the 99911d341caSmrg * program specified by $(OBJS5) and $(SRCS5) and installing the program and 100011d341caSmrg * man page. It should be used to build the third program in Imakefiles 100111d341caSmrg * describing more than one program. 100211d341caSmrg */ 100311d341caSmrg#ifndef ComplexProgramTarget_5 100411d341caSmrg#define ComplexProgramTarget_5(program,locallib,syslib) @@\ 100511d341caSmrgProgramTargetHelper(program,SRCS5,OBJS5,DEPLIBS5,locallib,syslib) 100611d341caSmrg#endif /* ComplexProgramTarget_5 */ 100711d341caSmrg 100811d341caSmrg#ifndef ComplexCplusplusProgramTarget_5 100911d341caSmrg#define ComplexCplusplusProgramTarget_5(program,locallib,syslib) @@\ 101011d341caSmrgCplusplusProgramTargetHelper(program,SRCS5,OBJS5,DEPLIBS5,locallib,syslib) 101111d341caSmrg#endif /* ComplexCplusplusProgramTarget_5 */ 101211d341caSmrg 101311d341caSmrg/* 101411d341caSmrg * ComplexProgramTarget_6 - generate rules for compiling and linking the 101511d341caSmrg * program specified by $(OBJS6) and $(SRCS6) and installing the program and 101611d341caSmrg * man page. It should be used to build the third program in Imakefiles 101711d341caSmrg * describing more than one program. 101811d341caSmrg */ 101911d341caSmrg#ifndef ComplexProgramTarget_6 102011d341caSmrg#define ComplexProgramTarget_6(program,locallib,syslib) @@\ 102111d341caSmrgProgramTargetHelper(program,SRCS6,OBJS6,DEPLIBS6,locallib,syslib) 102211d341caSmrg#endif /* ComplexProgramTarget_6 */ 102311d341caSmrg 102411d341caSmrg#ifndef ComplexCplusplusProgramTarget_6 102511d341caSmrg#define ComplexCplusplusProgramTarget_6(program,locallib,syslib) @@\ 102611d341caSmrgCplusplusProgramTargetHelper(program,SRCS6,OBJS6,DEPLIBS6,locallib,syslib) 102711d341caSmrg#endif /* ComplexCplusplusProgramTarget_6 */ 102811d341caSmrg 102911d341caSmrg/* 103011d341caSmrg * ComplexProgramTarget_7 - generate rules for compiling and linking the 103111d341caSmrg * program specified by $(OBJS7) and $(SRCS7) and installing the program and 103211d341caSmrg * man page. It should be used to build the third program in Imakefiles 103311d341caSmrg * describing more than one program. 103411d341caSmrg */ 103511d341caSmrg#ifndef ComplexProgramTarget_7 103611d341caSmrg#define ComplexProgramTarget_7(program,locallib,syslib) @@\ 103711d341caSmrgProgramTargetHelper(program,SRCS7,OBJS7,DEPLIBS7,locallib,syslib) 103811d341caSmrg#endif /* ComplexProgramTarget_7 */ 103911d341caSmrg 104011d341caSmrg#ifndef ComplexCplusplusProgramTarget_7 104111d341caSmrg#define ComplexCplusplusProgramTarget_7(program,locallib,syslib) @@\ 104211d341caSmrgCplusplusProgramTargetHelper(program,SRCS7,OBJS7,DEPLIBS7,locallib,syslib) 104311d341caSmrg#endif /* ComplexCplusplusProgramTarget_7 */ 104411d341caSmrg 104511d341caSmrg/* 104611d341caSmrg * ComplexProgramTarget_8 - generate rules for compiling and linking the 104711d341caSmrg * program specified by $(OBJS8) and $(SRCS8) and installing the program and 104811d341caSmrg * man page. It should be used to build the third program in Imakefiles 104911d341caSmrg * describing more than one program. 105011d341caSmrg */ 105111d341caSmrg#ifndef ComplexProgramTarget_8 105211d341caSmrg#define ComplexProgramTarget_8(program,locallib,syslib) @@\ 105311d341caSmrgProgramTargetHelper(program,SRCS8,OBJS8,DEPLIBS8,locallib,syslib) 105411d341caSmrg#endif /* ComplexProgramTarget_8 */ 105511d341caSmrg 105611d341caSmrg#ifndef ComplexCplusplusProgramTarget_8 105711d341caSmrg#define ComplexCplusplusProgramTarget_8(program,locallib,syslib) @@\ 105811d341caSmrgCplusplusProgramTargetHelper(program,SRCS8,OBJS8,DEPLIBS8,locallib,syslib) 105911d341caSmrg#endif /* ComplexCplusplusProgramTarget_8 */ 106011d341caSmrg 106111d341caSmrg/* 106211d341caSmrg * ComplexProgramTarget_9 - generate rules for compiling and linking the 106311d341caSmrg * program specified by $(OBJS9) and $(SRCS9) and installing the program and 106411d341caSmrg * man page. It should be used to build the third program in Imakefiles 106511d341caSmrg * describing more than one program. 106611d341caSmrg */ 106711d341caSmrg#ifndef ComplexProgramTarget_9 106811d341caSmrg#define ComplexProgramTarget_9(program,locallib,syslib) @@\ 106911d341caSmrgProgramTargetHelper(program,SRCS9,OBJS9,DEPLIBS9,locallib,syslib) 107011d341caSmrg#endif /* ComplexProgramTarget_9 */ 107111d341caSmrg 107211d341caSmrg#ifndef ComplexCplusplusProgramTarget_9 107311d341caSmrg#define ComplexCplusplusProgramTarget_9(program,locallib,syslib) @@\ 107411d341caSmrgCplusplusProgramTargetHelper(program,SRCS9,OBJS9,DEPLIBS9,locallib,syslib) 107511d341caSmrg#endif /* ComplexCplusplusProgramTarget_9 */ 107611d341caSmrg 107711d341caSmrg/* 107811d341caSmrg * ComplexProgramTarget_10 - generate rules for compiling and linking the 107911d341caSmrg * program specified by $(OBJS10) and $(SRCS10) and installing the program and 108011d341caSmrg * man page. It should be used to build the third program in Imakefiles 108111d341caSmrg * describing more than one program. 108211d341caSmrg */ 108311d341caSmrg#ifndef ComplexProgramTarget_10 108411d341caSmrg#define ComplexProgramTarget_10(program,locallib,syslib) @@\ 108511d341caSmrgProgramTargetHelper(program,SRCS10,OBJS10,DEPLIBS10,locallib,syslib) 108611d341caSmrg#endif /* ComplexProgramTarget_10 */ 108711d341caSmrg 108811d341caSmrg#ifndef ComplexCplusplusProgramTarget_10 108911d341caSmrg#define ComplexCplusplusProgramTarget_10(program,locallib,syslib) @@\ 109011d341caSmrgCplusplusProgramTargetHelper(program,SRCS10,OBJS10,DEPLIBS10,locallib,syslib) 109111d341caSmrg#endif /* ComplexCplusplusProgramTarget_10 */ 109211d341caSmrg 109311d341caSmrg#ifndef MoveToBakFile 109411d341caSmrg#define MoveToBakFile(file) -@if [ -f file ]; then set -x; \ @@\ 109511d341caSmrg $(MV) file file.bak; else exit 0; fi 109611d341caSmrg#endif /* MoveToBakFile */ 109711d341caSmrg 109811d341caSmrg#ifndef RMoveToBakFile 109911d341caSmrg#define RMoveToBakFile(file) -@if [ -f file ]; then set -x; \ @@\ 110011d341caSmrg RemoveFile(file.bak); $(MV) file file.bak; \ @@\ 110111d341caSmrg else exit 0; fi 110211d341caSmrg#endif /* RMoveToBakFile */ 110311d341caSmrg 110411d341caSmrg/* 110511d341caSmrg * ServerTargetWithFlags - generate rules to compile, link, and relink a server 110611d341caSmrg */ 110711d341caSmrg#ifndef ServerTargetWithFlags 110811d341caSmrg#define ServerTargetWithFlags(server,subdirs,objects,libs,syslibs,flags) @@\ 110911d341caSmrgAllTarget(ProgramTargetName(server)) @@\ 111011d341caSmrgProgramTargetName(server): subdirs objects libs @@\ 111111d341caSmrg MoveToBakFile($@) @@\ 111211d341caSmrg LinkRule($@,$(LDOPTIONS),objects,libs $(LDLIBS) syslibs) @@\ 111311d341caSmrg @@\ 111411d341caSmrgConcat(load,server): @@\ 111511d341caSmrg MoveToBakFile(ProgramTargetName(server)) @@\ 111611d341caSmrg LinkRule(ProgramTargetName(server),$(LDOPTIONS),objects,libs $(LDLIBS) syslibs) @@\ 111711d341caSmrg @@\ 111811d341caSmrgloadX:: Concat(load,server) @@\ 111911d341caSmrg @@\ 112011d341caSmrgSentinelProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\ 112111d341caSmrgSentinelLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\ 112211d341caSmrgPurifyProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\ 112311d341caSmrgPurifyLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\ 112411d341caSmrgProofProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\ 112511d341caSmrgProofLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\ 112611d341caSmrg @@\ 112711d341caSmrgInstallProgramWithFlags(server,$(BINDIR),flags) @@\ 112811d341caSmrg @@\ 112911d341caSmrgclean:: @@\ 113011d341caSmrg RemoveFile(ProgramTargetName(server)) 113111d341caSmrg#endif /* ServerTargetWithFlags */ 113211d341caSmrg 113311d341caSmrg/* 113411d341caSmrg * ServerTarget - rules to compile, link, and relink a normal server 113511d341caSmrg */ 113611d341caSmrg#ifndef ServerTarget 113711d341caSmrg#define ServerTarget(server,subdirs,objects,libs,syslibs) @@\ 113811d341caSmrgServerTargetWithFlags(server,subdirs,objects,libs,syslibs,$(_NOOP_)) 113911d341caSmrg#endif /* ServerTarget */ 114011d341caSmrg 114111d341caSmrg#if DoRanlibCmd 114211d341caSmrg#define RanLibrary(args) $(RANLIB) args 114311d341caSmrg#else 114411d341caSmrg#define RanLibrary(args) $(_NULLCMD_) 114511d341caSmrg#endif 114611d341caSmrg 114711d341caSmrg#ifndef LibraryTargetName 114811d341caSmrg#define LibraryTargetName(libname)Concat(lib,libname.a) 114911d341caSmrg#endif 115011d341caSmrg 115111d341caSmrg/* This rule is used for libs in Xserver/Imakefile which are loaded, not 115211d341caSmrg * linked into the core module. Since modules are called libXXXX.a, 115311d341caSmrg * this rule mustn't be overriden by .cf files. 115411d341caSmrg */ 115511d341caSmrg#ifndef ModuleLibraryTargetName 115611d341caSmrg#define ModuleLibraryTargetName(libname)Concat(lib,libname.a) 115711d341caSmrg#endif 115811d341caSmrg 115911d341caSmrg#ifndef LibraryTargetNameSuffix 116011d341caSmrg#define LibraryTargetNameSuffix(libname,suffix)Concat3(lib,libname,suffix.a) 116111d341caSmrg#endif 116211d341caSmrg 116311d341caSmrg#ifndef InstallNamedInline 116411d341caSmrg#define InstallNamedInline(srcname,flags,dest,dstname) $(INSTALL) $(INSTALLFLAGS) flags srcname $(DESTDIR)dest/dstname 116511d341caSmrg#endif 116611d341caSmrg 116711d341caSmrg#ifndef InstallNamedTarget 116811d341caSmrg#define InstallNamedTarget(step,srcname,flags,dest,dstname) @@\ 116911d341caSmrgstep:: srcname @@\ 117011d341caSmrg MakeDir($(DESTDIR)dest) @@\ 117111d341caSmrg InstallNamedInline(srcname,flags,dest,dstname) 117211d341caSmrg#endif /* InstallNamedTarget */ 117311d341caSmrg 117411d341caSmrg/* 117511d341caSmrg * InstallNamedTargetNoClobber - Like InstallNamedTarget, but doesn't 117611d341caSmrg * do the install if an installed version already exists. Useful 117711d341caSmrg * for files that might have local customizations that you don't 117811d341caSmrg * want to clobber. Config files are good candidates for this. 117911d341caSmrg */ 118011d341caSmrg#ifndef InstallNamedTargetNoClobber 118111d341caSmrg#define InstallNamedTargetNoClobber(step,srcname,flags,dest,dstname) @@\ 118211d341caSmrgstep:: srcname @@\ 118311d341caSmrg MakeDir($(DESTDIR)dest) @@\ 118411d341caSmrg @if [ -f $(DESTDIR)dest/dstname ]; then \ @@\ 118511d341caSmrg echo "Not overwriting existing" $(DESTDIR)dest/dstname; \ @@\ 118611d341caSmrg else set -x; \ @@\ 118711d341caSmrg $(INSTALL) $(INSTALLFLAGS) flags srcname $(DESTDIR)dest/dstname; fi 118811d341caSmrg#endif /* InstallNamedTargetNoClobber */ 118911d341caSmrg 119011d341caSmrg#ifndef InstallTarget 119111d341caSmrg#define InstallTarget(step,file,flags,dest) @@\ 119211d341caSmrgInstallNamedTarget(step,file,flags,dest,file) 119311d341caSmrg#endif /* InstallTarget */ 119411d341caSmrg 119511d341caSmrg#ifndef InstallInline 119611d341caSmrg#define InstallInline(file,flags,dest) InstallNamedInline(file,flags,dest,file) 119711d341caSmrg#endif 119811d341caSmrg 119911d341caSmrg/* 120011d341caSmrg * InstallLibrary - generate rules to install the indicated library. 120111d341caSmrg */ 120211d341caSmrg#ifndef InstallLibrary 120311d341caSmrg#define InstallLibrary(libname,dest) @@\ 120411d341caSmrginstall:: LibraryTargetName(libname) @@\ 120511d341caSmrg MakeDir($(DESTDIR)dest) @@\ 120611d341caSmrg $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) LibraryTargetName(libname) $(DESTDIR)dest @@\ 120711d341caSmrg RanLibrary($(RANLIBINSTFLAGS) $(DESTDIR)dest/LibraryTargetName(libname)) 120811d341caSmrg#endif /* InstallLibrary */ 120911d341caSmrg 121011d341caSmrg 121111d341caSmrg/* 121211d341caSmrg * InstallDriverSDKLibrary - rule to install Driver SDK library. 121311d341caSmrg * (only used for XFree86). This is a no-op 121411d341caSmrg * rule so that Imakefiles on non-XFree86 systems 121511d341caSmrg * continue to build Makefiles correctly. 121611d341caSmrg */ 121711d341caSmrg#ifndef InstallDriverSDKLibrary 121811d341caSmrg#define InstallDriverSDKLibrary(lib,dir) 121911d341caSmrg#endif 122011d341caSmrg 122111d341caSmrg 122211d341caSmrg/* 122311d341caSmrg * InstallDriverSDKNamedLibrary - rule to install Driver SDK library. 122411d341caSmrg * (only used for XFree86). This is a no-op 122511d341caSmrg * rule so that Imakefiles on non-XFree86 systems 122611d341caSmrg * continue to build Makefiles correctly. 122711d341caSmrg */ 122811d341caSmrg#ifndef InstallDriverSDKNamedLibrary 122911d341caSmrg#define InstallDriverSDKNamedLibrary(lib,dlib,dir) 123011d341caSmrg#endif 123111d341caSmrg 123211d341caSmrg 123311d341caSmrg/* 123411d341caSmrg * InstallDriverSDKLibraryModule - rule to install Driver SDK library module. 123511d341caSmrg * (only used for XFree86). This is a no-op 123611d341caSmrg * rule so that Imakefiles on non-XFree86 systems 123711d341caSmrg * continue to build Makefiles correctly. 123811d341caSmrg */ 123911d341caSmrg#ifndef InstallDriverSDKLibraryModule 124011d341caSmrg#define InstallDriverSDKLibraryModule(lib,dlib,dir) 124111d341caSmrg#endif 124211d341caSmrg 124311d341caSmrg 124411d341caSmrg/* 124511d341caSmrg * MergeIntoInstalledLibrary - generate rules to merge one library into another 124611d341caSmrg */ 124711d341caSmrg#ifndef MergeIntoInstalledLibrary 124811d341caSmrg#define MergeIntoInstalledLibrary(tolib,fromlib) @@\ 124911d341caSmrginstall:: fromlib @@\ 125011d341caSmrg $(SCRIPTSRC)/mergelib $(DESTDIR)tolib fromlib 125111d341caSmrg#endif /* MergeIntoInstalledLibrary */ 125211d341caSmrg 125311d341caSmrg/* 125411d341caSmrg * InstallLibraryAlias - generate rules to create a link from one library name 125511d341caSmrg * to another for the purposes of aliasing. 125611d341caSmrg */ 125711d341caSmrg#ifndef InstallLibraryAlias 125811d341caSmrg#define InstallLibraryAlias(libname,alias,dest) @@\ 125911d341caSmrginstall:: @@\ 126011d341caSmrg -(cd $(DESTDIR)dest && ( \ @@\ 126111d341caSmrg RemoveFile(LibraryTargetName(alias)); \ @@\ 126211d341caSmrg $(LN) LibraryTargetName(libname) LibraryTargetName(alias))) 126311d341caSmrg#endif /* InstallLibraryAlias */ 126411d341caSmrg 126511d341caSmrg 126611d341caSmrg/* 126711d341caSmrg * InstallLintLibrary - generate rules to install the indicated lint library. 126811d341caSmrg */ 126911d341caSmrg#ifndef InstallLintLibrary 127011d341caSmrg#define InstallLintLibrary(libname,dest) @@\ 127111d341caSmrgInstallTarget(install.ln,Concat(llib-l,libname.ln),$(INSTLIBFLAGS),dest) 127211d341caSmrg#endif /* InstallLintLibrary */ 127311d341caSmrg 127411d341caSmrg 127511d341caSmrg#if !CompressManPages 127611d341caSmrg/* 127711d341caSmrg * InstallManPageLong - generate rules to install the indicated manual page, 127811d341caSmrg * giving it an alternate name. This is used for installing man pages whose 127911d341caSmrg * base name without the .man suffix would normally be longer than 8 characters 128011d341caSmrg * (the limit for using source code control systems on files systems with 128111d341caSmrg * short file names). 128211d341caSmrg */ 128311d341caSmrg#ifndef InstallManPageLong 128411d341caSmrg#define InstallManPageLong(file,destdir,dest) @@\ 128511d341caSmrgBuildInstallHtmlManPage(file,dest,$(MANSUFFIX)) @@\ 128611d341caSmrg @@\ 128711d341caSmrgCppManTarget(file,$(EXTRAMANDEFS)) @@\ 128811d341caSmrg @@\ 128911d341caSmrgInstallNamedTarget(install.man,file.$(MANNEWSUFFIX),$(INSTMANFLAGS),destdir,dest.$(MANSUFFIX)) 129011d341caSmrg#endif /* InstallManPageLong */ 129111d341caSmrg 129211d341caSmrg 129311d341caSmrg/* 129411d341caSmrg * InstallManPageAliases - generate rules to install manual page aliases. 129511d341caSmrg */ 129611d341caSmrg#ifndef InstallManPageAliases 129711d341caSmrg#define InstallManPageAliases(file,destdir,aliases) @@\ 129811d341caSmrgInstallHtmlManPageAliases(file,aliases,$(MANSUFFIX)) @@\ 129911d341caSmrg @@\ 130011d341caSmrginstall.man:: @@\ 130111d341caSmrg @(TMP="#tmp.$$$$"; \ @@\ 130211d341caSmrg RemoveFile($${TMP}); \ @@\ 130311d341caSmrg echo .so `basename destdir`/file.$(MANSUFFIX) > $${TMP}; \ @@\ 130411d341caSmrg for i in aliases; do (set -x; \ @@\ 130511d341caSmrg $(INSTALL) $(INSTALLFLAGS) $(INSTMANFLAGS) $${TMP} $(DESTDIR)destdir/$$i.$(MANSUFFIX)); \ @@\ 130611d341caSmrg done; \ @@\ 130711d341caSmrg RemoveFile($${TMP})) 130811d341caSmrg#endif /* InstallManPageAliases */ 130911d341caSmrg 131011d341caSmrg 131111d341caSmrg/* 131211d341caSmrg * InstallGenManPageLong - More general rules for installing manual pages -- 131311d341caSmrg * doesn't assume MANSUFFIX. 131411d341caSmrg */ 131511d341caSmrg#ifndef InstallGenManPageLong 131611d341caSmrg#define InstallGenManPageLong(file,destdir,dest,suffix) @@\ 131711d341caSmrgBuildInstallHtmlManPage(file,dest,suffix) @@\ 131811d341caSmrg @@\ 131911d341caSmrgCppManTarget(file, $(EXTRAMANDEFS)) @@\ 132011d341caSmrg @@\ 132111d341caSmrginstall.man:: file.$(MANNEWSUFFIX) @@\ 132211d341caSmrg MakeDir($(DESTDIR)destdir) @@\ 132311d341caSmrg $(INSTALL) -c $(INSTMANFLAGS) file.$(MANNEWSUFFIX) \ @@\ 132411d341caSmrg $(DESTDIR)destdir/dest.suffix 132511d341caSmrg#endif /* InstallGenManPageLong */ 132611d341caSmrg 132711d341caSmrg 132811d341caSmrg/* 132911d341caSmrg * InstallGenManPageAliases - general equivalent of InstallManPageAliases 133011d341caSmrg */ 133111d341caSmrg#ifndef InstallGenManPageAliases 133211d341caSmrg#define InstallGenManPageAliases(file,destdir,suffix,aliases) @@\ 133311d341caSmrgInstallHtmlManPageAliases(file,aliases,suffix) @@\ 133411d341caSmrg @@\ 133511d341caSmrginstall.man:: @@\ 133611d341caSmrg @(TMP="#tmp.$$$$"; \ @@\ 133711d341caSmrg RemoveFile($${TMP}); \ @@\ 133811d341caSmrg echo .so `basename destdir`/file.suffix > $${TMP}; \ @@\ 133911d341caSmrg for i in aliases; do (set -x; \ @@\ 134011d341caSmrg $(INSTALL) $(INSTALLFLAGS) $(INSTMANFLAGS) $${TMP} $(DESTDIR)destdir/$$i.suffix); \ @@\ 134111d341caSmrg done; \ @@\ 134211d341caSmrg RemoveFile($${TMP})) 134311d341caSmrg#endif /* InstallGenManPageAliases */ 134411d341caSmrg 134511d341caSmrg#else /* CompressManPages */ 134611d341caSmrg 134711d341caSmrg#ifndef InstallManPageLong 134811d341caSmrg#define InstallManPageLong(file,destdir,dest) @@\ 134911d341caSmrgBuildInstallHtmlManPage(file,dest,$(MANSUFFIX)) @@\ 135011d341caSmrg @@\ 135111d341caSmrgCppManTarget(file, $(EXTRAMANDEFS)) @@\ 135211d341caSmrg @@\ 135311d341caSmrginstall.man:: file.$(MANNEWSUFFIX) @@\ 135411d341caSmrg MakeDir($(DESTDIR)destdir) @@\ 135511d341caSmrg $(RM) $(DESTDIR)destdir/dest.$(MANSUFFIX)* @@\ 135611d341caSmrg $(INSTALL) -c $(INSTMANFLAGS) file.$(MANNEWSUFFIX) \ @@\ 135711d341caSmrg $(DESTDIR)destdir/dest.$(MANSUFFIX) @@\ 135811d341caSmrg -$(COMPRESSMANCMD) $(DESTDIR)destdir/dest.$(MANSUFFIX) 135911d341caSmrg#endif 136011d341caSmrg 136111d341caSmrg#ifndef InstallGenManPageLong 136211d341caSmrg#define InstallGenManPageLong(file,destdir,dest,suffix) @@\ 136311d341caSmrgBuildInstallHtmlManPage(file,dest,suffix) @@\ 136411d341caSmrg @@\ 136511d341caSmrgCppManTarget(file, $(EXTRAMANDEFS)) @@\ 136611d341caSmrg @@\ 136711d341caSmrginstall.man:: file.$(MANNEWSUFFIX) @@\ 136811d341caSmrg MakeDir($(DESTDIR)destdir) @@\ 136911d341caSmrg $(RM) $(DESTDIR)destdir/dest.suffix* @@\ 137011d341caSmrg $(INSTALL) -c $(INSTMANFLAGS) file.$(MANNEWSUFFIX) \ @@\ 137111d341caSmrg $(DESTDIR)destdir/dest.suffix @@\ 137211d341caSmrg -$(COMPRESSMANCMD) $(DESTDIR)destdir/dest.suffix 137311d341caSmrg#endif 137411d341caSmrg 137511d341caSmrg#ifndef InstallMultipleMan 137611d341caSmrg#define InstallMultipleMan(list,dest) @@\ 137711d341caSmrginstall.man:: list @@\ 137811d341caSmrg MakeDir($(DESTDIR)dest) @@\ 137911d341caSmrg @case '${MFLAGS}' in *[i]*) set +e;; esac; \ @@\ 138011d341caSmrg for i in list; do \ @@\ 138111d341caSmrg (MNAME=`echo $$i | cut -f1 -d.`; \ @@\ 138211d341caSmrg set -x; \ @@\ 138311d341caSmrg $(RM) $(DESTDIR)dest/$${MNAME}*; \ @@\ 138411d341caSmrg $(INSTALL) -c $(INSTMANFLAGS) $$i \ @@\ 138511d341caSmrg $(DESTDIR)dest/$${MNAME}.$(MANSUFFIX); \ @@\ 138611d341caSmrg $(COMPRESSMANCMD) $(DESTDIR)dest/$${MNAME}.$(MANSUFFIX)); \ @@\ 138711d341caSmrg done 138811d341caSmrg#endif 138911d341caSmrg 139011d341caSmrg/* 139111d341caSmrg * InstallManPageAliases - install soft links for aliases. 139211d341caSmrg */ 139311d341caSmrg#ifndef InstallManPageAliasesBase 139411d341caSmrg#define InstallManPageAliasesBase(file,destdir,aliases) @@\ 139511d341caSmrginstall.man:: @@\ 139611d341caSmrg @(SUFFIX=`echo $(DESTDIR)destdir/file.* | sed -e 's,.*/[^\.]*.,,'`; \ @@\ 139711d341caSmrg for i in aliases; do (set -x; \ @@\ 139811d341caSmrg $(RM) $(DESTDIR)destdir/$$i.*; \ @@\ 139911d341caSmrg (cd $(DESTDIR)destdir; $(LN) file.$${SUFFIX} \ @@\ 140011d341caSmrg $$i.$${SUFFIX})); \ @@\ 140111d341caSmrg done) 140211d341caSmrg#endif 140311d341caSmrg 140411d341caSmrg#ifndef InstallManPageAliases 140511d341caSmrg#define InstallManPageAliases(file,destdir,aliases) @@\ 140611d341caSmrgInstallHtmlManPageAliases(file,aliases,$(MANSUFFIX)) @@\ 140711d341caSmrg @@\ 140811d341caSmrgInstallManPageAliasesBase(file,destdir,aliases) 140911d341caSmrg#endif 141011d341caSmrg 141111d341caSmrg 141211d341caSmrg/* 141311d341caSmrg * InstallGenManPageAliases - install soft links for aliases. 141411d341caSmrg */ 141511d341caSmrg#ifndef InstallGenManPageAliases 141611d341caSmrg#define InstallGenManPageAliases(file,destdir,suffix,aliases) @@\ 141711d341caSmrgInstallHtmlManPageAliases(file,aliases,suffix) @@\ 141811d341caSmrg @@\ 141911d341caSmrgInstallManPageAliasesBase(file,destdir,aliases) 142011d341caSmrg#endif 142111d341caSmrg 142211d341caSmrg#endif /* CompressManPages */ 142311d341caSmrg 142411d341caSmrg 142511d341caSmrg/* 142611d341caSmrg * InstallManPage - generate rules to install the indicated manual page. 142711d341caSmrg */ 142811d341caSmrg#ifndef InstallManPage 142911d341caSmrg#define InstallManPage(file,destdir) @@\ 143011d341caSmrgInstallManPageLong(file,destdir,file) 143111d341caSmrg#endif /* InstallManPage */ 143211d341caSmrg 143311d341caSmrg 143411d341caSmrg/* 143511d341caSmrg * InstallGenManPage - general equivalent of InstallManPage 143611d341caSmrg */ 143711d341caSmrg#ifndef InstallGenManPage 143811d341caSmrg#define InstallGenManPage(file,destdir,suffix) @@\ 143911d341caSmrgInstallGenManPageLong(file,destdir,file,suffix) 144011d341caSmrg#endif /* InstallGenManPage */ 144111d341caSmrg 144211d341caSmrg 144311d341caSmrg/* 144411d341caSmrg * RmanDependency - generate rules to build the rman program if 144511d341caSmrg * this Imakefile is within the source tree. 144611d341caSmrg */ 144711d341caSmrg#ifndef RmanDependency 144811d341caSmrg#ifdef UseInstalled 144911d341caSmrg#define RmanDependency() /**/ 145011d341caSmrg#else 145111d341caSmrg#define RmanDependency() @@\ 145211d341caSmrgNoCmpScript(ProgramTargetName($(RMAN))) @@\ 145311d341caSmrg @@\ 145411d341caSmrgProgramTargetName($(RMAN)): @@\ 145511d341caSmrg @echo "checking $(RMANBASENAME) over in $(TOP)/config/util first..."; \ @@\ 145611d341caSmrg cd $(TOP)/config/util && $(MAKE) rmanonly; \ @@\ 145711d341caSmrg echo "okay, continuing in $(CURRENT_DIR)" 145811d341caSmrg 145911d341caSmrg#endif /* UseInstalled */ 146011d341caSmrg#endif /* RmanDependency */ 146111d341caSmrg 146211d341caSmrg#ifndef RmanCmdDependency 146311d341caSmrg#ifdef UseInstalled 146411d341caSmrg#define RmanCmdDependency /**/ 146511d341caSmrg#else 146611d341caSmrg#define RmanCmdDependency ProgramTargetName($(RMAN)) 146711d341caSmrg#endif 146811d341caSmrg#endif 146911d341caSmrg 147011d341caSmrg#ifndef BuildInstallHtmlManPage 147111d341caSmrg#if BuildHtmlManPages 147211d341caSmrg#define BuildInstallHtmlManPage(file,dest,suffix) @@\ 147311d341caSmrgAllTarget(dest.suffix.html) @@\ 147411d341caSmrg @@\ 147511d341caSmrgdest.suffix.html: file.$(MANNEWSUFFIX) RmanCmdDependency @@\ 147611d341caSmrg RemoveFiles(dest.suffix.html dest.suffix-html) @@\ 147711d341caSmrg RunProgram(RMAN,$(RMANOPTIONS) < file.$(MANNEWSUFFIX) \ @@\ 147811d341caSmrg > dest.suffix-html) && $(MV) dest.suffix-html $@ @@\ 147911d341caSmrg @@\ 148011d341caSmrginstall.man:: dest.suffix.html @@\ 148111d341caSmrg MakeDir($(DESTDIR)$(DOCHTMLDIR)) @@\ 148211d341caSmrg @(SUF=`expr suffix \: '\(.\)'`; \ @@\ 148311d341caSmrg set -x; \ @@\ 148411d341caSmrg $(INSTALL) $(INSTALLFLAGS) $(INSTMANFLAGS) dest.suffix.html $(DESTDIR)$(DOCHTMLDIR)/dest.$$SUF.html) @@\ 148511d341caSmrg @@\ 148611d341caSmrgclean:: @@\ 148711d341caSmrg RemoveFiles(dest.suffix.html dest.suffix-html) 148811d341caSmrg#else 148911d341caSmrg#define BuildInstallHtmlManPage(file,dest,suffix) /**/ 149011d341caSmrg#endif 149111d341caSmrg#endif 149211d341caSmrg 149311d341caSmrg#ifndef InstallHtmlManPageAliases 149411d341caSmrg#if BuildHtmlManPages 149511d341caSmrg#define InstallHtmlManPageAliases(file,aliases,suffix) @@\ 149611d341caSmrginstall.man:: file.suffix.html @@\ 149711d341caSmrg MakeDir($(DESTDIR)$(DOCHTMLDIR)) @@\ 149811d341caSmrg @SUF=`expr suffix \: '\(.\)'`; \ @@\ 149911d341caSmrg for i in aliases; do (set -x; \ @@\ 150011d341caSmrg RemoveFile($(DESTDIR)$(DOCHTMLDIR)/$$i.$$SUF.html); \ @@\ 150111d341caSmrg (cd $(DESTDIR)$(DOCHTMLDIR); \ @@\ 150211d341caSmrg $(LN) file.$$SUF.html $$i.$$SUF.html)); \ @@\ 150311d341caSmrg done 150411d341caSmrg#else 150511d341caSmrg#define InstallHtmlManPageAliases(file,aliases,suffix) /**/ 150611d341caSmrg#endif 150711d341caSmrg#endif 150811d341caSmrg 150911d341caSmrg#ifndef HtmlManIndex 151011d341caSmrg#if BuildHtmlManPages 151111d341caSmrg#define HtmlManIndex @@\ 151211d341caSmrghtml_index:: @@\ 151311d341caSmrg MakeDir($(DESTDIR)$(DOCHTMLDIR)) @@\ 151411d341caSmrg $(HTMLINDEXCMD) $(DESTDIR)$(DOCHTMLDIR) 151511d341caSmrg#else 151611d341caSmrg#define HtmlManIndex html_index:: 151711d341caSmrg#endif 151811d341caSmrg#endif 151911d341caSmrg 152011d341caSmrg 152111d341caSmrg/* 152211d341caSmrg * ManKeywordsTarget - generate the database used by "man -k". 152311d341caSmrg * This rule updates the index in the directory "manpath", which 152411d341caSmrg * indexes all the manual pages in the section subdirectories under 152511d341caSmrg * it. An update command is defined only on systems that have a 152611d341caSmrg * per MANPATH element index. If the OS supports only one system-wide 152711d341caSmrg * database, we don't update it, because then we can't do cross 152811d341caSmrg * installations or use a non-empty DESTDIR for testing. 152911d341caSmrg */ 153011d341caSmrg#ifndef ManKeywordsTarget 153111d341caSmrg#define ManKeywordsTarget(manpath) man_keywords:: 153211d341caSmrg#endif 153311d341caSmrg 153411d341caSmrg/* 153511d341caSmrg * InstallNamedNonExec - generate rules to install a data file 153611d341caSmrg */ 153711d341caSmrg#ifndef InstallNamedNonExec 153811d341caSmrg#define InstallNamedNonExec(srcname,dstname,dest) @@\ 153911d341caSmrgInstallNamedTarget(install,srcname,$(INSTDATFLAGS),dest,dstname) 154011d341caSmrg#endif /* InstallNamedNonExec */ 154111d341caSmrg 154211d341caSmrg 154311d341caSmrg/* 154411d341caSmrg * InstallDriverSDKNamedNonExec - rule for installing server Driver SDK files. 154511d341caSmrg * (only used for XFree86). This is a no-op 154611d341caSmrg * rule so that Imakefiles on non-XFree86 systems 154711d341caSmrg * continue to build Makefiles correctly. 154811d341caSmrg */ 154911d341caSmrg#ifndef InstallDriverSDKNamedNonExec 155011d341caSmrg#define InstallDriverSDKNamedNonExec(srcname,dstname,dest) 155111d341caSmrg#endif 155211d341caSmrg 155311d341caSmrg 155411d341caSmrg/* 155511d341caSmrg * InstallNonExecFile - generate rules to install a data file 155611d341caSmrg */ 155711d341caSmrg#ifndef InstallNonExecFile 155811d341caSmrg#define InstallNonExecFile(file,dest) @@\ 155911d341caSmrgInstallTarget(install,file,$(INSTDATFLAGS),dest) 156011d341caSmrg#endif /* InstallNonExecFile */ 156111d341caSmrg 156211d341caSmrg 156311d341caSmrg/* 156411d341caSmrg * InstallNonExecFileNoClobber - install a data file once 156511d341caSmrg */ 156611d341caSmrg#ifndef InstallNonExecFileNoClobber 156711d341caSmrg#define InstallNonExecFileNoClobber(file,dest) @@\ 156811d341caSmrgInstallNamedTargetNoClobber(install,file,$(INSTDATFLAGS),dest,file) 156911d341caSmrg#endif /* InstallNonExecFileNoClobber */ 157011d341caSmrg 157111d341caSmrg 157211d341caSmrg/* 157311d341caSmrg * InstallDriverSDKNonExecFile - rule for installing server Driver SDK files. 157411d341caSmrg * (only used for XFree86). This is a no-op 157511d341caSmrg * rule so that Imakefiles on non-XFree86 systems 157611d341caSmrg * continue to build Makefiles correctly. 157711d341caSmrg */ 157811d341caSmrg#ifndef InstallDriverSDKNonExecFile 157911d341caSmrg#define InstallDriverSDKNonExecFile(file,dir) 158011d341caSmrg#endif 158111d341caSmrg 158211d341caSmrg 158311d341caSmrg/* 158411d341caSmrg * InstallNonExec - generate rules to install a data file, but does not 158511d341caSmrg * try to create the destination directory (deprecated) 158611d341caSmrg */ 158711d341caSmrg#ifndef InstallNonExec 158811d341caSmrg#define InstallNonExec(file,dest) @@\ 158911d341caSmrginstall:: file @@\ 159011d341caSmrg $(INSTALL) $(INSTALLFLAGS) $(INSTDATFLAGS) file $(DESTDIR)dest 159111d341caSmrg#endif /* InstallNonExec */ 159211d341caSmrg 159311d341caSmrg 159411d341caSmrg/* 159511d341caSmrg * InstallProgramWithFlags - generate rules to install an executable program 159611d341caSmrg * using given install flags. 159711d341caSmrg */ 159811d341caSmrg#ifndef InstallProgramWithFlags 159911d341caSmrg#if StripInstalledPrograms && CrossCompiling 160011d341caSmrg#define InstallProgramWithFlags(program,dest,flags) @@\ 160111d341caSmrgInstallTarget(install,ProgramTargetName(program),$(INSTPGMFLAGS) flags,dest) @@\ 160211d341caSmrg CrossStripCmd $(DESTDIR)dest/ProgramTargetName(program) 160311d341caSmrg#else 160411d341caSmrg#define InstallProgramWithFlags(program,dest,flags) @@\ 160511d341caSmrgInstallTarget(install,ProgramTargetName(program),$(INSTPGMFLAGS) flags,dest) 160611d341caSmrg#endif /* StripInstalledPrograms && CrossCompiling */ 160711d341caSmrg#endif /* InstallProgramWithFlags */ 160811d341caSmrg 160911d341caSmrg 161011d341caSmrg/* 161111d341caSmrg * InstallProgram - generate rules to install an executable program using any 161211d341caSmrg * special install flags set in $(INSTALLFLAGS). 161311d341caSmrg */ 161411d341caSmrg#ifndef InstallProgram 161511d341caSmrg#define InstallProgram(program,dest) @@\ 161611d341caSmrgInstallProgramWithFlags(program,dest,NullParameter) 161711d341caSmrg#endif /* InstallProgram */ 161811d341caSmrg 161911d341caSmrg 162011d341caSmrg 162111d341caSmrg/* 162211d341caSmrg * InstallScript - install a shell script. 162311d341caSmrg */ 162411d341caSmrg#ifndef InstallScript 162511d341caSmrg#define InstallScript(program,dest) @@\ 162611d341caSmrgInstallNamedTarget(install,program.script,$(INSTBINFLAGS),dest,program) 162711d341caSmrg#endif /* InstallScript */ 162811d341caSmrg 162911d341caSmrg 163011d341caSmrg/* 163111d341caSmrg * InstallNamedProg - install a program with renaming and no stripping. 163211d341caSmrg */ 163311d341caSmrg#ifndef InstallNamedProg 163411d341caSmrg#define InstallNamedProg(srcname,dstname,dest) @@\ 163511d341caSmrgInstallNamedTarget(install,srcname,$(INSTBINFLAGS),dest,dstname) 163611d341caSmrg#endif /* InstallNamedProg */ 163711d341caSmrg 163811d341caSmrg 163911d341caSmrg/* 164011d341caSmrg * InstallNamedProgNoClobber - Like InstallNamedProg, but doesn't 164111d341caSmrg * do the install if an installed version already exists. 164211d341caSmrg */ 164311d341caSmrg#ifndef InstallNamedProgNoClobber 164411d341caSmrg#define InstallNamedProgNoClobber(srcname,dstname,dest) @@\ 164511d341caSmrgInstallNamedTargetNoClobber(install,srcname,$(INSTBINFLAGS),dest,dstname) 164611d341caSmrg#endif /* InstallNamedProgNoClobber */ 164711d341caSmrg 164811d341caSmrg 164911d341caSmrg/* 165011d341caSmrg * InstallDriverSDKNamedProg - rule for installing server Driver SDK files. 165111d341caSmrg * (only used for XFree86). This is a no-op 165211d341caSmrg * rule so that Imakefiles on non-XFree86 systems 165311d341caSmrg * continue to build Makefiles correctly. 165411d341caSmrg */ 165511d341caSmrg#ifndef InstallDriverSDKNamedProg 165611d341caSmrg#define InstallDriverSDKNamedProg(srcname,dstname,dest) 165711d341caSmrg#endif 165811d341caSmrg 165911d341caSmrg 166011d341caSmrg/* 166111d341caSmrg * MakeFlagsToShellFlags - set variables before starting a loop. 166211d341caSmrg * makeflags is the set of "make" flags to check. 166311d341caSmrg * shellcmd is the shell command to execute if any of the flags are set. 166411d341caSmrg * 166511d341caSmrg * The usual use of this rule is to translate make's "don't quit on error" 166611d341caSmrg * flags into the equivalent for the shell. To do this, "make -i" always 166711d341caSmrg * becomes "set +e". "make -k" should also turn on "set +e" if the target 166811d341caSmrg * is building subdirectories. That is, subdirectories are independent 166911d341caSmrg * and should appear to be multiple targets, even though they are 167011d341caSmrg * implemented in a loop in a single target. 167111d341caSmrg */ 167211d341caSmrg#ifndef MakeFlagsToShellFlags 167311d341caSmrg#define MakeFlagsToShellFlags(makeflags,shellcmd)\ 167411d341caSmrg for flag in ${MAKEFLAGS} ''; do \ @@\ 167511d341caSmrg case "$$flag" in *=*) ;; --*) ;; *[makeflags]*) shellcmd;; esac; done 167611d341caSmrg#endif 167711d341caSmrg 167811d341caSmrg/* 167911d341caSmrg * MakeNamedTargetSubdir - do make in a subdir. 168011d341caSmrg */ 168111d341caSmrg#ifndef MakeNamedTargetSubdir 168211d341caSmrg#define MakeNamedTargetSubdir(dir,flags,subname)\ 168311d341caSmrg (cd dir && $(MAKE) $(MFLAGS) $(PARALLELMFLAGS) \ @@\ 168411d341caSmrg flags subname) 168511d341caSmrg#endif 168611d341caSmrg 168711d341caSmrg/* 168811d341caSmrg * LinkFileList - link a list of files from one place to another 168911d341caSmrg */ 169011d341caSmrg#ifndef LinkFileList 169111d341caSmrg#define LinkFileList(step,list,dir,sub) @@\ 169211d341caSmrgstep:: @@\ 169311d341caSmrg @MakeFlagsToShellFlags(i,set +e); \ @@\ 169411d341caSmrg echo " cd" dir; cd dir && \ @@\ 169511d341caSmrg for i in list; do (set -x; $(LN) -f sub/$$i .); done 169611d341caSmrg#endif 169711d341caSmrg 169811d341caSmrg 169911d341caSmrg/* 170011d341caSmrg * LinkConfDirectoryLong 170111d341caSmrg * 170211d341caSmrg * Make links from opath (usually <ProjectRoot>/lib/X11) to npath 170311d341caSmrg * For example /usr/X11R6/lib/X11/xdm ==> /etc/X11/xdm so that X 170411d341caSmrg * binaries can be mounted from a read-only volume like a CD-ROM; 170511d341caSmrg * but files that may need to be edited can be stored locally on 170611d341caSmrg * read-write media. If someone has an existing installation, be 170711d341caSmrg * careful and move existing files to the new location in /etc. 170811d341caSmrg * XXX Need to make the installation script do this when installing 170911d341caSmrg * binary distributions. 171011d341caSmrg * 171111d341caSmrg * Since the link is used in the installation process, we need to 171211d341caSmrg * make the link relative in order to honor $(DESTDIR) if it is set. 171311d341caSmrg * 171411d341caSmrg * Note: The sed script used here is not completely general. It assumes 171511d341caSmrg * that no elements of the path are '..', and that none start with '.' 171611d341caSmrg * that aren't just '.'. 171711d341caSmrg * 171811d341caSmrg * For a more general solution $(REVPATH) could be used. Even though 171911d341caSmrg * it was intended for something a little different, it does do what is 172011d341caSmrg * required here. 172111d341caSmrg * 172211d341caSmrg */ 172311d341caSmrg#ifndef LinkConfDirectoryLong 172411d341caSmrg#if UseSeparateConfDir && HasSymLinks 172511d341caSmrg#define LinkConfDirectoryLong(mdir,cdir,rdir,ldir,opath,npath) @@\ 172611d341caSmrginstall:: @@\ 172711d341caSmrg @MakeFlagsToShellFlags(i,set +e); \ @@\ 172811d341caSmrg if [ -h Concat($(DESTDIR),npath/mdir) ]; then \ @@\ 172911d341caSmrg $(RM) Concat($(DESTDIR),npath/mdir); \ @@\ 173011d341caSmrg fi @@\ 173111d341caSmrg MakeDir(Concat($(DESTDIR),opath/cdir)) @@\ 173211d341caSmrg MakeDir(Concat($(DESTDIR),npath/mdir)) @@\ 173311d341caSmrg @MakeFlagsToShellFlags(i,set +e); \ @@\ 173411d341caSmrg if [ -d Concat($(DESTDIR),opath/cdir) ]; then \ @@\ 173511d341caSmrg RELPATH=`echo opath/cdir | \ @@\ 173611d341caSmrg sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ @@\ 173711d341caSmrg cd Concat($(DESTDIR),opath/cdir); \ @@\ 173811d341caSmrg if [ -d rdir -a ! -h rdir ]; then \ @@\ 173911d341caSmrg (cd rdir; tar cf - . | \ @@\ 174011d341caSmrg (cd Concat($(DESTDIR),npath/mdir); \ @@\ 174111d341caSmrg tar xf -; exit 0); exit 0); \ @@\ 174211d341caSmrg fi; \ @@\ 174311d341caSmrg $(RM) -r rdir; \ @@\ 174411d341caSmrg $(LN) Concat($${RELPATH},npath/mdir) ldir; \ @@\ 174511d341caSmrg fi 174611d341caSmrg#else 174711d341caSmrg#define LinkConfDirectoryLong(mdir,cdir,rdir,ldir,opath,npath) 174811d341caSmrg#endif 174911d341caSmrg#endif 175011d341caSmrg 175111d341caSmrg#ifndef LinkConfDirectory 175211d341caSmrg#define LinkConfDirectory(mdir,cdir,rdir,ldir) LinkConfDirectoryLong(mdir,cdir,rdir,ldir,$(LIBDIR),$(CONFDIR)) 175311d341caSmrg#endif 175411d341caSmrg 175511d341caSmrg#ifndef LinkVarDirectory 175611d341caSmrg#define LinkVarDirectory(mdir,cdir,rdir,ldir) LinkConfDirectoryLong(mdir,cdir,rdir,ldir,$(LIBDIR),$(VARDIR)) 175711d341caSmrg#endif 175811d341caSmrg 175911d341caSmrg/* 176011d341caSmrg * LinkConfFileLong 176111d341caSmrg * 176211d341caSmrg * Make links from opath (<ProjectRoot>/lib/X11) to npath 176311d341caSmrg * For example /usr/X11R6/lib/X11/xxx ==> /etc/X11/xxx so that X binaries 176411d341caSmrg * can be mounted from a read-only volume like a CD-ROM; 176511d341caSmrg * but files that may need to be edited can be stored locally on 176611d341caSmrg * read-write media. If someone has an existing installation, be 176711d341caSmrg * careful and move existing files to the new location in /etc. 176811d341caSmrg * XXX Need to make the installation script do this when installing 176911d341caSmrg * binary distributions. 177011d341caSmrg * 177111d341caSmrg * Since the link is used in the installation process, we need to 177211d341caSmrg * make the link relative in order to honor $(DESTDIR) if it is set. 177311d341caSmrg */ 177411d341caSmrg#ifndef LinkConfFileLong 177511d341caSmrg#if UseSeparateConfDir && HasSymLinks 177611d341caSmrg#define LinkConfFileLong(cfile,lfile,opath,npath) @@\ 177711d341caSmrginstall:: @@\ 177811d341caSmrg MakeDir(Concat($(DESTDIR),opath)) @@\ 177911d341caSmrg MakeDir(Concat($(DESTDIR),npath)) @@\ 178011d341caSmrg @MakeFlagsToShellFlags(i,set +e); \ @@\ 178111d341caSmrg if [ -d Concat($(DESTDIR),opath) ]; then \ @@\ 178211d341caSmrg RELPATH=`echo opath | \ @@\ 178311d341caSmrg sed -e 's:^.::' -e 's:[^/.][^/]*:..:'g`; \ @@\ 178411d341caSmrg cd Concat($(DESTDIR),opath); \ @@\ 178511d341caSmrg if [ -f lfile -a ! -h lfile ]; then \ @@\ 178611d341caSmrg cp -p lfile Concat($(DESTDIR),npath/cfile); \ @@\ 178711d341caSmrg fi; \ @@\ 178811d341caSmrg $(RM) -r lfile; \ @@\ 178911d341caSmrg $(LN) Concat($${RELPATH},npath/cfile) lfile; \ @@\ 179011d341caSmrg fi 179111d341caSmrg#else 179211d341caSmrg#define LinkConfFileLong(cfile,lfile,opath,npath) 179311d341caSmrg#endif 179411d341caSmrg#endif 179511d341caSmrg 179611d341caSmrg 179711d341caSmrg#ifndef LinkConfFile 179811d341caSmrg#define LinkConfFile(cfile,lfile) LinkConfFileLong(cfile,lfile,$(LIBDIR),$(CONFDIR)) 179911d341caSmrg#endif 180011d341caSmrg 180111d341caSmrg/* 180211d341caSmrg * InstallMultipleDestFlags - generate rules to install multiple files at 180311d341caSmrg * once during a particular step in the build using a specific set of install 180411d341caSmrg * flags. 180511d341caSmrg */ 180611d341caSmrg#ifndef InstallMultipleDestFlags 180711d341caSmrg#define InstallMultipleDestFlags(step,list,dest,flags) @@\ 180811d341caSmrgstep:: list @@\ 180911d341caSmrg MakeDir($(DESTDIR)dest) @@\ 181011d341caSmrg @MakeFlagsToShellFlags(i,set +e); \ @@\ 181111d341caSmrg for i in list; do \ @@\ 181211d341caSmrg (set -x; $(INSTALL) $(INSTALLFLAGS) flags $$i $(DESTDIR)dest); \ @@\ 181311d341caSmrg done 181411d341caSmrg#endif /* InstallMultipleDestFlags */ 181511d341caSmrg 181611d341caSmrg 181711d341caSmrg/* 181811d341caSmrg * InstallDriverSDKMultipleDestFlags - rule for installing server Driver SDK 181911d341caSmrg * files. (only used for XFree86). This is a no-op 182011d341caSmrg * rule so that Imakefiles on non-XFree86 systems 182111d341caSmrg * continue to build Makefiles correctly. 182211d341caSmrg */ 182311d341caSmrg#ifndef InstallDriverSDKMultipleDestFlags 182411d341caSmrg#define InstallDriverSDKMultipleDestFlags(list,dest,flags) 182511d341caSmrg#endif 182611d341caSmrg 182711d341caSmrg 182811d341caSmrg/* 182911d341caSmrg * InstallMultipleDest - generate rules to install multiple files at once 183011d341caSmrg * during a particular step in the build using any install flags set in 183111d341caSmrg * $(INSTDATFLAGS). 183211d341caSmrg */ 183311d341caSmrg#ifndef InstallMultipleDest 183411d341caSmrg#define InstallMultipleDest(step,list,dest) @@\ 183511d341caSmrgInstallMultipleDestFlags(step,list,dest,$(INSTDATFLAGS)) 183611d341caSmrg#endif /* InstallMultipleDest */ 183711d341caSmrg 183811d341caSmrg/* 183911d341caSmrg * InstallMultiple - generate rules to install multiple files at once 184011d341caSmrg * during the install step of the build using any install flags set in 184111d341caSmrg * $(INSTALLFLAGS). 184211d341caSmrg */ 184311d341caSmrg#ifndef InstallMultiple 184411d341caSmrg#define InstallMultiple(list,dest) @@\ 184511d341caSmrgInstallMultipleDest(install,list,dest) 184611d341caSmrg#endif /* InstallMultiple */ 184711d341caSmrg 184811d341caSmrg 184911d341caSmrg/* 185011d341caSmrg * InstallMultipleFlags - generate rules to install multiple files at once 185111d341caSmrg * during the install step of the build using the given install flags. 185211d341caSmrg */ 185311d341caSmrg#ifndef InstallMultipleFlags 185411d341caSmrg#define InstallMultipleFlags(list,dest,flags) @@\ 185511d341caSmrgInstallMultipleDestFlags(install,list,dest,flags) 185611d341caSmrg#endif /* InstallMultipleFlags */ 185711d341caSmrg 185811d341caSmrg 185911d341caSmrg/* 186011d341caSmrg * InstallMultipleMan - generate rules to install a variety of manual pages 186111d341caSmrg * during the install.man step of the build. 186211d341caSmrg */ 186311d341caSmrg#ifndef InstallMultipleMan 186411d341caSmrg#define InstallMultipleMan(list,dest) @@\ 186511d341caSmrgInstallMultipleDestFlags(install.man,list,dest,$(INSTMANFLAGS)) 186611d341caSmrg#endif /* InstallMultipleMan */ 186711d341caSmrg 186811d341caSmrg/* 186911d341caSmrg * InstallMultipleManSuffix - generate rules to install multiple manual 187011d341caSmrg * pages dufing the install.man step of the build, where 187111d341caSmrg * the target files have the suffix given. 187211d341caSmrg */ 187311d341caSmrg#ifndef InstallMultipleManSuffix 187411d341caSmrg#define InstallMultipleManSuffix(list,dest,suffix) @@\ 187511d341caSmrginstall.man:: @@\ 187611d341caSmrg MakeDir($(DESTDIR)dest) @@\ 187711d341caSmrg @MakeFlagsToShellFlags(i,set +e); \ @@\ 187811d341caSmrg for i in list; do \ @@\ 187911d341caSmrg (set -x; $(INSTALL) $(INSTALLFLAGS) $(INSTMANFLAGS) $$i.suffix $(DESTDIR)dest/$$i.$(MANSUFFIX)); \ @@\ 188011d341caSmrg done 188111d341caSmrg#endif /* InstallMultipleManSuffix */ 188211d341caSmrg 188311d341caSmrg 188411d341caSmrg/* 188511d341caSmrg * IncludeMakefile - rule to include another Makefile. 188611d341caSmrg * Must not generate an error or even a warning if the named file 188711d341caSmrg * is not present, since we use this to include Makefile.dep, which 188811d341caSmrg * may not be built yet. 188911d341caSmrg * This is defined non-null iff HasMakefileSafeInclude is YES. 189011d341caSmrg * The double-@ is to ensure no leading spaces on the line. 189111d341caSmrg */ 189211d341caSmrg#ifndef IncludeMakefile 189311d341caSmrg#if HasClearmake 189411d341caSmrg#define IncludeMakefile(file) @@sinclude file 189511d341caSmrg#else 189611d341caSmrg#if HasBsdMake 189711d341caSmrg#define IncludeMakefile(file) @@# dependencies are in .depend 189811d341caSmrg#else 189911d341caSmrg#define IncludeMakefile(file) /**/ 190011d341caSmrg#endif 190111d341caSmrg#endif 190211d341caSmrg#endif 190311d341caSmrg 190411d341caSmrg/* 190511d341caSmrg * DependDependencyStatement - Used by DependDependency to set up the 190611d341caSmrg * most specific dependency, which differs based on whether we support 190711d341caSmrg * a separate Makefile.dep on this platform. 190811d341caSmrg */ 190911d341caSmrg#ifndef DependDependencyStatement 191011d341caSmrg#if HasMakefileSafeInclude 191111d341caSmrg#define DependDependencyStatement() @@\ 191211d341caSmrgDependFileName:: ProgramTargetName($(DEPEND)) 191311d341caSmrg#else 191411d341caSmrg#define DependDependencyStatement() @@\ 191511d341caSmrgdepend:: ProgramTargetName($(DEPEND)) 191611d341caSmrg#endif 191711d341caSmrg#endif 191811d341caSmrg 191911d341caSmrg/* 192011d341caSmrg * DependDependency - generate rules to build the makedepend program if 192111d341caSmrg * this Imakefile is within the source tree. 192211d341caSmrg */ 192311d341caSmrg#ifndef DependDependency 192411d341caSmrg#ifdef UseInstalled 192511d341caSmrg#define DependDependency() /**/ 192611d341caSmrg#else 192711d341caSmrg#define DependDependency() @@\ 192811d341caSmrgDependDependencyStatement() @@\ 192911d341caSmrg @@\ 193011d341caSmrgNoCmpScript(ProgramTargetName($(DEPEND))) @@\ 193111d341caSmrg @@\ 193211d341caSmrgProgramTargetName($(DEPEND)): @@\ 193311d341caSmrg @echo "checking $@ over in $(DEPENDSRC) first..."; \ @@\ 193411d341caSmrg cd $(DEPENDSRC) && $(MAKE) makedependonly; \ @@\ 193511d341caSmrg echo "okay, continuing in $(CURRENT_DIR)" 193611d341caSmrg 193711d341caSmrg#endif /* UseInstalled */ 193811d341caSmrg#endif /* DependDependency */ 193911d341caSmrg 194011d341caSmrg 194111d341caSmrg/* 194211d341caSmrg * DependTarget - generate rules to compute dependencies for all files listed 194311d341caSmrg * in $(SRCS). 194411d341caSmrg */ 194511d341caSmrg#ifndef DependTarget 194611d341caSmrg#if HasMakefileSafeInclude 194711d341caSmrg#define DependTarget() @@\ 194811d341caSmrgDependDependency() @@\ 194911d341caSmrg @@\ 195011d341caSmrgdepend:: DependFileName @@\ 195111d341caSmrg @@\ 195211d341caSmrgDependFileName:: @@\ 195311d341caSmrg RemoveFile($@) @@\ 195411d341caSmrg RunProgram(DEPEND,-f- $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- $(SRCS)) > $@ 195511d341caSmrg#else /* HasMakefileSafeInclude */ 195611d341caSmrg#define DependTarget() @@\ 195711d341caSmrgDependDependency() @@\ 195811d341caSmrg @@\ 195911d341caSmrgdepend:: @@\ 196011d341caSmrg RunProgram(DEPEND,$(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- $(SRCS)) 196111d341caSmrg#endif /* HasMakefileSafeInclude else */ 196211d341caSmrg#endif /* DependTarget */ 196311d341caSmrg 196411d341caSmrg/* 196511d341caSmrg * DependTarget3 - generate rules to compute dependencies for all files given. 196611d341caSmrg */ 196711d341caSmrg#ifndef DependTarget3 196811d341caSmrg#if HasMakefileSafeInclude 196911d341caSmrg#define DependTarget3(srcs1,srcs2,srcs3) @@\ 197011d341caSmrgDependDependency() @@\ 197111d341caSmrg @@\ 197211d341caSmrgdepend:: DependFileName @@\ 197311d341caSmrg @@\ 197411d341caSmrgDependFileName:: @@\ 197511d341caSmrg RemoveFile($@) @@\ 197611d341caSmrg RunProgram(DEPEND,-f- $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- srcs1) > $@ @@\ 197711d341caSmrg RunProgram(DEPEND,-f- $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- srcs2) >> $@ @@\ 197811d341caSmrg RunProgram(DEPEND,-f- $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- srcs3) >> $@ 197911d341caSmrg#else /* HasMakefileSafeInclude */ 198011d341caSmrg#define DependTarget3(srcs1,srcs2,srcs3) @@\ 198111d341caSmrgDependDependency() @@\ 198211d341caSmrg @@\ 198311d341caSmrgdepend:: @@\ 198411d341caSmrg RunProgram(DEPEND,$(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- srcs1) @@\ 198511d341caSmrg RunProgram(DEPEND,-a $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- srcs2) @@\ 198611d341caSmrg RunProgram(DEPEND,-a $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- srcs3) 198711d341caSmrg#endif /* HasMakefileSafeInclude else */ 198811d341caSmrg#endif /* DependTarget3 */ 198911d341caSmrg 199011d341caSmrg 199111d341caSmrg/* 199211d341caSmrg * CleanTarget - generate rules to remove any garbage files 199311d341caSmrg */ 199411d341caSmrg#ifndef CleanTarget 199511d341caSmrg#define CleanTarget() @@\ 199611d341caSmrgclean:: @@\ 199711d341caSmrg $(RM) FilesToClean ExtraFilesToClean DocFilesToClean "#"* @@\ 199811d341caSmrg @@\ 199911d341caSmrgProofCleanTarget() 200011d341caSmrg#endif /* CleanTarget */ 200111d341caSmrg 200211d341caSmrg 200311d341caSmrg/* 200411d341caSmrg * TagsTarget - generate rules to compute tags files for C source code. 200511d341caSmrg */ 200611d341caSmrg#ifndef TagsTarget 200711d341caSmrg#define TagsTarget() @@\ 200811d341caSmrgtags:: @@\ 200911d341caSmrg $(TAGS) -w *.[ch] @@\ 201011d341caSmrg $(TAGS) -xw *.[ch] > TAGS 201111d341caSmrg#endif /* TagsTarget */ 201211d341caSmrg 201311d341caSmrg 201411d341caSmrg/* 201511d341caSmrg * ImakeDependency - generate rules to compile imake if this Imakefile is 201611d341caSmrg * within the source tree. 201711d341caSmrg */ 201811d341caSmrg#ifndef ImakeDependency 201911d341caSmrg#ifdef UseInstalled 202011d341caSmrg#define ImakeDependency(target) /**/ 202111d341caSmrg#else 202211d341caSmrg#define ImakeDependency(target) @@\ 202311d341caSmrgtarget:: ProgramTargetName($(IMAKE)) @@\ 202411d341caSmrg @@\ 202511d341caSmrgNoCmpScript(ProgramTargetName($(IMAKE)) $(IMAKE).Osuf) @@\ 202611d341caSmrg @@\ 202711d341caSmrgProgramTargetName($(IMAKE)) $(IMAKE).Osuf: @@\ 202811d341caSmrg -@(cd $(IMAKESRC) && if [ -f Makefile ]; then \ @@\ 202911d341caSmrg echo "checking $@ in $(IMAKESRC) first..."; $(MAKE) imakeonly; else \ @@\ 203011d341caSmrg echo "bootstrapping $@ from Makefile.ini in $(IMAKESRC) first..."; \ @@\ 203111d341caSmrg $(MAKE) -f Makefile.ini BOOTSTRAPCFLAGS="$(BOOTSTRAPCFLAGS)"; fi; \ @@\ 203211d341caSmrg echo "okay, continuing in $(CURRENT_DIR)") 203311d341caSmrg#endif /* UseInstalled */ 203411d341caSmrg#endif /* ImakeDependency */ 203511d341caSmrg 203611d341caSmrg 203711d341caSmrg/* 203811d341caSmrg * BuildMakefileTarget - generate rules to build a Makefile from an Imakefile 203911d341caSmrg * and any special imake flags. This is generally done automatically by the 204011d341caSmrg * template or by any special Imakefiles. The first argument exists just 204111d341caSmrg * because imakeflags is usually empty and some preprocessors will complain 204211d341caSmrg * if an empty argument is passed as the sole argument to a macro. 204311d341caSmrg */ 204411d341caSmrg#ifndef BuildMakefileTarget 204511d341caSmrg#define BuildMakefileTarget(notused,imakeflags) @@\ 204611d341caSmrgImakeDependency(Makefile) @@\ 204711d341caSmrg @@\ 204811d341caSmrgMakefile:: @@\ 204911d341caSmrg RMoveToBakFile(Makefile) @@\ 205011d341caSmrg $(IMAKE_CMD) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR) imakeflags 205111d341caSmrg 205211d341caSmrg#endif /* BuildMakefileTarget */ 205311d341caSmrg 205411d341caSmrg 205511d341caSmrg/* 205611d341caSmrg * MakefileTarget - generate rules to build a normal Makefile. 205711d341caSmrg */ 205811d341caSmrg#ifndef MakefileTarget 205911d341caSmrg#define MakefileTarget() @@\ 206011d341caSmrgBuildMakefileTarget(Imakefile,NullParameter) 206111d341caSmrg#endif /* MakefileTarget */ 206211d341caSmrg 206311d341caSmrg 206411d341caSmrg/* 206511d341caSmrg * LibMkdir - helper for creating library object subdirectories 206611d341caSmrg */ 206711d341caSmrg#ifndef LibMkdir 206811d341caSmrg#define LibMkdir(dir) DirFailPrefix@if [ -d dir ]; then exit 0; else set -x; mkdir dir; fi 206911d341caSmrg#endif 207011d341caSmrg 207111d341caSmrg#ifndef LibMkdirLinkSubdirs 207211d341caSmrg#define LibMkdirLinkSubdirs(dir) DirFailPrefix@if [ -d dir ]; then \ @@\ 207311d341caSmrg exit 0; \ @@\ 207411d341caSmrg else \ @@\ 207511d341caSmrg echo "mkdir dir"; mkdir dir; \ @@\ 207611d341caSmrg for i in $(SUBDIRS); do \ @@\ 207711d341caSmrg j=`echo "$$i" | sed -e 's;[^/]\{1,\};..;g'`; \ @@\ 207811d341caSmrg if [ ! -d "dir/`dirname $$i`" ]; then \ @@\ 207911d341caSmrg $(MKDIRHIER) "dir/`dirname $$i`"; \ @@\ 208011d341caSmrg fi; \ @@\ 208111d341caSmrg echo $(LN) "$$j/$$i/dir" "dir/$$i"; \ @@\ 208211d341caSmrg $(LN) "$$j/$$i/dir" "dir/$$i"; \ @@\ 208311d341caSmrg done; \ @@\ 208411d341caSmrg fi 208511d341caSmrg#endif 208611d341caSmrg 208711d341caSmrg/* 208811d341caSmrg * LibCleanDir - helper for cleaning library object subdirectories 208911d341caSmrg */ 209011d341caSmrg#ifndef LibCleanDir 209111d341caSmrg#define LibCleanDir(dir) -@if [ -d dir ]; then \ @@\ 209211d341caSmrg set -x; $(RM) -r dir; else exit 0; fi 209311d341caSmrg#endif 209411d341caSmrg 209511d341caSmrg/* 209611d341caSmrg * LintLibReferences - variables for lint libraries 209711d341caSmrg */ 209811d341caSmrg#ifndef LintLibReferences 209911d341caSmrg#define LintLibReferences(varname,libname,libsource) @@\ 210011d341caSmrgConcat(LINT,varname) = _UseCat($(LINTLIBDIR)/llib-l,libsource/llib-,libname.ln) 210111d341caSmrg#endif 210211d341caSmrg 210311d341caSmrg 210411d341caSmrg/* 210511d341caSmrg * UnsharedLibReferences - variables for unshared libraries 210611d341caSmrg */ 210711d341caSmrg#ifndef UnsharedLibReferences 210811d341caSmrg#define UnsharedLibReferences(varname,libname,libsource) @@\ 210911d341caSmrgProjectUnsharedLibReferences(varname,libname,libsource,$(BUILDLIBDIR)) 211011d341caSmrg#endif 211111d341caSmrg 211211d341caSmrg/* 211311d341caSmrg * ProjectUnsharedLibReferences - variables for unshared libraries 211411d341caSmrg */ 211511d341caSmrg#ifndef ProjectUnsharedLibReferences 211611d341caSmrg#define ProjectUnsharedLibReferences(varname,libname,libsource,buildlibdir) @@\ 211711d341caSmrgConcat3(DEP,varname,LIB) = _UseCat($(USRLIBDIR)/,buildlibdir/,LibraryTargetName(libname)) @@\ 211811d341caSmrgConcat(varname,LIB) = LoaderLibPrefix Concat(-l,libname) @@\ 211911d341caSmrgLintLibReferences(varname,libname,libsource) 212011d341caSmrg#endif 212111d341caSmrg 212211d341caSmrg /* 212311d341caSmrg * ProjectUnsharedFontLibReferences - unshared font libraries 212411d341caSmrg */ 212511d341caSmrg#ifndef ProjectUnsharedFontLibReferences 212611d341caSmrg#define ProjectUnsharedFontLibReferences() @@\ 212711d341caSmrgDEPFONTLIB = _UseCat($(USRLIBDIR)/,XBuildLibDir/,LibraryTargetName(Xfont)) @@\ 212811d341caSmrgFONTLIB = -L$(FREETYPELIBDIR) -L$(FONTLIBSRC) LoaderLibPrefix -lXfont @@\ 212911d341caSmrgLintLibReferences(XFONT,Xfont,$(FONTLIBSRC)) 213011d341caSmrg#endif 213111d341caSmrg 213211d341caSmrg/* 213311d341caSmrg * SharedLibDependencies - shared library dependencies 213411d341caSmrg */ 213511d341caSmrg#ifndef SharedLibDependencies 213611d341caSmrg#define SharedLibDependencies(libname,libsource,revname) /**/ 213711d341caSmrg#endif 213811d341caSmrg 213911d341caSmrg/* 214011d341caSmrg * SharedFontLibReferences - shared font libraries 214111d341caSmrg */ 214211d341caSmrg#ifndef SharedFontLibReferences 214311d341caSmrg#define SharedFontLibReferences() @@\ 214411d341caSmrgSOFONTREV = SharedFontRev @@\ 214511d341caSmrgDEPFONTLIB = SharedLibDependencies(Xfont,$(FONTLIBSRC),SOFONTREV) @@\ 214611d341caSmrgFONTLIB = -L$(FREETYPELIBDIR) -L$(FONTLIBSRC) LoaderLibPrefix -lXfont @@\ 214711d341caSmrgLintLibReferences(XFONT,Xfont,$(FONTLIBSRC)) 214811d341caSmrg#endif 214911d341caSmrg 215011d341caSmrg/* 215111d341caSmrg * SharedDSLibDependencies - shared library dependencies with data separation 215211d341caSmrg */ 215311d341caSmrg#ifndef SharedDSLibDependencies 215411d341caSmrg#define SharedDSLibDependencies(libname,libsource,revname) /**/ 215511d341caSmrg#endif 215611d341caSmrg 215711d341caSmrg/* 215811d341caSmrg * SharedLibReferences - variables for shared libraries 215911d341caSmrg */ 216011d341caSmrg#ifndef SharedLibReferences 216111d341caSmrg#define SharedLibReferences(varname,libname,libsource,revname,rev) @@\ 216211d341caSmrgrevname = rev @@\ 216311d341caSmrgConcat3(DEP,varname,LIB) = SharedLibDependencies(libname,libsource,revname) @@\ 216411d341caSmrgConcat(varname,LIB) = LoaderLibPrefix Concat(-l,libname) @@\ 216511d341caSmrgLintLibReferences(varname,libname,libsource) 216611d341caSmrg#endif 216711d341caSmrg 216811d341caSmrg/* 216911d341caSmrg * SharedDSLibReferences - variables for shared libraries with data separation 217011d341caSmrg */ 217111d341caSmrg#ifndef SharedDSLibReferences 217211d341caSmrg#define SharedDSLibReferences(varname,libname,libsource,revname,rev) @@\ 217311d341caSmrgrevname = rev @@\ 217411d341caSmrgConcat3(DEP,varname,LIB) = SharedDSLibDependencies(libname,libsource,revname) @@\ 217511d341caSmrgConcat(varname,LIB) = LoaderLibPrefix Concat(-l,libname) @@\ 217611d341caSmrgLintLibReferences(varname,libname,libsource) 217711d341caSmrg#endif 217811d341caSmrg 217911d341caSmrg/* 218011d341caSmrg * CPPOnlyCompile - run C compiler's preprocessor only 218111d341caSmrg */ 218211d341caSmrg#ifndef CPPOnlyCompile 218311d341caSmrg#define CPPOnlyCompile(src,options) RemoveFile($@) @@\ 218411d341caSmrg ClearmakeOSName \ 218511d341caSmrg $(CC) -E $(CFLAGS) options src > $@ 218611d341caSmrg#endif 218711d341caSmrg 218811d341caSmrg/* 218911d341caSmrg * ObjectCompile - compile fragment for a normal object file 219011d341caSmrg */ 219111d341caSmrg#ifndef ObjectCompile 219211d341caSmrg#define ObjectCompile(options) RemoveFile($@) @@\ 219311d341caSmrg ClearmakeOSName \ 219411d341caSmrg $(CC) -c $(CFLAGS) options $*.c 219511d341caSmrg#endif 219611d341caSmrg 219711d341caSmrg/* 219811d341caSmrg * CompileCToAsm - compile C file to assembler 219911d341caSmrg */ 220011d341caSmrg#ifndef CompileCToAsm 220111d341caSmrg#define CompileCToAsm(options) RemoveFile($@) @@\ 220211d341caSmrg ClearmakeOSName \ 220311d341caSmrg $(CC) -S $(CFLAGS) options $*.c 220411d341caSmrg#endif 220511d341caSmrg 220611d341caSmrg 220711d341caSmrg/* 220811d341caSmrg * CompileCplusplusToAsm - compile C++ file to assembler 220911d341caSmrg */ 221011d341caSmrg#ifndef CompileCplusplusToAsm 221111d341caSmrg#define CompileCplusplusToAsm(options) RemoveFile($@) @@\ 221211d341caSmrg ClearmakeOSName \ 221311d341caSmrg $(CC) -S $(CFLAGS) options $*.cc 221411d341caSmrg#endif 221511d341caSmrg 221611d341caSmrg 221711d341caSmrg#ifndef ObjectCplusplusCompile 221811d341caSmrg#define ObjectCplusplusCompile(options) RemoveFile($@) @@\ 221911d341caSmrg ClearmakeOSName \ 222011d341caSmrg $(CXX) -c $(CXXFLAGS) options $*.CCsuf 222111d341caSmrg#endif 222211d341caSmrg 222311d341caSmrg/* 222411d341caSmrg * NormalLibObjCompile - compile fragment for a normal library object file 222511d341caSmrg */ 222611d341caSmrg#ifndef NormalLibObjCompile 222711d341caSmrg#define NormalLibObjCompile(options) ObjectCompile(options) 222811d341caSmrg#endif 222911d341caSmrg 223011d341caSmrg#ifndef NormalRelocLibObjCompile 223111d341caSmrg# if !StaticNeedsPicForShared 223211d341caSmrg# define NormalRelocLibObjCompile(options) NormalLibObjCompile(options) 223311d341caSmrg# else 223411d341caSmrg# define NormalRelocLibObjCompile(options) NormalLibObjCompile(options $(PICFLAGS)) 223511d341caSmrg# endif 223611d341caSmrg#endif 223711d341caSmrg 223811d341caSmrg#ifndef NormalLibObjCplusplusCompile 223911d341caSmrg#define NormalLibObjCplusplusCompile(options) ObjectCplusplusCompile(options) 224011d341caSmrg#endif 224111d341caSmrg 224211d341caSmrg/* 224311d341caSmrg * NormalSharedLibObjCompile - compile fragment for shared objects 224411d341caSmrg */ 224511d341caSmrg#ifndef NormalSharedLibObjCompile 224611d341caSmrg#define NormalSharedLibObjCompile(options) NormalLibObjCompile(options $(SHLIBDEF) $(SHAREDCODEDEF) $(PICFLAGS)) 224711d341caSmrg#endif 224811d341caSmrg 224911d341caSmrg#ifndef NormalSharedLibObjCplusplusCompile 225011d341caSmrg#define NormalSharedLibObjCplusplusCompile(options) NormalLibObjCplusplusCompile(options $(SHLIBDEF) $(SHAREDCODEDEF) $(CXXPICFLAGS)) 225111d341caSmrg#endif 225211d341caSmrg 225311d341caSmrg/* 225411d341caSmrg * LibObjCompile - compile fragment for unshared/profiled/debugged objects 225511d341caSmrg */ 225611d341caSmrg#ifndef LibObjCompile 225711d341caSmrg#if HasGcc || HasGcc2 225811d341caSmrg#define LibObjCompile(dir,options) RemoveFiles($@ dir/$@) @@\ 225911d341caSmrg ClearmakeOSName \ 226011d341caSmrg $(CC) -c $(CCOPTIONS) $(THREADS_CFLAGS) $(ALLDEFINES) \ 226111d341caSmrg options $*.c -o dir/$@ 226211d341caSmrg#else 226311d341caSmrg#define LibObjCompile(dir,options) RemoveFiles($@ dir/$@) @@\ 226411d341caSmrg ClearmakeOSName \ 226511d341caSmrg $(CC) -c $(CCOPTIONS) $(THREADS_CFLAGS) $(ALLDEFINES) \ 226611d341caSmrg options $*.c @@\ 226711d341caSmrg $(MV) $@ dir/$@ 226811d341caSmrg#endif 226911d341caSmrg#endif 227011d341caSmrg 227111d341caSmrg#ifndef LibObjCplusplusCompile 227211d341caSmrg#if HasGcc || HasGcc2 227311d341caSmrg#define LibObjCplusplusCompile(dir,options) RemoveFiles($@ dir/$@) @@\ 227411d341caSmrg ClearmakeOSName \ 227511d341caSmrg $(CXX) -c $(CXXOPTIONS) $(THREADS_CXXFLAGS) $(CXXDEFINES) \ 227611d341caSmrg options $*.CCsuf -o dir/$@ 227711d341caSmrg#else 227811d341caSmrg#define LibObjCplusplusCompile(dir,options) RemoveFiles($@ dir/$@) @@\ 227911d341caSmrg ClearmakeOSName \ 228011d341caSmrg $(CXX) -c $(CXXOPTIONS) $(THREADS_CXXFLAGS) $(CXXDEFINES) \ 228111d341caSmrg options $*.CCsuf @@\ 228211d341caSmrg $(MV) $@ dir/$@ 228311d341caSmrg#endif 228411d341caSmrg#endif 228511d341caSmrg 228611d341caSmrg/* 228711d341caSmrg * DebuggedLibObjCompile - compile fragment for debugged objects 228811d341caSmrg */ 228911d341caSmrg#ifndef DebuggedLibObjCompile 229011d341caSmrg#define DebuggedLibObjCompile(options) LibObjCompile(debugger,DebuggableCDebugFlags options) 229111d341caSmrg#endif 229211d341caSmrg 229311d341caSmrg#ifndef DebuggedLibObjCplusplusCompile 229411d341caSmrg#define DebuggedLibObjCplusplusCompile(options) LibObjCplusplusCompile(debugger,DebuggableCplusplusDebugFlags options) 229511d341caSmrg#endif 229611d341caSmrg 229711d341caSmrg/* 229811d341caSmrg * ProfiledLibObjCompile - compile fragment for profiled objects 229911d341caSmrg */ 230011d341caSmrg#ifndef ProfiledLibObjCompile 230111d341caSmrg#define ProfiledLibObjCompile(options) LibObjCompile(profiled,ProfiledCDebugFlags options) 230211d341caSmrg#endif 230311d341caSmrg 230411d341caSmrg#ifndef ProfiledLibObjCplusplusCompile 230511d341caSmrg#define ProfiledLibObjCplusplusCompile(options) LibObjCplusplusCompile(profiled,ProfiledCplusplusDebugFlags options) 230611d341caSmrg#endif 230711d341caSmrg 230811d341caSmrg/* 230911d341caSmrg * UnsharedLibObjCompile - compile fragment for unshared objects 231011d341caSmrg */ 231111d341caSmrg#ifndef UnsharedLibObjCompile 231211d341caSmrg#define UnsharedLibObjCompile(options) LibObjCompile(unshared,$(CDEBUGFLAGS) $(CLIBDEBUGFLAGS) options) 231311d341caSmrg#endif 231411d341caSmrg 231511d341caSmrg#ifndef UnsharedLibObjCplusplusCompile 231611d341caSmrg#define UnsharedLibObjCplusplusCompile(options) LibObjCplusplusCompile(unshared,$(CXXDEBUGFLAGS) $(CXXLIBDEBUGFLAGS) options) 231711d341caSmrg#endif 231811d341caSmrg 231911d341caSmrg/* 232011d341caSmrg * SharedLibObjCompile - compile fragment for shared objects 232111d341caSmrg */ 232211d341caSmrg#ifndef SharedLibObjCompile 232311d341caSmrg#define SharedLibObjCompile(options) LibObjCompile(shared,options $(SHLIBDEF) $(SHAREDCODEDEF) $(PICFLAGS) $(CDEBUGFLAGS) $(CLIBDEBUGFLAGS)) 232411d341caSmrg#endif 232511d341caSmrg 232611d341caSmrg/* 232711d341caSmrg * NormalLibraryObjectRule - for simple libraries 232811d341caSmrg */ 232911d341caSmrg#ifndef NormalLibraryObjectRule 233011d341caSmrg#define NormalLibraryObjectRule() @@\ 233111d341caSmrg.c.Osuf: @@\ 233211d341caSmrg NormalLibObjCompile($(_NOOP_)) 233311d341caSmrg#endif /* NormalLibraryObjectRule */ 233411d341caSmrg 233511d341caSmrg#ifndef NormalCplusplusObjectRule 233611d341caSmrg#define NormalCplusplusObjectRule() @@\ 233711d341caSmrg.CCsuf.Osuf: @@\ 233811d341caSmrg NormalLibObjCplusplusCompile($(_NOOP_)) 233911d341caSmrg#endif 234011d341caSmrg 234111d341caSmrg#ifndef NormalFortranObjectRule 234211d341caSmrg#define NormalFortranObjectRule() @@\ 234311d341caSmrg.f.Osuf: @@\ 234411d341caSmrg RemoveFile($@) @@\ 234511d341caSmrg ClearmakeOSName \ 234611d341caSmrg $(FC) -c $(FCFLAGS) $*.f 234711d341caSmrg#endif 234811d341caSmrg 234911d341caSmrg/* 235011d341caSmrg * SpecialObjectRule - generate rules to compile a file with special flags. 235111d341caSmrg */ 235211d341caSmrg#ifndef SpecialObjectRule 235311d341caSmrg#define SpecialObjectRule(objs,depends,options) @@\ 235411d341caSmrgobjs: depends @@\ 235511d341caSmrg ObjectCompile(options) 235611d341caSmrg#endif /* SpecialObjectRule */ 235711d341caSmrg 235811d341caSmrg#ifndef SpecialCplusplusObjectRule 235911d341caSmrg#define SpecialCplusplusObjectRule(baseobj,basedep,options) @@\ 236011d341caSmrgbaseobj.Osuf: basedep.CCsuf @@\ 236111d341caSmrg ObjectCplusplusCompile(options) 236211d341caSmrg#endif /* SpecialCplusplusObjectRule */ 236311d341caSmrg 236411d341caSmrg/* 236511d341caSmrg * SpecialCObjectRule - generate rules to compile a C file with special flags. 236611d341caSmrg * also handles CodeCenter rules 236711d341caSmrg */ 236811d341caSmrg#ifndef SpecialCObjectRule 236911d341caSmrg#define SpecialCObjectRule(basename,depends,options) @@\ 237011d341caSmrgSpecialObjectRule(basename.Osuf,basename.c depends,options) @@\ 237111d341caSmrg @@\ 237211d341caSmrgbasename.i: basename.c depends @@\ 237311d341caSmrg CPPOnlyCompile(basename.c,options) @@\ 237411d341caSmrg @@\ 237511d341caSmrgbasename.s: basename.c depends @@\ 237611d341caSmrg CompileCToAsm(options) @@\ 237711d341caSmrg @@\ 237811d341caSmrgCenterLoadTarget(debug_src,basename.c,NullParameter,$(ALLDEFINES) options) 237911d341caSmrg#endif /* SpecialCObjectRule */ 238011d341caSmrg 238111d341caSmrg 238211d341caSmrg#ifndef ObjectFromSpecialSource 238311d341caSmrg#define ObjectFromSpecialSource(dst,src,flags) @@\ 238411d341caSmrgNoConfigRec(dst.c) @@\ 238511d341caSmrg @@\ 238611d341caSmrgdst.c: src.c @@\ 238711d341caSmrg RemoveFile($@) @@\ 238811d341caSmrg $(LN) $? $@ @@\ 238911d341caSmrg @@\ 239011d341caSmrgSpecialCObjectRule(dst,NullParameter,flags) @@\ 239111d341caSmrg @@\ 239211d341caSmrgincludes:: dst.c @@\ 239311d341caSmrg @@\ 239411d341caSmrgdepend:: dst.c @@\ 239511d341caSmrg @@\ 239611d341caSmrgclean:: @@\ 239711d341caSmrg RemoveFile(dst.c) 239811d341caSmrg#endif /* ObjectFromSpecialSource */ 239911d341caSmrg 240011d341caSmrg#ifndef CPPOnlyAsm 240111d341caSmrg#define CPPOnlyAsm(basename,options) RemoveFile(basename.i) @@\ 240211d341caSmrg $(CPP) AsmDefines $(DEFINES) $(INCLUDES) options basename.S | \ @@\ 240311d341caSmrg grep -v '^\#' > basename.i 240411d341caSmrg#endif 240511d341caSmrg 240611d341caSmrg#ifndef AssembleObject 240711d341caSmrg#define AssembleObject(basename,flags) CPPOnlyAsm(basename,flags) @@\ 240811d341caSmrg RemoveFile(basename.o) @@\ 240911d341caSmrg $(AS) -o basename.o basename.i @@\ 241011d341caSmrg RemoveFile(basename.i) 241111d341caSmrg#endif 241211d341caSmrg 241311d341caSmrg#ifndef NormalAsmObjectRule 241411d341caSmrg#define NormalAsmObjectRule() @@\ 241511d341caSmrg.S.o: @@\ 241611d341caSmrg AssembleObject($*,$(_NOOP_)) @@\ 241711d341caSmrg @@\ 241811d341caSmrg.S.i: @@\ 241911d341caSmrg CPPOnlyAsm($*,$(_NOOP_)) 242011d341caSmrg#endif 242111d341caSmrg 242211d341caSmrg#ifndef ObjectFromSpecialAsmSource 242311d341caSmrg#define ObjectFromSpecialAsmSource(dst,src,flags) @@\ 242411d341caSmrgdst.S: src.S @@\ 242511d341caSmrg RemoveFile($@) @@\ 242611d341caSmrg $(LN) $? $@ @@\ 242711d341caSmrg @@\ 242811d341caSmrgdst.o: dst.S @@\ 242911d341caSmrg AssembleObject(dst,flags) @@\ 243011d341caSmrg @@\ 243111d341caSmrgdst.i: dst.S @@\ 243211d341caSmrg CPPOnlyAsm(dst,flags) @@\ 243311d341caSmrg @@\ 243411d341caSmrgdepend:: dst.S @@\ 243511d341caSmrg @@\ 243611d341caSmrgclean:: @@\ 243711d341caSmrg RemoveFile(dst.S) 243811d341caSmrg#endif 243911d341caSmrg 244011d341caSmrg#ifndef ObjectFromAsmSource 244111d341caSmrg#define ObjectFromAsmSource(src,flags) @@\ 244211d341caSmrg @@\ 244311d341caSmrgsrc.o: src.S @@\ 244411d341caSmrg AssembleObject(src,flags) @@\ 244511d341caSmrg @@\ 244611d341caSmrgsrc.i: src.S @@\ 244711d341caSmrg CPPOnlyAsm(src,flags) @@\ 244811d341caSmrg @@\ 244911d341caSmrgdepend:: src.S 245011d341caSmrg#endif 245111d341caSmrg 245211d341caSmrg#ifndef SwitchYYPrefix 245311d341caSmrg#define SwitchYYPrefix(in,out,prefix) \ 245411d341caSmrg sed 's/yy/prefix/g' in | sed 's/__REALLY_YY__/yy/' > out && RemoveFile(in) 245511d341caSmrg#endif 245611d341caSmrg 245711d341caSmrg#ifndef LexFilePrefix 245811d341caSmrg#define LexFilePrefix(file,prefix) @@\ 245911d341caSmrgfile.c: file.l @@\ 246011d341caSmrg ClearmakeOSName \ 246111d341caSmrg $(LEX) $(LFLAGS) file.l @@\ 246211d341caSmrg SwitchYYPrefix(lex.yy.c,file.c,prefix) @@\ 246311d341caSmrg @@\ 246411d341caSmrgdepend:: file.c @@\ 246511d341caSmrg @@\ 246611d341caSmrgclean:: @@\ 246711d341caSmrg RemoveFiles(lex.yy.c file.c) 246811d341caSmrg#endif 246911d341caSmrg 247011d341caSmrg#ifndef LexFileExplicit 247111d341caSmrg#if HasClearmake /* provide a place to hang ClearmakeOSName */ 247211d341caSmrg#define LexFileExplicit(file) @@\ 247311d341caSmrgfile.c: file.l @@\ 247411d341caSmrg ClearmakeOSName \ 247511d341caSmrg $(LEX) $(LFLAGS) file.l @@\ 247611d341caSmrg $(MV) lex.yy.c file.c 247711d341caSmrg#else 247811d341caSmrg#define LexFileExplicit(file) /* the default rule is fine */ 247911d341caSmrg#endif 248011d341caSmrg#endif 248111d341caSmrg 248211d341caSmrg#ifndef LexFile 248311d341caSmrg#define LexFile(file) @@\ 248411d341caSmrgLexFileExplicit(file) @@\ 248511d341caSmrg @@\ 248611d341caSmrgdepend:: file.c @@\ 248711d341caSmrg @@\ 248811d341caSmrgclean:: @@\ 248911d341caSmrg RemoveFiles(lex.yy.c file.c) 249011d341caSmrg#endif /* LexFile */ 249111d341caSmrg 249211d341caSmrg 249311d341caSmrg#ifndef M4File 249411d341caSmrg#define M4File(file,includes) @@\ 249511d341caSmrgfile: file.m4 includes @@\ 249611d341caSmrg RemoveFile(file) @@\ 249711d341caSmrg $(M4) $(M4FLAGS) file.m4 >file @@\ 249811d341caSmrg @@\ 249911d341caSmrgdepend:: file @@\ 250011d341caSmrg @@\ 250111d341caSmrgclean:: @@\ 250211d341caSmrg RemoveFile(file) 250311d341caSmrg#endif /* M4File */ 250411d341caSmrg 250511d341caSmrg#ifndef YaccFilePrefix 250611d341caSmrg#if HasGnuMake 250711d341caSmrg#define YaccFilePrefix(file,flags,prefix) @@\ 250811d341caSmrgdepend:: file.c @@\ 250911d341caSmrg @@\ 251011d341caSmrgfile.h: file.c @@\ 251111d341caSmrg @@\ 251211d341caSmrgfile.c: file.y @@\ 251311d341caSmrg ClearmakeOSName \ 251411d341caSmrg $(YACC) flags file.y @@\ 251511d341caSmrg SwitchYYPrefix(y.tab.c,file.c,prefix) @@\ 251611d341caSmrg @if [ -f y.tab.h ]; then set -x; SwitchYYPrefix(y.tab.h,file.h,prefix); \@@\ 251711d341caSmrg else exit 0; fi @@\ 251811d341caSmrg @@\ 251911d341caSmrgclean:: @@\ 252011d341caSmrg RemoveFiles(y.tab.c y.tab.h file.h file.c) 252111d341caSmrg#else 252211d341caSmrg#define YaccFilePrefix(file,flags,prefix) @@\ 252311d341caSmrgdepend:: file.c @@\ 252411d341caSmrg @@\ 252511d341caSmrgfile.h file.c: file.y @@\ 252611d341caSmrg ClearmakeOSName \ 252711d341caSmrg $(YACC) flags file.y @@\ 252811d341caSmrg SwitchYYPrefix(y.tab.c,file.c,prefix) @@\ 252911d341caSmrg @if [ -f y.tab.h ]; then set -x; SwitchYYPrefix(y.tab.h,file.h,prefix); \ @@\ 253011d341caSmrg else exit 0; fi @@\ 253111d341caSmrg @@\ 253211d341caSmrgclean:: @@\ 253311d341caSmrg RemoveFiles(y.tab.c y.tab.h file.h file.c) 253411d341caSmrg#endif 253511d341caSmrg#endif /* YaccFile */ 253611d341caSmrg 253711d341caSmrg#ifndef YaccFile 253811d341caSmrg#if HasGnuMake 253911d341caSmrg#define YaccFile(file,flags) @@\ 254011d341caSmrgdepend:: file.c @@\ 254111d341caSmrg @@\ 254211d341caSmrgfile.h: file.c @@\ 254311d341caSmrg @@\ 254411d341caSmrgfile.c: file.y @@\ 254511d341caSmrg ClearmakeOSName \ 254611d341caSmrg $(YACC) flags file.y @@\ 254711d341caSmrg $(MV) y.tab.c file.c @@\ 254811d341caSmrg @if [ -f y.tab.h ]; then set -x; $(MV) y.tab.h file.h; \ @@\ 254911d341caSmrg else exit 0; fi @@\ 255011d341caSmrg @@\ 255111d341caSmrgclean:: @@\ 255211d341caSmrg RemoveFiles(y.tab.c y.tab.h file.h file.c) 255311d341caSmrg#else 255411d341caSmrg#define YaccFile(file,flags) @@\ 255511d341caSmrgdepend:: file.c @@\ 255611d341caSmrg @@\ 255711d341caSmrgfile.h file.c: file.y @@\ 255811d341caSmrg ClearmakeOSName \ 255911d341caSmrg $(YACC) flags file.y @@\ 256011d341caSmrg $(MV) y.tab.c file.c @@\ 256111d341caSmrg @if [ -f y.tab.h ]; then set -x; $(MV) y.tab.h file.h; \ @@\ 256211d341caSmrg else exit 0; fi @@\ 256311d341caSmrg @@\ 256411d341caSmrgclean:: @@\ 256511d341caSmrg RemoveFiles(y.tab.c y.tab.h file.h file.c) 256611d341caSmrg#endif 256711d341caSmrg#endif /* YaccFile */ 256811d341caSmrg 256911d341caSmrg#ifndef YaccFileNoFlags 257011d341caSmrg#define YaccFileNoFlags(file) @@\ 257111d341caSmrgdepend:: file.c @@\ 257211d341caSmrg @@\ 257311d341caSmrgfile.c: file.y @@\ 257411d341caSmrg ClearmakeOSName \ 257511d341caSmrg $(YACC) file.y @@\ 257611d341caSmrg $(MV) y.tab.c file.c @@\ 257711d341caSmrg @@\ 257811d341caSmrgclean:: @@\ 257911d341caSmrg RemoveFiles(y.tab.c file.c) 258011d341caSmrg#endif /* YaccFileNoFlags */ 258111d341caSmrg 258211d341caSmrg 258311d341caSmrg#ifndef MakeLibrary 258411d341caSmrg#define MakeLibrary(libname,objlist) $(AR) libname objlist 258511d341caSmrg#endif 258611d341caSmrg 258711d341caSmrg#ifndef LinkBuildLibrary 258811d341caSmrg#ifdef UseInstalled 258911d341caSmrg#define LinkBuildLibrary(lib) $(_NULLCMD_) 259011d341caSmrg#else 259111d341caSmrg#define LinkBuildLibrary(lib) MakeDir($(BUILDLIBDIR)) @@\ 259211d341caSmrg RemoveFile($(BUILDLIBDIR)/lib) @@\ 259311d341caSmrg cd $(BUILDLIBDIR) && $(LN) $(BUILDLIBTOP)/$(CURRENT_DIR)/lib . 259411d341caSmrg#endif 259511d341caSmrg#endif /* LinkBuildLibrary */ 259611d341caSmrg 259711d341caSmrg#ifndef LinkBuildLibraryMaybe 259811d341caSmrg#ifdef UseInstalled 259911d341caSmrg#define LinkBuildLibraryMaybe(lib,doit) $(_NULLCMD_) 260011d341caSmrg#else 260111d341caSmrg#define LinkBuildLibraryMaybe(lib,doit) MakeDir($(BUILDLIBDIR)) @@\ 260211d341caSmrg @if doit; then (set -x; \ @@\ 260311d341caSmrg RemoveFile($(BUILDLIBDIR)/lib); \ @@\ 260411d341caSmrg cd $(BUILDLIBDIR) && $(LN) $(BUILDLIBTOP)/$(CURRENT_DIR)/lib .); fi 260511d341caSmrg#endif 260611d341caSmrg#endif /* LinkBuildLibraryMaybe */ 260711d341caSmrg 260811d341caSmrg#ifndef _LinkBuildLibrary /* will get redefined elsewhere */ 260911d341caSmrg#define _LinkBuildLibrary(lib) $(_NULLCMD_) 261011d341caSmrg#endif /* _LinkBuildLibrary */ 261111d341caSmrg 261211d341caSmrg#ifndef LinkBuildSonameLibrary 261311d341caSmrg#ifdef UseInstalled 261411d341caSmrg#define LinkBuildSonameLibrary(lib) true 261511d341caSmrg#else 261611d341caSmrg#define LinkBuildSonameLibrary(lib) MakeDirInline($(BUILDLIBDIR));\ @@\ 261711d341caSmrg (set -x; RemoveFile($(BUILDLIBDIR)/lib);\ @@\ 261811d341caSmrg (cd $(BUILDLIBDIR) && $(LN) $(BUILDLIBTOP)/$(CURRENT_DIR)/lib .)) 261911d341caSmrg#endif 262011d341caSmrg#endif /* LinkBuildSonameLibrary */ 262111d341caSmrg 262211d341caSmrg#ifndef LinkBuildLibraryInline 262311d341caSmrg#define LinkBuildLibraryInline(lib) LinkBuildSonameLibrary(lib) 262411d341caSmrg#endif /* LinkBuildLibraryInline */ 262511d341caSmrg 262611d341caSmrg/* 262711d341caSmrg * NormalLibraryTarget - generate rules to create a library. 262811d341caSmrg */ 262911d341caSmrg#ifndef NormalLibraryTarget 263011d341caSmrg#define NormalLibraryTarget(libname,objlist) @@\ 263111d341caSmrgAllTarget(LibraryTargetName(libname)) @@\ 263211d341caSmrg @@\ 263311d341caSmrgLibraryTargetName(libname): objlist $(EXTRALIBRARYDEPS) @@\ 263411d341caSmrg RemoveFile($@) @@\ 263511d341caSmrg MakeLibrary($@,objlist) @@\ 263611d341caSmrg RanLibrary($@) @@\ 263711d341caSmrg _LinkBuildLibrary($@) 263811d341caSmrg#endif /* NormalLibraryTarget */ 263911d341caSmrg 264011d341caSmrg 264111d341caSmrg/* 264211d341caSmrg * NormalLibraryTarget2 - generate rules to create a library in two steps. 264311d341caSmrg * This is used to create libraries with large numbers of files. 264411d341caSmrg */ 264511d341caSmrg#ifndef NormalLibraryTarget2 264611d341caSmrg#define NormalLibraryTarget2(libname,objlist1,objlist2) @@\ 264711d341caSmrgAllTarget(LibraryTargetName(libname)) @@\ 264811d341caSmrg @@\ 264911d341caSmrgLibraryTargetName(libname): objlist1 objlist2 $(EXTRALIBRARYDEPS) @@\ 265011d341caSmrg RemoveFile($@) @@\ 265111d341caSmrg MakeLibrary($@,objlist1) @@\ 265211d341caSmrg MakeLibrary($@,objlist2) @@\ 265311d341caSmrg RanLibrary($@) @@\ 265411d341caSmrg _LinkBuildLibrary($@) 265511d341caSmrg#endif /* NormalLibraryTarget2 */ 265611d341caSmrg 265711d341caSmrg 265811d341caSmrg/* 265911d341caSmrg * NormalLibraryTarget3 - generate rules to create a library in three steps. 266011d341caSmrg * This is used to create libraries with very large numbers of files. 266111d341caSmrg */ 266211d341caSmrg#ifndef NormalLibraryTarget3 266311d341caSmrg#define NormalLibraryTarget3(libname,objlist1,objlist2,objlist3) @@\ 266411d341caSmrgAllTarget(LibraryTargetName(libname)) @@\ 266511d341caSmrg @@\ 266611d341caSmrgLibraryTargetName(libname): objlist1 objlist2 objlist3 $(EXTRALIBRARYDEPS) @@\ 266711d341caSmrg RemoveFile($@) @@\ 266811d341caSmrg MakeLibrary($@,objlist1) @@\ 266911d341caSmrg MakeLibrary($@,objlist2) @@\ 267011d341caSmrg MakeLibrary($@,objlist3) @@\ 267111d341caSmrg RanLibrary($@) @@\ 267211d341caSmrg _LinkBuildLibrary($@) 267311d341caSmrg#endif /* NormalLibraryTarget3 */ 267411d341caSmrg 267511d341caSmrg 267611d341caSmrg/* 267711d341caSmrg * NormalDepLibraryTarget - generate rules to create a library. 267811d341caSmrg */ 267911d341caSmrg#ifndef NormalDepLibraryTarget 268011d341caSmrg#define NormalDepLibraryTarget(libname,deplist,objlist) @@\ 268111d341caSmrgAllTarget(LibraryTargetName(libname)) @@\ 268211d341caSmrg @@\ 268311d341caSmrgLibraryTargetName(libname): deplist $(EXTRALIBRARYDEPS) @@\ 268411d341caSmrg RemoveFile($@) @@\ 268511d341caSmrg MakeLibrary($@,objlist) @@\ 268611d341caSmrg RanLibrary($@) @@\ 268711d341caSmrg _LinkBuildLibrary($@) 268811d341caSmrg#endif /* NormalDepLibraryTarget */ 268911d341caSmrg 269011d341caSmrg 269111d341caSmrg/* 269211d341caSmrg * UnsharedLibraryTarget - generate rules to create a library. 269311d341caSmrg */ 269411d341caSmrg#ifndef UnsharedLibraryTarget 269511d341caSmrg#define UnsharedLibraryTarget(libname,objlist,down,up) @@\ 269611d341caSmrgAllTarget(LibraryTargetName(libname)) @@\ 269711d341caSmrg @@\ 269811d341caSmrgLibraryTargetName(libname): objlist $(EXTRALIBRARYDEPS) @@\ 269911d341caSmrg RemoveFile($@) @@\ 270011d341caSmrg @(set -x; cd down && MakeLibrary(up/$@,objlist)) || exit 1; @@\ 270111d341caSmrg RanLibrary($@) @@\ 270211d341caSmrg _LinkBuildLibrary($@) 270311d341caSmrg#endif /* UnsharedLibraryTarget */ 270411d341caSmrg 270511d341caSmrg 270611d341caSmrg/* 270711d341caSmrg * UnsharedLibraryTarget3 - generate rules to create a library in three steps. 270811d341caSmrg * This is used to create libraries with very large numbers of files. 270911d341caSmrg */ 271011d341caSmrg#ifndef UnsharedLibraryTarget3 271111d341caSmrg#define UnsharedLibraryTarget3(libname,objlist1,objlist2,objlist3,down,up) @@\ 271211d341caSmrgAllTarget(LibraryTargetName(libname)) @@\ 271311d341caSmrg @@\ 271411d341caSmrgLibraryTargetName(libname): objlist1 objlist2 objlist3 $(EXTRALIBRARYDEPS) @@\ 271511d341caSmrg RemoveFile($@) @@\ 271611d341caSmrg (cd down && MakeLibrary(up/$@,objlist1)) @@\ 271711d341caSmrg (cd down && MakeLibrary(up/$@,objlist2)) @@\ 271811d341caSmrg (cd down && MakeLibrary(up/$@,objlist3)) @@\ 271911d341caSmrg RanLibrary($@) @@\ 272011d341caSmrg _LinkBuildLibrary($@) 272111d341caSmrg#endif /* UnsharedLibraryTarget3 */ 272211d341caSmrg 272311d341caSmrg 272411d341caSmrg/* 272511d341caSmrg * SubdirLibraryRule - 272611d341caSmrg */ 272711d341caSmrg#ifndef SubdirLibraryRule 272811d341caSmrg#define SubdirLibraryRule(objlist) @@\ 272911d341caSmrgall:: DONE @@\ 273011d341caSmrg @@\ 273111d341caSmrgDONE: objlist @@\ 273211d341caSmrg RemoveFile($@) @@\ 273311d341caSmrg touch $@ @@\ 273411d341caSmrg @@\ 273511d341caSmrgclean:: @@\ 273611d341caSmrg RemoveFile(DONE) 273711d341caSmrg#endif /* SubdirLibraryRule */ 273811d341caSmrg 273911d341caSmrg 274011d341caSmrg/* 274111d341caSmrg * ProfiledLibraryTarget - generate rules to create a profiled library. 274211d341caSmrg */ 274311d341caSmrg#ifndef ProfiledLibraryTarget 274411d341caSmrg#define ProfiledLibraryTarget(libname,objlist) @@\ 274511d341caSmrgAllTarget(LibraryTargetNameSuffix(libname,_p)) @@\ 274611d341caSmrg @@\ 274711d341caSmrgLibraryTargetNameSuffix(libname,_p): objlist $(EXTRALIBRARYDEPS) @@\ 274811d341caSmrg RemoveFile($@) @@\ 274911d341caSmrg cd profiled && MakeLibrary(../$@,objlist) @@\ 275011d341caSmrg RanLibrary($@) 275111d341caSmrg 275211d341caSmrg#endif /* ProfiledLibraryTarget */ 275311d341caSmrg 275411d341caSmrg 275511d341caSmrg/* 275611d341caSmrg * ProfiledDepLibraryTarget - generate rules to create a profiled library. 275711d341caSmrg */ 275811d341caSmrg#ifndef ProfiledDepLibraryTarget 275911d341caSmrg#define ProfiledDepLibraryTarget(libname,deplist,objlist) @@\ 276011d341caSmrgAllTarget(LibraryTargetNameSuffix(libname,_p)) @@\ 276111d341caSmrg @@\ 276211d341caSmrgLibraryTargetNameSuffix(libname,_p): deplist $(EXTRALIBRARYDEPS) @@\ 276311d341caSmrg RemoveFile($@) @@\ 276411d341caSmrg MakeLibrary($@,objlist) @@\ 276511d341caSmrg RanLibrary($@) 276611d341caSmrg 276711d341caSmrg#endif /* ProfiledDepLibraryTarget */ 276811d341caSmrg 276911d341caSmrg 277011d341caSmrg/* 277111d341caSmrg * DebuggedLibraryTarget - generate rules to create a debuggable library. 277211d341caSmrg */ 277311d341caSmrg#ifndef DebuggedLibraryTarget 277411d341caSmrg#define DebuggedLibraryTarget(libname,objlist) @@\ 277511d341caSmrgAllTarget(LibraryTargetNameSuffix(libname,_d)) @@\ 277611d341caSmrg @@\ 277711d341caSmrgLibraryTargetNameSuffix(libname,_d): objlist $(EXTRALIBRARYDEPS) @@\ 277811d341caSmrg RemoveFile($@) @@\ 277911d341caSmrg cd debugger && MakeLibrary(../$@,objlist) @@\ 278011d341caSmrg RanLibrary($@) 278111d341caSmrg 278211d341caSmrg#endif /* DebuggedLibraryTarget */ 278311d341caSmrg 278411d341caSmrg 278511d341caSmrg/* 278611d341caSmrg * DebuggedDepLibraryTarget - generate rules to create a debuggable library. 278711d341caSmrg */ 278811d341caSmrg#ifndef DebuggedDepLibraryTarget 278911d341caSmrg#define DebuggedDepLibraryTarget(libname,deplist,objlist) @@\ 279011d341caSmrgAllTarget(LibraryTargetNameSuffix(libname,_d)) @@\ 279111d341caSmrg @@\ 279211d341caSmrgLibraryTargetNameSuffix(libname,_d): deplist $(EXTRALIBRARYDEPS) @@\ 279311d341caSmrg RemoveFile($@) @@\ 279411d341caSmrg MakeLibrary($@,objlist) @@\ 279511d341caSmrg RanLibrary($@) 279611d341caSmrg 279711d341caSmrg#endif /* DebuggedDepLibraryTarget */ 279811d341caSmrg 279911d341caSmrg 280011d341caSmrg/* 280111d341caSmrg * AliasedLibraryTarget - generate rules to link one library to another. 280211d341caSmrg */ 280311d341caSmrg#ifndef AliasedLibraryTarget 280411d341caSmrg#define AliasedLibraryTarget(libname,alias) @@\ 280511d341caSmrgAllTarget(LibraryTargetName(alias)) @@\ 280611d341caSmrg @@\ 280711d341caSmrgLibraryTargetName(alias): LibraryTargetName(libname) @@\ 280811d341caSmrg RemoveFile($@) @@\ 280911d341caSmrg $(LN) LibraryTargetName(libname) $@ @@\ 281011d341caSmrg @@\ 281111d341caSmrgclean:: @@\ 281211d341caSmrg RemoveFile(LibraryTargetName(alias)) 281311d341caSmrg#endif /* AliasedLibraryTarget */ 281411d341caSmrg 281511d341caSmrg 281611d341caSmrg/* 281711d341caSmrg * NormalRelocatableTarget - generate rules to produce a relocatable object 281811d341caSmrg * file instead of a library. 281911d341caSmrg */ 282011d341caSmrg#ifndef NormalRelocatableTarget 282111d341caSmrg#define NormalRelocatableTarget(objname,objlist) @@\ 282211d341caSmrgAllTarget(objname.Osuf) @@\ 282311d341caSmrg @@\ 282411d341caSmrgobjname.Osuf: objlist $(EXTRALIBRARYDEPS) @@\ 282511d341caSmrg RemoveFile($@) @@\ 282611d341caSmrg $(LD) $(LDCOMBINEFLAGS) objlist -o $@ 282711d341caSmrg#endif /* NormalRelocatableTarget */ 282811d341caSmrg 282911d341caSmrg 283011d341caSmrg/* 283111d341caSmrg * NormalDepRelocatableTarget - generate rules to produce a relocatable object 283211d341caSmrg * file instead of a library. 283311d341caSmrg */ 283411d341caSmrg#ifndef NormalDepRelocatableTarget 283511d341caSmrg#define NormalDepRelocatableTarget(objname,deplist,objlist) @@\ 283611d341caSmrgAllTarget(objname.Osuf) @@\ 283711d341caSmrg @@\ 283811d341caSmrgobjname.Osuf: deplist $(EXTRALIBRARYDEPS) @@\ 283911d341caSmrg RemoveFile($@) @@\ 284011d341caSmrg $(LD) $(LDCOMBINEFLAGS) objlist -o $@ 284111d341caSmrg#endif /* NormalDepRelocatableTarget */ 284211d341caSmrg 284311d341caSmrg 284411d341caSmrg/* 284511d341caSmrg * ProfiledRelocatableTarget - generate rules to produce a profiled relocatable 284611d341caSmrg * object file instead of a library. 284711d341caSmrg */ 284811d341caSmrg#ifndef ProfiledRelocatableTarget 284911d341caSmrg#define ProfiledRelocatableTarget(objname,objlist) @@\ 285011d341caSmrgAllTarget(Concat(objname,_p.Osuf)) @@\ 285111d341caSmrg @@\ 285211d341caSmrgConcat(objname,_p.Osuf): objlist $(EXTRALIBRARYDEPS) @@\ 285311d341caSmrg RemoveFile($@) @@\ 285411d341caSmrg $(LD) -X -r objlist -o $@ 285511d341caSmrg 285611d341caSmrg#endif /* ProfiledRelocatableTarget */ 285711d341caSmrg 285811d341caSmrg 285911d341caSmrg/* 286011d341caSmrg * DebuggedRelocatableTarget - generate rules to produce a debuggable 286111d341caSmrg * relocatable object file instead of a library. 286211d341caSmrg */ 286311d341caSmrg#ifndef DebuggedRelocatableTarget 286411d341caSmrg#define DebuggedRelocatableTarget(objname,objlist) @@\ 286511d341caSmrgAllTarget(Concat(objname,_d.Osuf)) @@\ 286611d341caSmrg @@\ 286711d341caSmrgConcat(objname,_d.Osuf): objlist $(EXTRALIBRARYDEPS) @@\ 286811d341caSmrg RemoveFile($@) @@\ 286911d341caSmrg $(LD) -X -r objlist -o $@ 287011d341caSmrg 287111d341caSmrg#endif /* DebuggedRelocatableTarget */ 287211d341caSmrg 287311d341caSmrg 287411d341caSmrg/* 287511d341caSmrg * LintLibraryTarget - generate rules to create a lint library. Note that the 287611d341caSmrg * lint library is always forced to be newer than the library itself. 287711d341caSmrg */ 287811d341caSmrg#ifndef LintLibraryTarget 287911d341caSmrg#define LintLibraryTarget(libname,srclist) @@\ 288011d341caSmrglintlib:: Concat(llib-l,libname.ln) @@\ 288111d341caSmrg @@\ 288211d341caSmrgConcat(llib-l,libname.ln): srclist $(EXTRALIBRARYDEPS) @@\ 288311d341caSmrg RemoveFile($@) @@\ 288411d341caSmrg $(LINT) Concat($(LINTLIBFLAG),libname) $(LINTFLAGS) srclist 288511d341caSmrg#endif /* LintLibraryTarget */ 288611d341caSmrg 288711d341caSmrg 288811d341caSmrg/* 288911d341caSmrg * NormalLintTarget - generate rules to lint a set of sources. 289011d341caSmrg */ 289111d341caSmrg#ifndef NormalLintTarget 289211d341caSmrg#define NormalLintTarget(srclist) @@\ 289311d341caSmrglint: @@\ 289411d341caSmrg $(LINT) $(LINTFLAGS) srclist $(LINTLIBS) @@\ 289511d341caSmrglint1: @@\ 289611d341caSmrg $(LINT) $(LINTFLAGS) $(FILE) $(LINTLIBS) 289711d341caSmrg#endif /* NormalLintTarget */ 289811d341caSmrg 289911d341caSmrg 290011d341caSmrg/* 290111d341caSmrg * LintTarget - generate rules to lint $(SRCS) 290211d341caSmrg */ 290311d341caSmrg#ifndef LintTarget 290411d341caSmrg#define LintTarget() @@\ 290511d341caSmrgNormalLintTarget($(SRCS)) 290611d341caSmrg#endif 290711d341caSmrg 290811d341caSmrg 290911d341caSmrg/* 291011d341caSmrg * LinkSourceFile - snag source file from some other directory 291111d341caSmrg */ 291211d341caSmrg#ifndef LinkSourceFile 291311d341caSmrg#define LinkSourceFile(src,dir) @@\ 291411d341caSmrgsrc: dir/src @@\ 291511d341caSmrg RemoveFile($@) @@\ 291611d341caSmrg $(LN) $? $@ @@\ 291711d341caSmrg @@\ 291811d341caSmrgNoConfigRec(src) @@\ 291911d341caSmrg @@\ 292011d341caSmrgincludes:: src @@\ 292111d341caSmrg @@\ 292211d341caSmrgdepend:: src @@\ 292311d341caSmrg @@\ 292411d341caSmrgclean:: @@\ 292511d341caSmrg RemoveFile(src) 292611d341caSmrg#endif 292711d341caSmrg 292811d341caSmrg 292911d341caSmrg/* 293011d341caSmrg * LinkFile - link a file 293111d341caSmrg */ 293211d341caSmrg#ifndef LinkFile 293311d341caSmrg#define LinkFile(tofile,fromfile) @@\ 293411d341caSmrgtofile:: fromfile @@\ 293511d341caSmrg RemoveFile($@) @@\ 293611d341caSmrg $(LN) $? $@ @@\ 293711d341caSmrg @@\ 293811d341caSmrgNoConfigRec(tofile) @@\ 293911d341caSmrg @@\ 294011d341caSmrgincludes:: tofile @@\ 294111d341caSmrg @@\ 294211d341caSmrgdepend:: tofile @@\ 294311d341caSmrg @@\ 294411d341caSmrgclean:: @@\ 294511d341caSmrg RemoveFile(tofile) 294611d341caSmrg#endif 294711d341caSmrg 294811d341caSmrg 294911d341caSmrg#ifndef MakeSubincludesForBuild 295011d341caSmrg#define MakeSubincludesForBuild(step,dir,srclist) @@\ 295111d341caSmrgstep:: dir srclist @@\ 295211d341caSmrg @-(list=`echo srclist | sed -e 's/[^ ]*\///g'`; \ @@\ 295311d341caSmrg set -x; cd dir && RemoveFiles($$list)) @@\ 295411d341caSmrg @for i in srclist; do \ @@\ 295511d341caSmrg (set -x; cd dir && $(LN) ../$$i .); \ @@\ 295611d341caSmrg done @@\ 295711d341caSmrg @@\ 295811d341caSmrgdir:: @@\ 295911d341caSmrg $(MKDIRHIER) dir @@\ 296011d341caSmrg @@\ 296111d341caSmrgclean:: @@\ 296211d341caSmrg @-(if [ -d dir ]; then \ @@\ 296311d341caSmrg list=`echo srclist | sed -e 's/[^ ]*\///g'`; \ @@\ 296411d341caSmrg set -x; cd dir && RemoveFile($$list); else exit 0; fi) 296511d341caSmrg#endif 296611d341caSmrg 296711d341caSmrg 296811d341caSmrg/* 296911d341caSmrg * LangNamedTargetSubdirs - recursively make a series of steps 297011d341caSmrg */ 297111d341caSmrg#ifndef LangNamedTargetSubdirs 297211d341caSmrg#define LangNamedTargetSubdirs(lang,name,dirs,verb,flags,subname) @@\ 297311d341caSmrgname:: @@\ 297411d341caSmrg @MakeFlagsToShellFlags(ik,set +e); \ @@\ 297511d341caSmrg for i in dirs ;\ @@\ 297611d341caSmrg do \ @@\ 297711d341caSmrg echo verb "in $(CURRENT_DIR)/$$i..."; \ @@\ 297811d341caSmrg (cd $$i && LANG=lang $(MAKE) $(MFLAGS) flags subname);\ @@\ 297911d341caSmrg done 298011d341caSmrg#endif 298111d341caSmrg 298211d341caSmrg 298311d341caSmrg/* 298411d341caSmrg * NamedMakeSubdirs - generate rules to do makes in the given subdirectories. 298511d341caSmrg * If you want CDEBUGFLAGS passed along to subdirectories, provide a line like 298611d341caSmrg * the following in the appropriate Imakefile 298711d341caSmrg * 298811d341caSmrg * #define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)' 298911d341caSmrg */ 299011d341caSmrg#ifndef LangNamedMakeSubdirs 299111d341caSmrg#define LangNamedMakeSubdirs(lang,name,dirs) \ 299211d341caSmrgLangNamedTargetSubdirs(lang,name,dirs,"making" name,PassCDebugFlags,all) 299311d341caSmrg#endif /* LangNamedMakeSubdirs */ 299411d341caSmrg 299511d341caSmrg#ifndef LangMakeSubdirs 299611d341caSmrg#define LangMakeSubdirs(lang,dirs) @@\ 299711d341caSmrgLangNamedMakeSubdirs(lang,all,dirs) 299811d341caSmrg#endif /* LangMakeSubdirs */ 299911d341caSmrg 300011d341caSmrg 300111d341caSmrg 300211d341caSmrg/* 300311d341caSmrg * NamedTargetSubdirs - recursively make a series of steps 300411d341caSmrg */ 300511d341caSmrg#ifndef NamedTargetSubdirs 300611d341caSmrg#define NamedTargetSubdirs(name,dirs,verb,flags,subname) @@\ 300711d341caSmrgname:: @@\ 300811d341caSmrg @MakeFlagsToShellFlags(ik,set +e); \ @@\ 300911d341caSmrg for i in dirs ;\ @@\ 301011d341caSmrg do \ @@\ 301111d341caSmrg echo verb "in $(CURRENT_DIR)/$$i..."; \ @@\ 301211d341caSmrg MakeNamedTargetSubdir($$i,flags,subname); \ @@\ 301311d341caSmrg done 301411d341caSmrg#endif 301511d341caSmrg 301611d341caSmrg 301711d341caSmrg/* 301811d341caSmrg * NamedMakeSubdirs - generate rules to do makes in the given subdirectories. 301911d341caSmrg * If you want CDEBUGFLAGS passed along to subdirectories, provide a line like 302011d341caSmrg * the following in the appropriate Imakefile 302111d341caSmrg * 302211d341caSmrg * #define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)' 302311d341caSmrg */ 302411d341caSmrg#ifndef NamedMakeSubdirs 302511d341caSmrg#define NamedMakeSubdirs(name,dirs) \ 302611d341caSmrgNamedTargetSubdirs(name,dirs,"making" name,PassCDebugFlags,all) 302711d341caSmrg#endif /* NamedMakeSubdirs */ 302811d341caSmrg 302911d341caSmrg#ifndef MakeSubdirs 303011d341caSmrg#define MakeSubdirs(dirs) @@\ 303111d341caSmrgNamedMakeSubdirs(all,dirs) 303211d341caSmrg#endif /* MakeSubdirs */ 303311d341caSmrg 303411d341caSmrg 303511d341caSmrg/* 303611d341caSmrg * DependSubdirs - generate rules to recursively compute dependencies as 303711d341caSmrg * part of the make depend step. 303811d341caSmrg */ 303911d341caSmrg#ifndef DependSubdirs 304011d341caSmrg#define DependSubdirs(dirs) \ 304111d341caSmrgNamedTargetSubdirs(depend,dirs,"depending",NullParameter,depend) 304211d341caSmrg#endif /* DependSubdirs */ 304311d341caSmrg 304411d341caSmrg 304511d341caSmrg/* 304611d341caSmrg * ForceSubdirs - force make to build subdirectories 304711d341caSmrg */ 304811d341caSmrg#ifndef ForceSubdirs 304911d341caSmrg#if !HasBsdMake 305011d341caSmrg#define ForceSubdirs(dirs) @@\ 305111d341caSmrgdirs: FRC @@\ 305211d341caSmrg @echo "making all in $(CURRENT_DIR)/$@..." @@\ 305311d341caSmrg @MakeNamedTargetSubdir($@,PassCDebugFlags,all) @@\ 305411d341caSmrg @@\ 305511d341caSmrgFRC: 305611d341caSmrg#else 305711d341caSmrg/* For BSD 4.4 make */ 305811d341caSmrg#define ForceSubdirs(dirs) @@\ 305911d341caSmrgdirs: .EXEC @@\ 306011d341caSmrg @cd $@ ; echo "making all in $(CURRENT_DIR)/$@..."; \ @@\ 306111d341caSmrg $(MAKE) $(MFLAGS) PassCDebugFlags all @@\ 306211d341caSmrg @@\ 306311d341caSmrg.EXEC: 306411d341caSmrg#endif 306511d341caSmrg 306611d341caSmrg#endif /* ForceSubdirs */ 306711d341caSmrg 306811d341caSmrg/* 306911d341caSmrg * InstallSubdirs - generate rules to recursively install programs and files. 307011d341caSmrg */ 307111d341caSmrg#ifndef InstallSubdirs 307211d341caSmrg#define InstallSubdirs(dirs) \ 307311d341caSmrgNamedTargetSubdirs(install,dirs,"installing",DESTDIR=$(DESTDIR),install) 307411d341caSmrg#endif /* InstallSubdirs */ 307511d341caSmrg 307611d341caSmrg 307711d341caSmrg/* 307811d341caSmrg * InstallManSubdirs - generate rules to recursively install manual pages. 307911d341caSmrg */ 308011d341caSmrg#ifndef InstallManSubdirs 308111d341caSmrg#define InstallManSubdirs(dirs) \ 308211d341caSmrgNamedTargetSubdirs(install.man,dirs,"installing man pages",DESTDIR=$(DESTDIR),install.man) 308311d341caSmrg#endif /* InstallManSubdirs */ 308411d341caSmrg 308511d341caSmrg 308611d341caSmrg/* 308711d341caSmrg * IncludesSubdirs - generate rules to recursively put include files in build 308811d341caSmrg */ 308911d341caSmrg#ifndef IncludesSubdirs 309011d341caSmrg#define IncludesSubdirs(dirs) \ 309111d341caSmrgNamedTargetSubdirs(includes,dirs,including,NullParameter,includes) 309211d341caSmrg#endif 309311d341caSmrg 309411d341caSmrg 309511d341caSmrg/* 309611d341caSmrg * InstallDriverSDKSubdirs - generate rules to recursively install Driver 309711d341caSmrg * SDK (only used for XFree86). This is a no-op 309811d341caSmrg * rule so that Imakefiles on non-XFree86 systems 309911d341caSmrg * continue to build Makefiles correctly. 310011d341caSmrg */ 310111d341caSmrg#ifndef InstallDriverSDKSubdirs 310211d341caSmrg#define InstallDriverSDKSubdirs(dirs) 310311d341caSmrg#endif 310411d341caSmrg 310511d341caSmrg/* 310611d341caSmrg * InstallDriverSDKObjectModule - generate rules to recursively install Driver 310711d341caSmrg * SDK (only used for XFree86). This is a no-op 310811d341caSmrg * rule so that Imakefiles on non-XFree86 systems 310911d341caSmrg * continue to build Makefiles correctly. 311011d341caSmrg */ 311111d341caSmrg#ifndef InstallDriverSDKObjectModule 311211d341caSmrg#define InstallDriverSDKObjectModule(module,dest,subdir) 311311d341caSmrg#endif 311411d341caSmrg#ifndef InstallDriverSDKObjectSubModule 311511d341caSmrg#define InstallDriverSDKObjectSubModule(module,dest,subdir) 311611d341caSmrg#endif 311711d341caSmrg 311811d341caSmrg 311911d341caSmrg 312011d341caSmrg/* 312111d341caSmrg * CleanSubdirs - generate rules to recursively clean out garbage files. 312211d341caSmrg */ 312311d341caSmrg#define BootstrapCleanSubdirs /**/ /* used at top-level */ 312411d341caSmrg#ifndef NamedCleanSubdirs 312511d341caSmrg#define NamedCleanSubdirs(name,dirs) \ 312611d341caSmrgNamedTargetSubdirs(name,dirs,"cleaning",BootstrapCleanSubdirs,clean) 312711d341caSmrg#endif /* NamedCleanSubdirs */ 312811d341caSmrg 312911d341caSmrg#ifndef CleanSubdirs 313011d341caSmrg#define CleanSubdirs(dirs) \ 313111d341caSmrgNamedCleanSubdirs(clean,dirs) 313211d341caSmrg#endif 313311d341caSmrg 313411d341caSmrg 313511d341caSmrg/* 313611d341caSmrg * TagSubdirs - generate rules to recursively create tags files. 313711d341caSmrg */ 313811d341caSmrg#ifndef NamedTagSubdirs 313911d341caSmrg#define NamedTagSubdirs(name,dirs) \ 314011d341caSmrgNamedTargetSubdirs(name,dirs,"tagging",TAGS='$(TAGS)',tags) 314111d341caSmrg#endif /* TagSubdirs */ 314211d341caSmrg 314311d341caSmrg#ifndef TagSubdirs 314411d341caSmrg#define TagSubdirs(dirs) \ 314511d341caSmrgNamedTagSubdirs(tags,dirs) 314611d341caSmrg#endif 314711d341caSmrg 314811d341caSmrg/* 314911d341caSmrg * MakeLintSubdirs - generate rules to recursively lint directories as part 315011d341caSmrg * of the named step. 315111d341caSmrg */ 315211d341caSmrg#ifndef MakeLintSubdirs 315311d341caSmrg#define MakeLintSubdirs(dirs,target,subtarget) \ 315411d341caSmrgNamedTargetSubdirs(target,dirs,"linting" for target and subtarget,DESTDIR=$(DESTDIR) LINTOPTS='$(LINTOPTS)',subtarget) 315511d341caSmrg#endif /* MakeLintSubdirs */ 315611d341caSmrg 315711d341caSmrg 315811d341caSmrg/* 315911d341caSmrg * LintSubdirs - generate rules to recursively lint directories as part of 316011d341caSmrg * the make lint step. 316111d341caSmrg */ 316211d341caSmrg#ifndef LintSubdirs 316311d341caSmrg#define LintSubdirs(dirs) @@\ 316411d341caSmrgMakeLintSubdirs(dirs,lint,lint) 316511d341caSmrg#endif /* LintSubdirs */ 316611d341caSmrg 316711d341caSmrg 316811d341caSmrg/* 316911d341caSmrg * MakeLintLibSubdirs - generate rules to recursively create lint libraries. 317011d341caSmrg */ 317111d341caSmrg#ifndef MakeLintLibSubdirs 317211d341caSmrg#define MakeLintLibSubdirs(dirs) @@\ 317311d341caSmrgMakeLintSubdirs(dirs,lintlib,lintlib) 317411d341caSmrg#endif /* MakeLintLibSubdirs */ 317511d341caSmrg 317611d341caSmrg 317711d341caSmrg/* 317811d341caSmrg * MakeMakeSubdirs - generate rules to recursively recreate Makefiles as part 317911d341caSmrg * of the specified step in the build. If $(TOP) is set to an absolute path, 318011d341caSmrg * do not prepend the ../ prefix. This makes running things outside of the 318111d341caSmrg * source tree much easier. 318211d341caSmrg * $(ONESUBDIR)/Makefile exists as a separate, explicit target so that 318311d341caSmrg * clearmake will know what its goal is and do wink-in. 318411d341caSmrg */ 318511d341caSmrg#ifndef MakeMakeSubdirs 318611d341caSmrg#define MakeMakeSubdirs(dirs,target) @@\ 318711d341caSmrg$(ONESUBDIR)/Makefile: @@\ 318811d341caSmrg @MakeFlagsToShellFlags(n,executeit="no"); \ @@\ 318911d341caSmrg cd $(ONESUBDIR) && \ @@\ 319011d341caSmrg if [ "$$executeit" != "no" ]; then \ @@\ 319111d341caSmrg ImakeSubCmdHelper -DTOPDIR=$(IMAKETOP) -DCURDIR=$(ONECURDIR)$(ONESUBDIR); \ @@\ 319211d341caSmrg fi; @@\ 319311d341caSmrg @@\ 319411d341caSmrgtarget:: @@\ 319511d341caSmrg -@MakeFlagsToShellFlags(ik,set +e); \ @@\ 319611d341caSmrg MakeFlagsToShellFlags(n,executeit="no"); \ @@\ 319711d341caSmrg for i in dirs ;\ @@\ 319811d341caSmrg do \ @@\ 319911d341caSmrg case "$(CURRENT_DIR)" in \ @@\ 320011d341caSmrg .) curdir= ;; \ @@\ 320111d341caSmrg *) curdir=$(CURRENT_DIR)/ ;; \ @@\ 320211d341caSmrg esac; \ @@\ 320311d341caSmrg echo "making Makefiles in $$curdir$$i..."; \ @@\ 320411d341caSmrg itmp=`echo $$i | sed -e 's;^\./;;g' -e 's;/\./;/;g'`; \ @@\ 320511d341caSmrg curtmp="$(CURRENT_DIR)" \ @@\ 320611d341caSmrg toptmp=""; \ @@\ 320711d341caSmrg case "$$itmp" in \ @@\ 320811d341caSmrg ../?*) \ @@\ 320911d341caSmrg while echo "$$itmp" | grep '^\.\./' > /dev/null;\ @@\ 321011d341caSmrg do \ @@\ 321111d341caSmrg toptmp="/`basename $$curtmp`$$toptmp"; \ @@\ 321211d341caSmrg curtmp="`dirname $$curtmp`"; \ @@\ 321311d341caSmrg itmp="`echo $$itmp | sed 's;\.\./;;'`"; \ @@\ 321411d341caSmrg done \ @@\ 321511d341caSmrg ;; \ @@\ 321611d341caSmrg esac; \ @@\ 321711d341caSmrg case "$$itmp" in \ @@\ 321811d341caSmrg */?*/?*/?*/?*) newtop=../../../../..;; \ @@\ 321911d341caSmrg */?*/?*/?*) newtop=../../../..;; \ @@\ 322011d341caSmrg */?*/?*) newtop=../../..;; \ @@\ 322111d341caSmrg */?*) newtop=../..;; \ @@\ 322211d341caSmrg *) newtop=..;; \ @@\ 322311d341caSmrg esac; \ @@\ 322411d341caSmrg newtop="$$newtop$$toptmp"; \ @@\ 322511d341caSmrg case "$(TOP)" in \ @@\ 322611d341caSmrg /?*) imaketop=$(TOP) \ @@\ 322711d341caSmrg imakeprefix= ;; \ @@\ 322811d341caSmrg .) imaketop=$$newtop \ @@\ 322911d341caSmrg imakeprefix=$$newtop/ ;; \ @@\ 323011d341caSmrg *) imaketop=$$newtop/$(TOP) \ @@\ 323111d341caSmrg imakeprefix=$$newtop/ ;; \ @@\ 323211d341caSmrg esac; \ @@\ 323311d341caSmrg RemoveFile($$i/Makefile.bak); \ @@\ 323411d341caSmrg if [ -f $$i/Makefile ]; then \ @@\ 323511d341caSmrg echo " $(MV) Makefile Makefile.bak"; \ @@\ 323611d341caSmrg if [ "$$executeit" != "no" ]; then \ @@\ 323711d341caSmrg $(MV) $$i/Makefile $$i/Makefile.bak; \ @@\ 323811d341caSmrg fi; \ @@\ 323911d341caSmrg fi; \ @@\ 324011d341caSmrg $(MAKE) $(MFLAGS) $(MAKE_OPTS) ONESUBDIR=$$i ONECURDIR=$$curdir IMAKETOP=$$imaketop IMAKEPREFIX=$$imakeprefix $$i/Makefile; \ @@\ 324111d341caSmrg if [ -d $$i ] ; then \ @@\ 324211d341caSmrg cd $$i; \ @@\ 324311d341caSmrg $(MAKE) $(MFLAGS) Makefiles; \ @@\ 324411d341caSmrg cd $$newtop; \ @@\ 324511d341caSmrg else \ @@\ 324611d341caSmrg exit 1; \ @@\ 324711d341caSmrg fi; \ @@\ 324811d341caSmrg done 324911d341caSmrg 325011d341caSmrg#ifdef UseInstalled 325111d341caSmrg#define ImakeSubCmdHelper $(IMAKE_CMD) 325211d341caSmrg#else 325311d341caSmrg#define ImakeSubCmdHelper $(IMAKEPREFIX)$(IMAKE) -I$(IMAKEPREFIX)$(IRULESRC) \ 325411d341caSmrg $(IMAKE_DEFINES) $(IMAKE_WARNINGS) 325511d341caSmrg#endif 325611d341caSmrg 325711d341caSmrg#endif /* MakeMakeSubdirs */ 325811d341caSmrg 325911d341caSmrg 326011d341caSmrg/* 326111d341caSmrg * MakefileSubdirs - generate rules to create Makefiles. 326211d341caSmrg */ 326311d341caSmrg#ifndef MakefileSubdirs 326411d341caSmrg#define MakefileSubdirs(dirs) @@\ 326511d341caSmrgMakeMakeSubdirs(dirs,Makefiles) 326611d341caSmrg#endif /* MakefileSubdirs */ 326711d341caSmrg 326811d341caSmrg/* 326911d341caSmrg * Translate XCOMM into pound sign with sed, rather than passing -DXCOMM=XCOMM 327011d341caSmrg * to cpp, because that trick does not work on all ANSI C preprocessors. 327111d341caSmrg * Delete line numbers from the cpp output (-P is not portable, I guess). 327211d341caSmrg * Allow XCOMM to be preceded by whitespace and provide a means of generating 327311d341caSmrg * output lines with trailing backslashes. 327411d341caSmrg * Allow XHASH to always be substituted, even in cases where XCOMM isn't. 327511d341caSmrg */ 327611d341caSmrg#ifndef CppSedMagic 327711d341caSmrg#define CppSedMagic sed -e '/^# *[0-9][0-9]* *.*$$/d' \ 327811d341caSmrg -e '/^#line *[0-9][0-9]* *.*$$/d' \ 327911d341caSmrg -e '/^[ ]*XCOMM$$/s/XCOMM/#/' \ 328011d341caSmrg -e '/^[ ]*XCOMM[^a-zA-Z0-9_]/s/XCOMM/#/' \ 328111d341caSmrg -e '/^[ ]*XHASH/s/XHASH/#/' \ 328211d341caSmrg -e '/\@\@$$/s/\@\@$$/\\/' 328311d341caSmrg#endif /* CppSedMagic */ 328411d341caSmrg 328511d341caSmrg#ifndef CppFileTarget 328611d341caSmrg#define CppFileTarget(dst,src,defs,deplist) @@\ 328711d341caSmrgdst:: src deplist @@\ 328811d341caSmrg RemoveFile($@) @@\ 328911d341caSmrg ClearmakeOSName \ 329011d341caSmrg $(CPP) CppNoLineInfoOption defs <src | CppSedMagic >$@ @@\ 329111d341caSmrg @@\ 329211d341caSmrgclean:: @@\ 329311d341caSmrg RemoveFiles(dst) 329411d341caSmrg#endif /* CppFileTarget */ 329511d341caSmrg 329611d341caSmrg/* 329711d341caSmrg * CppScriptTarget - generate rules to create a shell script by running the 329811d341caSmrg * input through cpp. If the ExecableScripts configuration parameter is not 329911d341caSmrg * set, then make sure that the first line begins with a colon. 330011d341caSmrg */ 330111d341caSmrg#ifndef CppScriptTarget 330211d341caSmrg#if ExecableScripts /* can use #! instead of colon */ 330311d341caSmrg#define CppScriptTarget(dst,src,defs,deplist) @@\ 330411d341caSmrgdst:: src deplist @@\ 330511d341caSmrg RemoveFile($@) @@\ 330611d341caSmrg ClearmakeOSName \ 330711d341caSmrg $(CPP) CppNoLineInfoOption defs <src | CppSedMagic >$@ @@\ 330811d341caSmrg chmod a+x $@ @@\ 330911d341caSmrg @@\ 331011d341caSmrgclean:: @@\ 331111d341caSmrg RemoveFiles(dst) 331211d341caSmrg#else 331311d341caSmrg#define CppScriptTarget(dst,src,defs,deplist) @@\ 331411d341caSmrgdst:: src deplist @@\ 331511d341caSmrg RemoveFile($@) @@\ 331611d341caSmrg ClearmakeOSName \ 331711d341caSmrg echo \: >$@ @@\ 331811d341caSmrg sed '1d' src | $(CPP) CppNoLineInfoOption defs | CppSedMagic >>$@ @@\ 331911d341caSmrg chmod a+x $@ @@\ 332011d341caSmrg @@\ 332111d341caSmrgclean:: @@\ 332211d341caSmrg RemoveFile(dst) 332311d341caSmrg#endif /* ExecableScripts */ 332411d341caSmrg#endif /* CppScriptTarget */ 332511d341caSmrg 332611d341caSmrg 332711d341caSmrg/* 332811d341caSmrg * MakeScriptFromCpp - generate rules to create a script from a file with a 332911d341caSmrg * .cpp suffix. 333011d341caSmrg */ 333111d341caSmrg#ifndef MakeScriptFromCpp 333211d341caSmrg#define MakeScriptFromCpp(name,defs) @@\ 333311d341caSmrgCppScriptTarget(name,name.cpp,defs,NullParameter) 333411d341caSmrg#endif /* MakeScriptFromCpp */ 333511d341caSmrg 333611d341caSmrg#ifndef CppSourceFile 333711d341caSmrg#define CppSourceFile(dst,src,defs,deplist) @@\ 333811d341caSmrgCppFileTarget(dst,src,defs,deplist) @@\ 333911d341caSmrg @@\ 334011d341caSmrgincludes:: dst @@\ 334111d341caSmrg @@\ 334211d341caSmrgdepend:: dst 334311d341caSmrg#endif /* CppSourceFile */ 334411d341caSmrg 334511d341caSmrg/* Like CppFileTarget, but don't add any default defines */ 334611d341caSmrg#ifndef CppRawFileTarget 334711d341caSmrg#define CppRawFileTarget(dst,src,defs,deplist) @@\ 334811d341caSmrgdst:: src deplist @@\ 334911d341caSmrg RemoveFile($@) @@\ 335011d341caSmrg ClearmakeOSName \ 335111d341caSmrg $(RAWCPP) CppNoLineInfoOption defs <src | CppSedMagic >$@ @@\ 335211d341caSmrg @@\ 335311d341caSmrgclean:: @@\ 335411d341caSmrg RemoveFiles(dst) 335511d341caSmrg#endif /* CppFileTarget */ 335611d341caSmrg 335711d341caSmrg/* 335811d341caSmrg * CppManTarget - preprocess man pages. OS-specific man sections are replaced. 335911d341caSmrg */ 336011d341caSmrg#ifndef CppManTarget 336111d341caSmrg#define CppManTarget(name,defs) @@\ 336211d341caSmrgAllTarget(name.$(MANNEWSUFFIX)) @@\ 336311d341caSmrg @@\ 336411d341caSmrgname.$(MANNEWSUFFIX): name.$(MANSRCSUFFIX) @@\ 336511d341caSmrg RemoveFile($@) @@\ 336611d341caSmrg if test -z "$(PREPROCESSMANPAGES)" ; then \ @@\ 336711d341caSmrg cd `dirname name` && \ @@\ 336811d341caSmrg $(LN) `basename name.$(MANSRCSUFFIX)` `basename $@`; \ @@\ 336911d341caSmrg else \ @@\ 337011d341caSmrg ClearmakeOSName \ 337111d341caSmrg $(RAWCPP) CppNoLineInfoOption $(MANDEFS) defs \ @@\ 337211d341caSmrg < name.$(MANSRCSUFFIX) | CppSedMagic >$@; \ @@\ 337311d341caSmrg fi @@\ 337411d341caSmrg @@\ 337511d341caSmrgclean:: @@\ 337611d341caSmrg RemoveFile(name.$(MANNEWSUFFIX)) 337711d341caSmrg#endif /* CppManTarget */ 337811d341caSmrg 337911d341caSmrg/* 338011d341caSmrg * MakeDirectories - generate rules to create a hierarchy of directories. 338111d341caSmrg */ 338211d341caSmrg#ifndef MakeDirectories 338311d341caSmrg#define MakeDirectories(step,dirs) @@\ 338411d341caSmrgstep:: @@\ 338511d341caSmrg DirFailPrefix@MakeFlagsToShellFlags(i,set +e); \ @@\ 338611d341caSmrg for i in dirs; do if [ -d $(DESTDIR)$$i ]; then \ @@\ 338711d341caSmrg set +x; else (set -x; $(MKDIRHIER) $(DESTDIR)$$i); fi; \ @@\ 338811d341caSmrg done 338911d341caSmrg#endif /* MakeDirectories */ 339011d341caSmrg 339111d341caSmrg 339211d341caSmrg/* 339311d341caSmrg * AllTarget - generate rules to build necessary things during make all. 339411d341caSmrg */ 339511d341caSmrg#ifndef AllTarget 339611d341caSmrg#define AllTarget(depends) @@\ 339711d341caSmrgall:: depends 339811d341caSmrg#endif /* AllTarget */ 339911d341caSmrg 340011d341caSmrg#ifdef DefineOldLibraryRules 340111d341caSmrg#include <oldlib.rules> 340211d341caSmrg#endif 340311d341caSmrg 340411d341caSmrg#ifndef StaticLibrary 340511d341caSmrg#define StaticLibrary(libpath,libname) Concat3(libpath,/,LibraryTargetName(libname)) 340611d341caSmrg#endif 340711d341caSmrg 340811d341caSmrg/* 340911d341caSmrg * MakeMutex - generate mutex rules for parallel make 341011d341caSmrg */ 341111d341caSmrg#ifndef MakeMutex 341211d341caSmrg#ifdef MutexDirective 341311d341caSmrg#define MakeMutex(targets) @@\ 341411d341caSmrgMutexDirective: targets 341511d341caSmrg#endif /* MutexDirective */ 341611d341caSmrg#endif /* MakeMutex */ 341711d341caSmrg 341811d341caSmrg/* 341911d341caSmrg * Rules for dynamic modules. These are primarily used by XFree86 342011d341caSmrg */ 342111d341caSmrg 342211d341caSmrg#ifndef LinkBuildModule 342311d341caSmrg#ifdef UseInstalled 342411d341caSmrg#define LinkBuildModule(module,subdir) $(_NULLCMD_) 342511d341caSmrg#else 342611d341caSmrg#define LinkBuildModule(module,subdir)\ 342711d341caSmrg MakeDir($(BUILDMODULEDIR)/subdir) @@\ 342811d341caSmrg RemoveFile($(BUILDMODULEDIR)/subdir/module) @@\ 342911d341caSmrg @(UP="`$(REVPATH) subdir`"; set -x; \ @@\ 343011d341caSmrg cd $(BUILDMODULEDIR)/subdir && \ @@\ 343111d341caSmrg $(LN) $(BUILDMODULETOP)/$${UP}$(CURRENT_DIR)/module .) 343211d341caSmrg#endif 343311d341caSmrg#endif /* LinkBuildModule */ 343411d341caSmrg 343511d341caSmrg#ifndef LinkBuildNamedModule 343611d341caSmrg#ifdef UseInstalled 343711d341caSmrg#define LinkBuildNamedModule(module,name,subdir) $(_NULLCMD_) 343811d341caSmrg#else 343911d341caSmrg#define LinkBuildNamedModule(module,name,subdir)\ 344011d341caSmrg MakeDir($(BUILDMODULEDIR)/subdir) @@\ 344111d341caSmrg RemoveFile($(BUILDMODULEDIR)/subdir/name) @@\ 344211d341caSmrg @(UP="`$(REVPATH) subdir`"; set -x; \ @@\ 344311d341caSmrg cd $(BUILDMODULEDIR)/subdir && \ @@\ 344411d341caSmrg $(LN) $(BUILDMODULETOP)/$${UP}$(CURRENT_DIR)/module name) 344511d341caSmrg#endif 344611d341caSmrg#endif /* LinkBuildNamedModule */ 344711d341caSmrg 344811d341caSmrg/* 344911d341caSmrg * ModuleObjectRule 345011d341caSmrg */ 345111d341caSmrg#ifndef ModuleObjectRule 345211d341caSmrg#define ModuleObjectRule() NormalLibraryObjectRule() 345311d341caSmrg#endif 345411d341caSmrg 345511d341caSmrg/* 345611d341caSmrg * ObjectModuleTarget - build a module as a single object file 345711d341caSmrg */ 345811d341caSmrg#ifndef ObjectModuleTarget 345911d341caSmrg#if MakeDllModules && DoLoadableServer 346011d341caSmrg#define ObjectModuleTarget(module,objects) @@\ 346111d341caSmrgDynamicModuleTarget(Concat(module,_drv.so), objects) 346211d341caSmrg#else 346311d341caSmrg#define ObjectModuleTarget(module,objects) @@\ 346411d341caSmrgNormalRelocatableTarget(Concat(module,_drv), objects) 346511d341caSmrg#endif 346611d341caSmrg#endif 346711d341caSmrg 346811d341caSmrg/* 346911d341caSmrg * LibraryModuleTarget 347011d341caSmrg */ 347111d341caSmrg#ifndef LibraryModuleTarget 347211d341caSmrg#if MakeDllModules && DoLoadableServer 347311d341caSmrg#define LibraryModuleTarget(module,objects) @@\ 347411d341caSmrgNormalLibraryTarget(module, objects) @@\ 347511d341caSmrgDynamicModuleTarget(Concat3(lib,module,.so), objects) 347611d341caSmrg#else 347711d341caSmrg#define LibraryModuleTarget(module, objects) @@\ 347811d341caSmrgNormalLibraryTarget(module, objects) 347911d341caSmrg#endif 348011d341caSmrg#endif 348111d341caSmrg 348211d341caSmrg/* 348311d341caSmrg * DepLibraryModuleTarget 348411d341caSmrg */ 348511d341caSmrg#ifndef DepLibraryModuleTarget 348611d341caSmrg#if MakeDllModules && DoLoadableServer 348711d341caSmrg#define DepLibraryModuleTarget(module,deplist,objects) @@\ 348811d341caSmrgNormalDepLibraryTarget(module, deplist, objects) @@\ 348911d341caSmrgDepDynamicModuleTarget(Concat3(lib,module,.so), deplist, objects) 349011d341caSmrg#else 349111d341caSmrg#define DepLibraryModuleTarget(module,deplist,objects) @@\ 349211d341caSmrgNormalDepLibraryTarget(module, deplist, objects) 349311d341caSmrg#endif 349411d341caSmrg#endif 349511d341caSmrg 349611d341caSmrg/* 349711d341caSmrg * DynamicModuleTarget - build a module to be dynamically loaded 349811d341caSmrg */ 349911d341caSmrg#ifndef DynamicModuleTarget 350011d341caSmrg#define DynamicModuleTarget(module,modlist) @@\ 350111d341caSmrgAllTarget(module) @@\ 350211d341caSmrg @@\ 350311d341caSmrgmodule: modlist @@\ 350411d341caSmrg RemoveFile($@) @@\ 350511d341caSmrg $(CC) -o $@ $(SHLIBLDFLAGS) $(NOSTDLIB) modlist $(POSTNOSTDLIB) @@\ 350611d341caSmrg @@\ 350711d341caSmrgclean:: @@\ 350811d341caSmrg RemoveFile(module) 350911d341caSmrg#endif /* DynamicModuleTarget */ 351011d341caSmrg 351111d341caSmrg/* 351211d341caSmrg * DepDynamicModuleTarget - build a module to be dynamically loaded 351311d341caSmrg */ 351411d341caSmrg#ifndef DepDynamicModuleTarget 351511d341caSmrg#define DepDynamicModuleTarget(module,deplist,modlist) @@\ 351611d341caSmrgAllTarget(module) @@\ 351711d341caSmrg @@\ 351811d341caSmrgmodule: deplist @@\ 351911d341caSmrg RemoveFile($@) @@\ 352011d341caSmrg $(CC) -o $@ $(SHLIBLDFLAGS) $(NOSTDLIB) modlist $(POSTNOSTDLIB) @@\ 352111d341caSmrg @@\ 352211d341caSmrgclean:: @@\ 352311d341caSmrg RemoveFile(module) 352411d341caSmrg#endif /* DepDynamicModuleTarget */ 352511d341caSmrg 352611d341caSmrg/* 352711d341caSmrg * InstallDynamicModule - install a dynamic module 352811d341caSmrg */ 352911d341caSmrg#ifndef InstallDynamicModule 353011d341caSmrg#define InstallDynamicModule(module,dest,subdir) @@\ 353111d341caSmrgAllTarget(module) @@\ 353211d341caSmrg LinkBuildModule(module,subdir) @@\ 353311d341caSmrg @@\ 353411d341caSmrginstall:: module @@\ 353511d341caSmrg MakeDir($(DESTDIR)dest/subdir) @@\ 353611d341caSmrg $(INSTALL) -c $(INSTDATFLAGS) module $(DESTDIR)dest/subdir 353711d341caSmrg#endif 353811d341caSmrg 353911d341caSmrg#ifndef InstallDynamicNamedModule 354011d341caSmrg#define InstallDynamicNamedModule(module,instname,dest,subdir) @@\ 354111d341caSmrgAllTarget(module) @@\ 354211d341caSmrg LinkBuildNamedModule(module,instname,subdir) @@\ 354311d341caSmrg @@\ 354411d341caSmrginstall:: module @@\ 354511d341caSmrg MakeDir($(DESTDIR)dest/subdir) @@\ 354611d341caSmrg $(INSTALL) -c $(INSTDATFLAGS) module $(DESTDIR)dest/subdir/instname 354711d341caSmrg#endif 354811d341caSmrg 354911d341caSmrg/* Shortcuts for installing driver module, one per class */ 355011d341caSmrg#ifndef InstallVideoObjectModule 355111d341caSmrg#define InstallVideoObjectModule(module,dest) @@\ 355211d341caSmrgInstallObjectModule(module,dest,drivers) 355311d341caSmrg#endif 355411d341caSmrg#ifndef InstallInputObjectModule 355511d341caSmrg#define InstallInputObjectModule(module,dest) @@\ 355611d341caSmrgInstallObjectModule(module,dest,input) 355711d341caSmrg#endif 355811d341caSmrg#ifndef InstallExtensionsObjectModule 355911d341caSmrg#define InstallExtensionsObjectModule(module,dest) @@\ 356011d341caSmrgInstallObjectModule(module,dest,extensions) 356111d341caSmrg#endif 356211d341caSmrg#ifndef InstallFontsObjectModule 356311d341caSmrg#define InstallFontsObjectModule(module,dest) @@\ 356411d341caSmrgInstallObjectModule(module,dest,fonts) 356511d341caSmrg#endif 356611d341caSmrg#ifndef InstallMultimediaObjectModule 356711d341caSmrg#define InstallMultimediaObjectModule(module,dest) @@\ 356811d341caSmrgInstallObjectModule(module,dest,multimedia) 356911d341caSmrg#endif 357011d341caSmrg 357111d341caSmrg#ifndef InstallObjectModule 357211d341caSmrg#if !DoLoadableServer 357311d341caSmrg#define InstallObjectModule(module,dest,subdir) /**/ 357411d341caSmrg#else 357511d341caSmrg#if MakeDllModules 357611d341caSmrg#define InstallObjectModule(module,dest,subdir) @@\ 357711d341caSmrgInstallDynamicModule(Concat(module,_drv.so),dest,subdir) 357811d341caSmrg#else 357911d341caSmrg#define InstallObjectModule(module,dest,subdir) @@\ 358011d341caSmrgInstallDynamicModule(Concat(module,_drv.o),dest,subdir) 358111d341caSmrg#endif 358211d341caSmrg#endif 358311d341caSmrg#endif 358411d341caSmrg 358511d341caSmrg#ifndef InstallLibraryModule 358611d341caSmrg#if !DoLoadableServer 358711d341caSmrg#define InstallLibraryModule(module,dest,subdir) /**/ 358811d341caSmrg#else 358911d341caSmrg#if MakeDllModules 359011d341caSmrg#define InstallLibraryModule(module,dest,subdir) @@\ 359111d341caSmrgInstallDynamicModule(Concat3(lib,module,.so),dest,subdir) 359211d341caSmrg#else 359311d341caSmrg#define InstallLibraryModule(module,dest,subdir) @@\ 359411d341caSmrgInstallDynamicModule(ModuleLibraryTargetName(module),dest,subdir) 359511d341caSmrg#endif 359611d341caSmrg#endif 359711d341caSmrg#endif 359811d341caSmrg 359911d341caSmrg#ifndef InstallModuleManPage 360011d341caSmrg#define InstallModuleManPage(module) @@\ 360111d341caSmrgInstallGenManPage(module,$(DRIVERMANDIR),$(DRIVERMANSUFFIX)) 360211d341caSmrg#endif 360311d341caSmrg 360411d341caSmrg#ifndef BuildObjectFromLibraryWithPath 360511d341caSmrg#define BuildObjectFromLibraryWithPath(libpath,libname,objname) @@\ 360611d341caSmrgAllTarget(objname.Osuf) @@\ 360711d341caSmrg @@\ 360811d341caSmrgobjname.Osuf: Concat3(libpath,/lib,libname.a) @@\ 360911d341caSmrg @$(MKDIRHIER) tmp @@\ 361011d341caSmrg @$(CP) Concat3(libpath,/lib,libname.a) tmp @@\ 361111d341caSmrg @(cd tmp; set -x; ArExtCmd Concat(lib,libname.a); \ @@\ 361211d341caSmrg $(LD) $(LDCOMBINEFLAGS) *.Osuf -o ../$@; \ @@\ 361311d341caSmrg RemoveFiles(*.Osuf)) @@\ 361411d341caSmrg @$(RM) -r tmp @@\ 361511d341caSmrg @@\ 361611d341caSmrgclean:: @@\ 361711d341caSmrg RemoveFile(objname.Osuf) 361811d341caSmrg#endif 361911d341caSmrg 362011d341caSmrg#ifndef BuildObjectFromLibrary 362111d341caSmrg#define BuildObjectFromLibrary(libname,objname) BuildObjectFromLibraryWithPath(.,libname,objname) 362211d341caSmrg#endif 362311d341caSmrg 362411d341caSmrg/* 362511d341caSmrg * LinkerRuntimeLibraryPathFlag - defined here to be a no-op for systems that 362611d341caSmrg * don't need it. Overridden in system-specific config files for systems that 362711d341caSmrg * need it, usually with something like "Concat(-R,path)" 362811d341caSmrg */ 362911d341caSmrg#ifndef LinkerRuntimeLibraryPathFlag 363011d341caSmrg# define LinkerRuntimeLibraryPathFlag(path) /* */ 363111d341caSmrg#endif 363211d341caSmrg 363311d341caSmrg/* Phony targets - GNU make has a feature to mark a target as phony, 363411d341caSmrg * which means that it wont consider that target to be the name of a 363511d341caSmrg * file. In general this speeds up make, since it doesn't have to 363611d341caSmrg * look for those files when it sets out to create a phony target. 363711d341caSmrg * However, on cygwin, this is actually required for correct 363811d341caSmrg * operation, since the Win32 filesystems are case insensitive and the 363911d341caSmrg * install target conflicts with the INSTALL file present in some 364011d341caSmrg * (autotooled) directories. 364111d341caSmrg * 364211d341caSmrg * We probably don't need the #ifdef protection, since other make 364311d341caSmrg * implementations would just consider this a normal rule. Better 364411d341caSmrg * safe than sorry, though. 364511d341caSmrg */ 364611d341caSmrg#if HasGnuMake 364711d341caSmrg.PHONY: all interfaces install install.man install.lib install.sdk \ 364811d341caSmrg depend includes clean 364911d341caSmrg#endif 3650