📄 imake.rules
字号:
* PurifyProgramTarget - generate rules to make Purify'ed image */#ifndef PurifyProgramTarget#if HasPurify#define PurifyProgramTarget(program,deplist,linklist) @@\ProgramTargetName(program.pure): deplist @@\ RemoveTargetProgram($@) @@\ $(CCENVSETUP) $(PURIFY) $(PURIFYOPTIONS) $(CC) -o $@ $(LDOPTIONS) linklist $(EXTRA_LOAD_FLAGS) @@\ @@\clean clean.pure:: @@\ RemoveFile(program.pure)#else#define PurifyProgramTarget(program,deplist,linklist) /**/#endif#endif /* PurifyProgramTarget *//* * PurifyCplusplusProgramTarget - generate rules to make Purify'ed image */#ifndef PurifyCplusplusProgramTarget#if HasPurify#define PurifyCplusplusProgramTarget(program,deplist,linklist) @@\ProgramTargetName(program.pure): deplist @@\ RemoveTargetProgram($@) @@\ $(CXXENVSETUP) $(PURIFY) $(PURIFYOPTIONS) $(CXX) -o $@ $(CXXLDOPTIONS) linklist $(EXTRA_LOAD_FLAGS) @@\ @@\clean clean.pure:: @@\ RemoveFile(program.pure)#else#define PurifyCplusplusProgramTarget(program,deplist,linklist) /**/#endif#endif /* PurifyCplusplusProgramTarget */#ifndef ProofLinkTarget#if HasTestCenter#define ProofLinkTarget(step,program,linklist) @@\ProgramTargetName(step.tc): @@\ RemoveTargetProgram($@) @@\ $(CCENVSETUP) $(PROOF) $(PROOFOPTIONS) $(CC) -o program.tc $(LDOPTIONS) linklist $(EXTRA_LOAD_FLAGS)#else#define ProofLinkTarget(step,program,linklist) /**/#endif#endif /* ProofLinkTarget *//* * ProofProgramTarget - generate rules to make Proof'ed image */#ifndef ProofProgramTarget#if HasTestCenter#define ProofProgramTarget(program,deplist,linklist) @@\ProgramTargetName(program.tc): deplist @@\ RemoveTargetProgram($@) @@\ $(CCENVSETUP) $(PROOF) $(PROOFOPTIONS) $(CC) -o $@ $(LDOPTIONS) linklist $(EXTRA_LOAD_FLAGS) @@\ @@\clean clean.tc:: @@\ RemoveFiles(program.tc program.tc.*.*)#else#define ProofProgramTarget(program,deplist,linklist) /**/#endif#endif /* ProofProgramTarget *//* * ProofCplusplusProgramTarget - generate rules to make Proof'ed image */#ifndef ProofCplusplusProgramTarget#if HasTestCenter#define ProofCplusplusProgramTarget(program,deplist,linklist) @@\ProgramTargetName(program.tc): deplist @@\ RemoveTargetProgram($@) @@\ $(CXXENVSETUP) $(PROOF) $(PROOFOPTIONS) $(CXX) -o $@ $(CXXLDOPTIONS) linklist $(EXTRA_LOAD_FLAGS) @@\ @@\clean clean.tc:: @@\ RemoveFiles(program.tc program.tc.*.*)#else#define ProofCplusplusProgramTarget(program,deplist,linklist) /**/#endif#endif /* ProofCplusplusProgramTarget */#ifndef ProofCleanTarget#if HasTestCenter#define ProofCleanTarget() @@\clean clean.tc:: @@\ $(RM) -r TC.Cache#else#define ProofCleanTarget() /**/#endif#endif /* ProofCleanTarget */#ifndef RemoveTargetProgram#if RemoveTargetProgramByMoving#define RemoveTargetProgram(program) \-if [ -f program ]; then RemoveFile(Concat(program,~)); $(MV) program Concat(program,~); fi#else#define RemoveTargetProgram(program) RemoveFile(program)#endif#endif /* RemoveTargetProgram */#ifndef MakeDir#define MakeDir(dir) DirFailPrefix@if [ -d dir ]; then set +x; \ @@\ else (set -x; $(MKDIRHIER) dir); fi#endif /* MakeDir */#ifndef BuildIncludesTop#define BuildIncludesTop(srclist) @@\includes:: srclist @@\ MakeDir($(BUILDINCDIR)) @@\ @(set -x; cd $(BUILDINCDIR) && for i in srclist; do \ @@\ RemoveFile($$i); \ @@\ $(LN) $(BUILDINCTOP)/$(CURRENT_DIR)/$$i .; \ @@\ done)#endif /* BuildIncludesTop */#ifndef BuildIncludes#define BuildIncludes(srclist,dstsubdir,dstupdir) @@\includes:: srclist @@\ MakeDir($(BUILDINCDIR)/dstsubdir) @@\ @(set -x; cd $(BUILDINCDIR)/dstsubdir && for i in srclist; do \ @@\ RemoveFile($$i); \ @@\ $(LN) $(BUILDINCTOP)/dstupdir/$(CURRENT_DIR)/$$i .; \ @@\ done)#endif /* BuildIncludes *//* * LinkBuildBinary - export a binary from the build tree. */#ifndef LinkBuildBinary#define LinkBuildBinary(binary) @@\all:: $(BUILDBINDIR)/binary binary @@\ @@\$(BUILDBINDIR)/binary: binary @@\ RemoveFile($@) @@\ cd $(BUILDBINDIR) && $(LN) $(BUILDBINTOP)/$(CURRENT_DIR)/binary .#endif /* LinkBuildBinary */#ifndef BuildInterfaces#define BuildInterfaces(srclist,dstsubdir,dstupdir) @@\interfaces:: @@\ MakeDir($(BUILDINCDIR)/dstsubdir) @@\ @(set -x; cd $(BUILDINCDIR)/dstsubdir && for i in srclist; do \ @@\ RemoveFile($$i); \ @@\ $(LN) $(BUILDINCTOP)/dstupdir/$(CURRENT_DIR)/$$i .; \ @@\ done)#endif /* BuildInterfaces *//* * LinkRule - link a program */#ifndef LinkRule#define LinkRule(program,options,objects,libraries) \$(CCLINK) -o program options objects libraries $(EXTRA_LOAD_FLAGS)#endif /* LinkRule *//* * HostLinkRule - link a utility to be used on the build host * (differs from LinkRule if cross compiling) */#ifndef HostLinkRule#define HostLinkRule LinkRule#endif#ifndef CplusplusLinkRule#define CplusplusLinkRule(program,options,objects,libraries) \$(CXXLINK) -o program options objects libraries $(EXTRA_LOAD_FLAGS)#endif /* CplusplusLinkRule *//* * NormalProgramTarget - generate rules to compile and link the indicated * program; since it does not use any default object files, it may be used for * multiple programs in the same Imakefile. */#ifndef NormalProgramTarget#define NormalProgramTarget(program,objects,deplibs,locallibs,syslibs) @@\ProgramTargetName(program): objects deplibs @@\ RemoveTargetProgram($@) @@\ LinkRule($@,$(LDOPTIONS),objects,locallibs $(LDLIBS) syslibs) @@\ @@\SentinelProgramTarget(program,objects deplibs,objects locallibs $(LDLIBS) syslibs) @@\PurifyProgramTarget(program,objects deplibs,objects locallibs $(LDLIBS) syslibs) @@\ProofProgramTarget(program,objects deplibs,objects locallibs $(LDLIBS) syslibs) @@\ @@\clean:: @@\ RemoveFile(ProgramTargetName(program))#endif /* NormalProgramTarget *//* * NormalCplusplusProgramTarget - Like NormalTargetProgram, but uses * C++ linking rules. */#ifndef NormalCplusplusProgramTarget#define NormalCplusplusProgramTarget(program,objects,deplibs,locallibs,syslibs) @@\ProgramTargetName(program): objects deplibs @@\ RemoveTargetProgram($@) @@\ CplusplusLinkRule($@,$(CXXLDOPTIONS),objects,locallibs $(LDLIBS) syslibs) @@\ @@\SentinelCplusplusProgramTarget(program,objects deplibs,objects locallibs $(LDLIBS) syslibs) @@\PurifyCplusplusProgramTarget(program,objects deplibs,objects locallibs $(LDLIBS) syslibs) @@\ProofCplusplusProgramTarget(program,objects deplibs,objects locallibs $(LDLIBS) syslibs) @@\ @@\clean:: @@\ RemoveFile(ProgramTargetName(program))#endif /* NormalCplusplusProgramTarget */#ifndef SetUIDProgramTarget#define SetUIDProgramTarget NormalProgramTarget#endif/* * SingleProgramTarget - obsolete version of NormalProgramTarget that does * not have deplibs. */#ifndef SingleProgramTarget#define SingleProgramTarget(program,objects,locallibs,syslibs) @@\NormalProgramTarget(program,objects,NullParameter,locallibs,syslibs)#endif /* SingleProgramTarget *//* * SimpleProgramTarget - generate rules for compiling and linking programs * that only have one C source file. It should only be used in Imakefiles * that describe a single program. */#ifndef SimpleProgramTarget#define SimpleProgramTarget(program) @@\ OBJS = program.o @@\ SRCS = program.c @@\ @@\ComplexProgramTarget(program)#endif /* SimpleProgramTarget */#ifndef SimpleCplusplusProgramTarget#define SimpleCplusplusProgramTarget(program) @@\ OBJS = program.o @@\ SRCS = program.CCsuf @@\ @@\ComplexCplusplusProgramTarget(program)#endif /* SimpleCplusplusProgramTarget */#ifndef ProgramTargetHelper#define ProgramTargetHelper(program,srcs,objs,deplib,locallib,syslib) @@\ProgramTargetName(program): $(objs) $(deplib) @@\ RemoveTargetProgram($@) @@\ LinkRule($@,$(LDOPTIONS),$(objs),locallib $(LDLIBS) syslib) @@\ @@\CenterProgramTarget(program,$(srcs),$(objs),locallib,syslib) @@\SentinelProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\PurifyProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\ProofProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\ @@\InstallProgram(program,$(BINDIR)) @@\InstallManPage(program,$(MANDIR))#endif /* ProgramTargetHelper */#ifndef ProgramTargetHelperNoMan#define ProgramTargetHelperNoMan(program,srcs,objs,deplib,locallib,syslib) @@\ProgramTargetName(program): $(objs) $(deplib) @@\ RemoveTargetProgram($@) @@\ LinkRule($@,$(LDOPTIONS),$(objs),locallib $(LDLIBS) syslib) @@\ @@\CenterProgramTarget(program,$(srcs),$(objs),locallib,syslib) @@\SentinelProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\PurifyProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\ProofProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\ @@\InstallProgram(program,$(BINDIR))#endif /* ProgramTargetHelperNoMan */#ifndef CplusplusProgramTargetHelper#define CplusplusProgramTargetHelper(program,srcs,objs,deplib,locallib,syslib) @@\ProgramTargetName(program): $(objs) $(deplib) @@\ RemoveTargetProgram($@) @@\ CplusplusLinkRule($@,$(CXXLDOPTIONS),$(objs),locallib $(LDLIBS) syslib) @@\ @@\CenterProgramTarget(program,$(srcs),$(objs),locallib,syslib) @@\SentinelCplusplusProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\PurifyCplusplusProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\ProofCplusplusProgramTarget(program,$(objs) $(deplib),$(objs) locallib $(LDLIBS) syslib) @@\ @@\InstallProgram(program,$(BINDIR)) @@\InstallManPage(program,$(MANDIR))#endif /* CplusplusProgramTargetHelper *//* * ComplexProgramTarget - generate rules for compiling and linking the * program specified by $(OBJS) and $(SRCS), installing the program and its * man page, and generating dependencies. It should only be used in * Imakefiles that describe a single program. */#ifndef ComplexProgramTarget#define ComplexProgramTarget(program) @@\ PROGRAM = program @@\ @@\AllTarget(program) @@\ @@\ProgramTargetHelper(program,SRCS,OBJS,DEPLIBS,$(LOCAL_LIBRARIES),NullParameter) @@\ @@\DependTarget() @@\LintTarget() @@\ @@\clean:: @@\ RemoveFile(ProgramTargetName(program))#endif /* ComplexProgramTarget */#ifndef ComplexCplusplusProgramTarget#define ComplexCplusplusProgramTarget(program) @@\ PROGRAM = program @@\ @@\AllTarget(program) @@\ @@\CplusplusProgramTargetHelper(program,SRCS,OBJS,DEPLIBS,$(LOCAL_LIBRARIES),NullParameter) @@\ @@\DependTarget() @@\LintTarget() @@\ @@\clean:: @@\ RemoveFile(ProgramTargetName(program))#endif /* ComplexCplusplusProgramTarget *//* * ComplexProgramTargetNoMan - generate rules for compiling and linking * the program specified by $(OBJS) and $(SRCS), installing the program * and generating dependencies. It should only be used in Imakefiles * that describe a single program. */#ifndef ComplexProgramTargetNoMan#define ComplexProgramTargetNoMan(program) @@\ PROGRAM = program @@\ @@\AllTarget(program) @@\ @@\ProgramTargetHelperNoMan(program,SRCS,OBJS,DEPLIBS,$(LOCAL_LIBRARIES),NullParameter) @@\ @@\DependTarget() @@\LintTarget() @@\ @@\clean:: @@\ RemoveFile(ProgramTargetName(program))#endif /* ComplexProgramTargetNoMan *//* * ComplexProgramTarget_1 - generate rules for compiling and linking the * program specified by $(OBJS1) and $(SRCS1), installing the program and its * man page, and generating dependencies for it and any programs described * by $(SRCS2) through $(SRCS10). It should be used to build the primary * program in Imakefiles that describe multiple programs. */#ifndef ComplexProgramTarget_1#define ComplexProgramTarget_1(program,locallib,syslib) @@\ OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) $(OBJS5) \ @@\ $(OBJS6) $(OBJS7) $(OBJS8) $(OBJS9) $(OBJS10) @@\ SRCS = $(SRCS1) $(SRCS2) $(SRCS3) $(SRCS4) $(SRCS5) \ @@\ $(SRCS6) $(SRCS7) $(SRCS8) $(SRCS9) $(SRCS10) @@\ @@\AllTarget($(PROGRAMS)) @@\ @@\ProgramTargetHelper(program,SRCS1,OBJS1,DEPLIBS1,locallib,syslib) @@\ @@\DependTarget() @@\LintTarget() @@\ @@\clean:: @@\ RemoveFiles($(PROGRAMS))#endif /* ComplexProgramTarget_1 */#ifndef ComplexCplusplusProgramTarget_1#define ComplexCplusplusProgramTarget_1(program,locallib,syslib) @@\ OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) $(OBJS5) \ @@\ $(OBJS6) $(OBJS7) $(OBJS8) $(OBJS9) $(OBJS10) @@\ SRCS = $(SRCS1) $(SRCS2) $(SRCS3) $(SRCS4) $(SRCS5) \ @@\ $(SRCS6) $(SRCS7) $(SRCS8) $(SRCS9) $(SRCS10) @@\ @@\AllTarget($(PROGRAMS)) @@\ @@\CplusplusProgramTargetHelper(program,SRCS1,OBJS1,DEPLIBS1,locallib,syslib)@@\ @@\DependTarget() @@\LintTarget() @@\ @@\clean:: @@\ RemoveFiles($(PROGRAMS))#endif /* ComplexCplusplusProgramTarget_1 *//* * ComplexProgramTarget_2 - generate rules for compiling and linking the * program specified by $(OBJS2) and $(SRCS2) and installing the program and * man page. It should be used to build the second program in Imakefiles * describing more than one program. */#ifndef ComplexProgramTarget_2#define ComplexProgramTarget_2(program,locallib,syslib) @@\ProgramTargetHelper(program,SRCS2,OBJS2,DEPLIBS2,locallib,syslib)#endif /* ComplexProgramTarget_2 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -