📄 imake.rules
字号:
/* * InstallNonExecFile - generate rules to install a data file */#ifndef InstallNonExecFile#define InstallNonExecFile(file,dest) @@\InstallTarget(install,file,$(INSTDATFLAGS),dest)#endif /* InstallNonExecFile *//* * InstallNonExecFileNoClobber - install a data file once */#ifndef InstallNonExecFileNoClobber#define InstallNonExecFileNoClobber(file,dest) @@\InstallNamedTargetNoClobber(install,file,$(INSTDATFLAGS),dest,file)#endif /* InstallNonExecFileNoClobber *//* * InstallLinkKitNonExecFile - rule for installing server Link Kit files. * (only used for XFree86). This is a no-op * rule so that Imakefiles on non-XFree86 systems * continue to build Makefiles correctly. */#ifndef InstallLinkKitNonExecFile#define InstallLinkKitNonExecFile(file,dir)#endif/* * InstallNonExec - generate rules to install a data file, but does not * try to create the destination directory (deprecated) */#ifndef InstallNonExec#define InstallNonExec(file,dest) @@\install:: file @@\ $(INSTALL) $(INSTALLFLAGS) $(INSTDATFLAGS) file $(DESTDIR)dest#endif /* InstallNonExec *//* * InstallProgramWithFlags - generate rules to install an executable program * using given install flags. */#ifndef InstallProgramWithFlags#define InstallProgramWithFlags(program,dest,flags) @@\InstallTarget(install,ProgramTargetName(program),$(INSTPGMFLAGS) flags,dest)#endif /* InstallProgramWithFlags *//* * InstallProgram - generate rules to install an executable program using any * special install flags set in $(INSTALLFLAGS). */#ifndef InstallProgram#define InstallProgram(program,dest) @@\InstallProgramWithFlags(program,dest,NullParameter)#endif /* InstallProgram *//* * InstallScript - install a shell script. */#ifndef InstallScript#define InstallScript(program,dest) @@\InstallNamedTarget(install,program.script,$(INSTBINFLAGS),dest,program)#endif /* InstallScript *//* * InstallNamedProg - install a program with renaming and no stripping. */#ifndef InstallNamedProg#define InstallNamedProg(srcname,dstname,dest) @@\InstallNamedTarget(install,srcname,$(INSTBINFLAGS),dest,dstname)#endif /* InstallNamedProg *//* * InstallNamedProgNoClobber - Like InstallNamedProg, but doesn't * do the install if an installed version already exists. */#ifndef InstallNamedProgNoClobber#define InstallNamedProgNoClobber(srcname,dstname,dest) @@\InstallNamedTargetNoClobber(install,srcname,$(INSTBINFLAGS),dest,dstname)#endif /* InstallNamedProgNoClobber *//* * InstallLinkKitNamedProg - rule for installing server Link Kit files. * (only used for XFree86). This is a no-op * rule so that Imakefiles on non-XFree86 systems * continue to build Makefiles correctly. */#ifndef InstallLinkKitNamedProg#define InstallLinkKitNamedProg(srcname,dstname,dest)#endif/* * MakeFlagsToShellFlags - set variables before starting a loop. * makeflags is the set of "make" flags to check. * shellcmd is the shell command to execute if any of the flags are set. * * The usual use of this rule is to translate make's "don't quit on error" * flags into the equivalent for the shell. To do this, "make -i" always * becomes "set +e". "make -k" should also turn on "set +e" if the target * is building subdirectories. That is, subdirectories are independent * and should appear to be multiple targets, even though they are * implemented in a loop in a single target. */#ifndef MakeFlagsToShellFlags#define MakeFlagsToShellFlags(makeflags,shellcmd)\ for flag in ${MAKEFLAGS} ''; do \ @@\ case "$$flag" in *=*) ;; *[makeflags]*) shellcmd;; esac; done#endif/* * MakeNamedTargetSubdir - do make in a subdir. */#ifndef MakeNamedTargetSubdir#define MakeNamedTargetSubdir(dir,flags,subname)\ (cd dir && $(MAKE) $(MFLAGS) $(PARALLELMFLAGS) \ @@\ flags subname)#endif/* * LinkFileList - link a list of files from one place to another */#ifndef LinkFileList#define LinkFileList(step,list,dir,sub) @@\step:: list @@\ @MakeFlagsToShellFlags(i,set +e); \ @@\ echo " cd" dir; cd dir && \ @@\ for i in list; do (set -x; RemoveFile($$i); $(LN) sub/$$i .); done#endif/* * LinkVarDirectory * * Make links from $LIBDIR (<ProjectRoot>/lib/X11) to /var/X11/ * For example /usr/X11R6/lib/X11/xdm ==> /var/X11/xdm so that X can be * run from a read-only volume like a CD-ROM. */#ifndef LinkVarDirectory#if HasVarDirectory && HasSymLinks#define LinkVarDirectory(mdir,cdir,rdir,ldir) @@\install:: @@\ MakeDir(Concat($(DESTDIR)$(LIBDIR)/,cdir)) @@\ MakeDir(Concat($(VARDIR)/,mdir)) @@\ @MakeFlagsToShellFlags(i,set +e); \ @@\ if [ -d Concat($(DESTDIR)$(LIBDIR)/,cdir) ]; then \ @@\ cd Concat($(DESTDIR)$(LIBDIR)/,cdir); \ @@\ if [ -d rdir -a ! -h rdir ]; then \ @@\ (cd rdir; tar cf - . | (cd Concat($(VARDIR)/,mdir); tar xf -; exit 0); exit 0); \ @@\ fi; \ @@\ $(RM) -r rdir; \ @@\ $(LN) Concat($(VARDIR)/,mdir) ldir; \ @@\ fi#else#define LinkVarDirectory(mdir,cdir,rdir,ldir)#endif#endif/* * InstallMultipleDestFlags - generate rules to install multiple files at * once during a particular step in the build using a specific set of install * flags. */#ifndef InstallMultipleDestFlags#define InstallMultipleDestFlags(step,list,dest,flags) @@\step:: list @@\ MakeDir($(DESTDIR)dest) @@\ @MakeFlagsToShellFlags(i,set +e); \ @@\ for i in list; do \ @@\ (set -x; $(INSTALL) $(INSTALLFLAGS) flags $$i $(DESTDIR)dest); \ @@\ done#endif /* InstallMultipleDestFlags *//* * InstallLinkKitMultipleDestFlags - rule for installing server Link Kit files. * (only used for XFree86). This is a no-op * rule so that Imakefiles on non-XFree86 systems * continue to build Makefiles correctly. */#ifndef InstallLinkKitMultipleDestFlags#define InstallLinkKitMultipleDestFlags(list,dest,flags)#endif/* * InstallMultipleDest - generate rules to install multiple files at once * during a particular step in the build using any install flags set in * $(INSTDATFLAGS). */#ifndef InstallMultipleDest#define InstallMultipleDest(step,list,dest) @@\InstallMultipleDestFlags(step,list,dest,$(INSTDATFLAGS))#endif /* InstallMultipleDest *//* * InstallMultiple - generate rules to install multiple files at once * during the install step of the build using any install flags set in * $(INSTALLFLAGS). */#ifndef InstallMultiple#define InstallMultiple(list,dest) @@\InstallMultipleDest(install,list,dest)#endif /* InstallMultiple *//* * InstallMultipleFlags - generate rules to install multiple files at once * during the install step of the build using the given install flags. */#ifndef InstallMultipleFlags#define InstallMultipleFlags(list,dest,flags) @@\InstallMultipleDestFlags(install,list,dest,flags)#endif /* InstallMultipleFlags *//* * InstallMultipleMan - generate rules to install a variety of manual pages * during the install.man step of the build. */#ifndef InstallMultipleMan#define InstallMultipleMan(list,dest) @@\InstallMultipleDestFlags(install.man,list,dest,$(INSTMANFLAGS))#endif /* InstallMultipleMan *//* * IncludeMakefile - rule to include another Makefile. * Must not generate an error or even a warning if the named file * is not present, since we use this to include Makefile.dep, which * may not be built yet. * This is defined non-null iff HasMakefileSafeInclude is YES. * The double-@ is to ensure no leading spaces on the line. */#ifndef IncludeMakefile#if HasClearmake#define IncludeMakefile(file) @@sinclude file#else#if HasBsdMake#define IncludeMakefile(file) @@# dependencies are in .depend#else#define IncludeMakefile(file) /**/#endif#endif#endif/* * DependDependencyStatement - Used by DependDependency to set up the * most specific dependency, which differs based on whether we support * a separate Makefile.dep on this platform. */#ifndef DependDependencyStatement#if HasMakefileSafeInclude#define DependDependencyStatement() @@\DependFileName:: ProgramTargetName($(DEPEND))#else#define DependDependencyStatement() @@\depend:: ProgramTargetName($(DEPEND))#endif#endif/* * DependDependency - generate rules to build the makedepend program if * this Imakefile is within the source tree. */#ifndef DependDependency#ifdef UseInstalled#define DependDependency() /**/#else#define DependDependency() @@\DependDependencyStatement() @@\ @@\NoCmpScript(ProgramTargetName($(DEPEND))) @@\ @@\ProgramTargetName($(DEPEND)): @@\ @echo "checking $@ over in $(DEPENDSRC) first..."; \ @@\ cd $(DEPENDSRC) && $(MAKE); \ @@\ echo "okay, continuing in $(CURRENT_DIR)"#endif /* UseInstalled */#endif /* DependDependency *//* * DependTarget - generate rules to compute dependencies for all files listed * in $(SRCS). */#ifndef DependTarget#if HasMakefileSafeInclude#define DependTarget() @@\DependDependency() @@\ @@\depend:: DependFileName @@\ @@\DependFileName:: @@\ RemoveFile($@) @@\ RunProgram(DEPEND,-f- $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- $(SRCS)) > $@#else /* HasMakefileSafeInclude */#define DependTarget() @@\DependDependency() @@\ @@\depend:: @@\ RunProgram(DEPEND,$(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- $(SRCS))#endif /* HasMakefileSafeInclude else */#endif /* DependTarget *//* * DependTarget3 - generate rules to compute dependencies for all files given. */#ifndef DependTarget3#if HasMakefileSafeInclude#define DependTarget3(srcs1,srcs2,srcs3) @@\DependDependency() @@\ @@\depend:: DependFileName @@\ @@\DependFileName:: @@\ RemoveFile($@) @@\ RunProgram(DEPEND,-f- $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- srcs1) > $@ @@\ RunProgram(DEPEND,-f- $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- srcs2) >> $@ @@\ RunProgram(DEPEND,-f- $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- srcs3) >> $@#else /* HasMakefileSafeInclude */#define DependTarget3(srcs1,srcs2,srcs3) @@\DependDependency() @@\ @@\depend:: @@\ RunProgram(DEPEND,$(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- srcs1) @@\ RunProgram(DEPEND,-a $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- srcs2) @@\ RunProgram(DEPEND,-a $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- srcs3)#endif /* HasMakefileSafeInclude else */#endif /* DependTarget3 *//* * CleanTarget - generate rules to remove any garbage files */#ifndef CleanTarget#define CleanTarget() @@\clean:: @@\ $(RM) FilesToClean ExtraFilesToClean "#"* @@\ @@\ProofCleanTarget()#endif /* CleanTarget *//* * TagsTarget - generate rules to compute tags files for C source code. */#ifndef TagsTarget#define TagsTarget() @@\tags:: @@\ $(TAGS) -w *.[ch] @@\ $(TAGS) -xw *.[ch] > TAGS#endif /* TagsTarget *//* * ImakeDependency - generate rules to compile imake if this Imakefile is * within the source tree. */#ifndef ImakeDependency#ifdef UseInstalled#define ImakeDependency(target) /**/#else#define ImakeDependency(target) @@\target:: ProgramTargetName($(IMAKE)) @@\ @@\NoCmpScript(ProgramTargetName($(IMAKE)) $(IMAKE).Osuf) @@\ @@\ProgramTargetName($(IMAKE)) $(IMAKE).Osuf: @@\ -@(cd $(IMAKESRC) && if [ -f Makefile ]; then \ @@\ echo "checking $@ in $(IMAKESRC) first..."; $(MAKE) all; else \ @@\ echo "bootstrapping $@ from Makefile.ini in $(IMAKESRC) first..."; \ @@\ $(MAKE) -f Makefile.ini BOOTSTRAPCFLAGS="$(BOOTSTRAPCFLAGS)"; fi; \ @@\ echo "okay, continuing in $(CURRENT_DIR)")#endif /* UseInstalled */#endif /* ImakeDependency *//* * BuildMakefileTarget - generate rules to build a Makefile from an Imakefile * and any special imake flags. This is generally done automatically by the * template or by any special Imakefiles. The first argument exists just * because imakeflags is usually empty and some preprocessors will complain * if an empty argument is passed as the sole argument to a macro.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -