📄 imake.rules
字号:
* relocatable object file instead of a library. */#ifndef DebuggedRelocatableTarget#define DebuggedRelocatableTarget(objname,objlist) @@\AllTarget(Concat(objname,_d.o)) @@\ @@\Concat(objname,_d.o): objlist @@\ $(RM) $@ @@\ $(LD) -X -r objlist -o $@#endif /* DebuggedRelocatableTarget *//* * LintLibraryTarget - generate rules to create a lint library. Note that the * lint library is always forced to be newer than the library itself. */#ifndef LintLibraryTarget#define LintLibraryTarget(libname,srclist) @@\lintlib:: Concat(llib-l,libname.ln) @@\ @@\Concat(llib-l,libname.ln): srclist @@\ $(RM) $@ @@\ $(LINT) Concat($(LINTLIBFLAG),libname) $(LINTFLAGS) srclist#endif /* LintLibraryTarget *//* * NormalLintTarget - generate rules to lint a set of sources. */#ifndef NormalLintTarget#define NormalLintTarget(srclist) @@\lint: @@\ $(LINT) $(LINTFLAGS) srclist $(LINTLIBS) @@\lint1: @@\ $(LINT) $(LINTFLAGS) $(FILE) $(LINTLIBS)#endif /* NormalLintTarget *//* * LintTarget - generate rules to lint $(SRCS) */#ifndef LintTarget#define LintTarget() @@\NormalLintTarget($(SRCS))#endif/* * LinkSourceFile - snag source file from some other directory */#ifndef LinkSourceFile#define LinkSourceFile(src,dir) @@\src: dir/src @@\ $(RM) $@ @@\ $(LN) $? $@ @@\#endif/* * LinkFile - link a file */#ifndef LinkFile#define LinkFile(tofile,fromfile) @@\tofile:: fromfile @@\ $(RM) $@ @@\ $(LN) $? $@#endif#ifndef MakeSubincludesForBuild#define MakeSubincludesForBuild(step,dir,srclist) @@\step:: dir srclist @@\ @-(list=`echo srclist | sed -e 's/[^ ]*\///g'`; \ @@\ set -x; cd dir; $(RM) $$list) @@\ @for i in srclist; do \ @@\ (set -x; cd dir; $(LN) ../$$i .); \ @@\ done @@\ @@\dir:: @@\ $(MKDIRHIER) dir @@\ @@\clean:: @@\ @-(if [ -d dir ]; then \ @@\ list=`echo srclist | sed -e 's/[^ ]*\///g'`; \ @@\ set -x; cd dir; $(RM) $$list; else exit 0; fi)#endif/* * NamedTargetSubdirs - recursively make a series of steps */#ifndef NamedTargetSubdirs#define NamedTargetSubdirs(name,dirs,verb,flags,subname) @@\name:: @@\ @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ @@\ for i in dirs ;\ @@\ do \ @@\ (cd $$i ; echo verb "in $(CURRENT_DIR)/$$i..."; \ @@\ $(MAKE) $(MFLAGS) flags subname); \ @@\ done#endif/* * NamedMakeSubdirs - generate rules to do makes in the given subdirectories. * If you want CDEBUGFLAGS passed along to subdirectories, provide a line like * the following in the appropriate Imakefile * * #define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)' */#ifndef NamedMakeSubdirs#define NamedMakeSubdirs(name,dirs) \NamedTargetSubdirs(name,dirs,"making" name,PassCDebugFlags,all)#endif /* NamedMakeSubdirs */#ifndef MakeSubdirs#define MakeSubdirs(dirs) @@\NamedMakeSubdirs(all,dirs)#endif /* MakeSubdirs *//* * DependSubdirs - generate rules to recursively compute dependencies as * part of the make depend step. */#ifndef DependSubdirs#define DependSubdirs(dirs) \NamedTargetSubdirs(depend,dirs,"depending",NullParameter,depend)#endif /* DependSubdirs *//* * ForceSubdirs - force make to build subdirectories */#ifndef ForceSubdirs#define ForceSubdirs(dirs) @@\dirs: FRC @@\ @cd $@ ; echo "making all in $(CURRENT_DIR)/$@..."; \ @@\ $(MAKE) $(MFLAGS) PassCDebugFlags all @@\ @@\FRC:#endif /* ForceSubdirs *//* * InstallSubdirs - generate rules to recursively install programs and files. */#ifndef InstallSubdirs#define InstallSubdirs(dirs) \NamedTargetSubdirs(install,dirs,"installing",DESTDIR='$(DESTDIR)',install)#endif /* InstallSubdirs *//* * InstallManSubdirs - generate rules to recursively install manual pages. */#ifndef InstallManSubdirs#define InstallManSubdirs(dirs) \NamedTargetSubdirs(install.man,dirs,"installing man pages",DESTDIR='$(DESTDIR)',install.man)#endif /* InstallManSubdirs *//* * IncludesSubdirs - generate rules to recursively put include files in build */#ifndef IncludesSubdirs#define IncludesSubdirs(dirs) \NamedTargetSubdirs(includes,dirs,including,NullParameter,includes)#endif/* * CleanSubdirs - generate rules to recursively clean out garbage files. */#ifndef NamedCleanSubdirs#define NamedCleanSubdirs(name,dirs) \NamedTargetSubdirs(name,dirs,"cleaning",RM_CMD='$(RM_CMD)',clean)#endif /* NamedCleanSubdirs */#ifndef CleanSubdirs#define CleanSubdirs(dirs) \NamedCleanSubdirs(clean,dirs)#endif/* * TagSubdirs - generate rules to recursively create tags files. */#ifndef NamedTagSubdirs#define NamedTagSubdirs(name,dirs) \NamedTargetSubdirs(name,dirs,"tagging",TAGS='$(TAGS)',tags)#endif /* TagSubdirs */#ifndef TagSubdirs#define TagSubdirs(dirs) \NamedTagSubdirs(tags,dirs)#endif/* * MakeLintSubdirs - generate rules to recursively lint directories as part * of the named step. */#ifndef MakeLintSubdirs#define MakeLintSubdirs(dirs,target,subtarget) \NamedTargetSubdirs(target,dirs,"linting" for target and subtarget,DESTDIR='$(DESTDIR)' LINTOPTS='$(LINTOPTS)',subtarget)#endif /* MakeLintSubdirs *//* * LintSubdirs - generate rules to recursively lint directories as part of * the make lint step. */#ifndef LintSubdirs#define LintSubdirs(dirs) @@\MakeLintSubdirs(dirs,lint,lint)#endif /* LintSubdirs *//* * MakeLintLibSubdirs - generate rules to recursively create lint libraries. */#ifndef MakeLintLibSubdirs#define MakeLintLibSubdirs(dirs) @@\MakeLintSubdirs(dirs,lintlib,lintlib)#endif /* MakeLintLibSubdirs *//* * MakeMakeSubdirs - generate rules to recursively recreate Makefiles as part * of the specified step in the build. If $(TOP) is set to an absolute path, * do not prepend the ../ prefix. This makes running things outside of the * source tree to be much easier. */#ifndef MakeMakeSubdirs#define MakeMakeSubdirs(dirs,target) @@\target:: @@\ @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ @@\ for i in dirs ;\ @@\ do \ @@\ echo "making Makefiles in $(CURRENT_DIR)/$$i..."; \ @@\ case "$$i" in \ @@\ ./?*/?*/?*/?*) newtop=../../../../ sub=subsubsubsub;; \ @@\ ./?*/?*/?*) newtop=../../../ sub=subsubsub;; \ @@\ ./?*/?*) newtop=../../ sub=subsub;; \ @@\ ./?*) newtop=../ sub=sub;; \ @@\ */?*/?*/?*) newtop=../../../../ sub=subsubsubsub;; \ @@\ */?*/?*) newtop=../../../ sub=subsubsub;; \ @@\ */?*) newtop=../../ sub=subsub;; \ @@\ *) newtop=../ sub=sub;; \ @@\ esac; \ @@\ case "$(TOP)" in \ @@\ /?*) newtop= upprefix= ;; \ @@\ *) upprefix=../ ;; \ @@\ esac; \ @@\ $(MAKE) $${sub}dirMakefiles UPPREFIX=$$upprefix NEWTOP=$$newtop \ @@\ MAKEFILE_SUBDIR=$$i NEW_CURRENT_DIR=$(CURRENT_DIR)/$$i;\ @@\ done#endif /* MakeMakeSubdirs *//* * MakeNsubdirMakefiles - generate rules to create sub Makefiles. */#ifndef MakeNsubdirMakefiles#define MakeNsubdirMakefiles() @@\subdirMakefiles: @@\ $(RM) $(MAKEFILE_SUBDIR)/Makefile.bak @@\ -@if [ -f $(MAKEFILE_SUBDIR)/Makefile ]; then set -x; \ @@\ $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak; \ @@\ else exit 0; fi @@\ cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=$(UPPREFIX)$(TOP) -DCURDIR=$(NEW_CURRENT_DIR); \ @@\ $(MAKE) $(MFLAGS) Makefiles @@\ @@\subsubdirMakefiles: @@\ $(RM) $(MAKEFILE_SUBDIR)/Makefile.bak @@\ -@if [ -f $(MAKEFILE_SUBDIR)/Makefile ]; then set -x; \ @@\ $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak; \ @@\ else exit 0; fi @@\ cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=$(UPPREFIX)$(UPPREFIX)$(TOP) -DCURDIR=$(NEW_CURRENT_DIR); \ @@\ $(MAKE) $(MFLAGS) Makefiles @@\ @@\subsubsubdirMakefiles: @@\ $(RM) $(MAKEFILE_SUBDIR)/Makefile.bak @@\ -@if [ -f $(MAKEFILE_SUBDIR)/Makefile ]; then set -x; \ @@\ $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak; \ @@\ else exit 0; fi @@\ cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=$(UPPREFIX)$(UPPREFIX)$(UPPREFIX)$(TOP) -DCURDIR=$(NEW_CURRENT_DIR); \ @@\ $(MAKE) $(MFLAGS) Makefiles @@\ @@\subsubsubsubdirMakefiles: @@\ $(RM) $(MAKEFILE_SUBDIR)/Makefile.bak @@\ -@if [ -f $(MAKEFILE_SUBDIR)/Makefile ]; then set -x; \ @@\ $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak; \ @@\ else exit 0; fi @@\ cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=$(UPPREFIX)$(UPPREFIX)$(UPPREFIX)$(UPPREFIX)$(TOP) -DCURDIR=$(NEW_CURRENT_DIR); \ @@\ $(MAKE) $(MFLAGS) Makefiles#endif /* MakeNsubdirMakefiles *//* * MakefileSubdirs - generate rules to create Makefiles. */#ifndef MakefileSubdirs#define MakefileSubdirs(dirs) @@\MakeMakeSubdirs(dirs,Makefiles) @@\ @@\MakeNsubdirMakefiles()#endif /* MakefileSubdirs *//* * Translate XCOMM into pound sign with sed, rather than passing -DXCOMM=XCOMM * to cpp, because that trick does not work on all ANSI C preprocessors. * Also delete line numbers from the cpp output (-P is not portable, I guess). */#ifndef CppSedMagic#define CppSedMagic sed -e '/^# *[0-9][0-9]* *.*$$/d' \ -e '/^XCOMM$$/s//#/' \ -e '/^XCOMM[^a-zA-Z0-9_]/s/^XCOMM/#/'#endif /* CppSedMagic *//* * CppScriptTarget - generate rules to create a shell script by running the * input through cpp. If the ExecableScripts configuration parameter is not * set, then make sure that the first line begins with a colon. */#ifndef CppScriptTarget#if ExecableScripts /* can use #! instead of colon */#define CppScriptTarget(dst,src,defs,deplist) @@\dst:: src deplist @@\ $(RM) $@ @@\ $(CPP) defs <src | CppSedMagic >$@ @@\ chmod a+x $@#else#define CppScriptTarget(dst,src,defs,deplist) @@\dst:: src deplist @@\ $(RM) $@ @@\ echo \: >$@ @@\ sed '1d' src | $(CPP) defs | CppSedMagic >>$@ @@\ chmod a+x $@#endif /* ExecableScripts */#endif /* CppScriptTarget *//* * MakeScriptFromCpp - generate rules to create a script from a file with a * .cpp suffix. */#ifndef MakeScriptFromCpp#define MakeScriptFromCpp(name,defs) @@\CppScriptTarget(name,name.cpp,defs,NullParameter)#endif /* MakeScriptFromCpp */#ifndef CppFileTarget#define CppFileTarget(dst,src,defs,deplist) @@\dst:: src deplist @@\ $(RM) $@ @@\ $(CPP) defs <src | CppSedMagic >$@#endif /* CppFileTarget *//* * MakeDirectories - generate rules to create a hierarchy of directories. */#ifndef MakeDirectories#define MakeDirectories(step,dirs) @@\step:: @@\ @case '${MFLAGS}' in *[i]*) set +e;; esac; @@\ DirFailPrefix@for i in dirs; do if [ -d $(DESTDIR)$$i ]; then \ @@\ set +x; else (set -x; $(MKDIRHIER) $(DESTDIR)$$i); fi \ @@\ done#endif /* MakeDirectories *//* * MakeFontsDir - generate rules to build fonts.dir database. */#ifndef MakeFontsDir#define MakeFontsDir(deplist) @@\all:: fonts.dir @@\ @@\fonts.dir: deplist @@\ $(MKFONTDIR) . @@\ @@\clean:: @@\ $(RM) fonts.dir#endif /* MakeFontsDir *//* * MakeFonts - generate rules to build font database. */#ifndef MakeFonts#define MakeFonts() @@\all:: $(OBJS) @@\ @@\MakeFontsDir($(OBJS)) @@\ @@\clean:: @@\ $(RM) *.snf *.snf.Z *.pcf *.pcf.Z#endif /* MakeFonts *//* * InstallFontObjs - generate rules to install font files */#ifndef InstallFontObjs#define InstallFontObjs(objs,dest) @@\InstallMultipleFlags(objs,dest,$(INSTDATFLAGS)) @@\ @@\install:: fonts.dir @@\ MakeDir($(DESTDIR)dest) @@\ $(INSTALL) -c $(INSTDATFLAGS) fonts.dir $(DESTDIR)dest#endif /* InstallFontObjs *//* * InstallFonts - generate rules to install font files */#ifndef InstallFonts#define InstallFonts(dest) @@\InstallFontObjs($(OBJS),dest)#endif /* InstallFonts *//* * InstallFontAliases - generate rules to install font aliases databases. */#ifndef InstallFontAliases#define InstallFontAliases(dest) @@\install:: fonts.alias @@\ MakeDir($(DESTDIR)dest) @@\ $(INSTALL) -c $(INSTDATFLAGS) fonts.alias $(DESTDIR)dest#endif /* InstallFontAliases */#ifndef FontSrc#define FontSrc(basename) basename.bdf#endif#ifndef FontBaseObj#ifdef SnfFonts#define FontBaseObj(basename)basename.snf#else#define FontBaseObj(basename)basename.pcf#endif#endif/* * InstallFontScale - generate rules to install font scale database. */#ifndef InstallFontScale#define InstallFontScale(dest) @@\install:: fonts.scale @@\ MakeDir($(DESTDIR)dest) @@\ $(INSTALL) -c $(INSTDATFLAGS) fonts.scale $(DESTDIR)dest#endif /* InstallFontScale *//* * UncompressedFontTarget */#ifndef UncompressedFontTarget#ifdef SnfFonts#define UncompressedFontTarget(basename) @@\FontBaseObj(basename): FontSrc(basename) @@\ $(FONTC) $(FONTCFLAGS) $? >$@#else#define UncompressedFontTarget(basename) @@\FontBaseObj(basename): FontSrc(basename) @@\ $(FONTC) $(FONTCFLAGS) $? -o $@#endif#endif /* CompressedFontTarget *//* * CompressedFontTarget */#ifndef CompressedFontTarget#define CompressedFontTarget(basename) @@\FontBaseObj(basename).Z: FontSrc(basename) @@\ $(FONTC) $(FONTCFLAGS) $? | $(COMPRESS) > $@#endif /* CompressedFontTarget */#ifdef CompressAllFonts#define FontTarget(basename) CompressedFontTarget(basename)#define FontObj(basename) FontBaseObj(basename).Z#else#define FontTarget(basename) UncompressedFontTarget(basename)#define FontObj(basename) FontBaseObj(basename)#endif /* CompressAllFonts *//* * AllTarget - generate rules to build necessary things during make all. */#ifndef AllTarget#define AllTarget(depends) @@\all:: depends#endif /* AllTarget */#ifdef DefineOldLibraryRules#include <oldlib.rules>#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -