?? imake.rules
字號:
XCOMM -------------------------------------------------------------------------XCOMM Imake rules for building libraries, programs, scripts, and data filesXCOMM rules: $XConsortium: Imake.rules,v 1.123 91/09/16 20:12:16 rws Exp $/* * MACHINE-INDEPENDENT RULES; DO NOT MODIFY * * Warning, when defining rules: make sure you do not include both a trailing * backslash and double ampersand backslash or else you will get an extra * backslash in the Makefile. * * The following macros are defined for the various templates and Imakefiles * (for a list of the applicable make variables, see the template files): * * SaberProgramTarget (program,srclist,objlist,locallibs,syslibs) * RemoveTargetProgram (program) * MakeDir (dir) * NormalProgramTarget (program,objects,deplibs,locallibs,syslibs) * SetUIDProgramTarget (program,objects,deplibs,locallibs,syslibs) * SingleProgramTarget (program,objects,locallibs,syslibs) * SimpleProgramTarget (program) * ComplexProgramTarget (program) * ComplexProgramTarget_1 (program,locallib,syslib) * ComplexProgramTarget_2 (program,locallib,syslib) * ComplexProgramTarget_3 (program,locallib,syslib) * RanLibrary (args) * LinkFileList (step,list,dir,sub) * InstallMultipleDestFlags (step,list,dest,flags) * InstallMultipleDest (step,list,dest) * InstallMultiple (list,dest) * DependTarget () * DependTarget3 (srcs1,srcs2,srcs3) * CleanTarget () * TagsTarget () * BuildMakefileTarget (notused,imakeflags) * MakefileTarget () * LibMkdir (dir) * LibCleanDir (dir) * ObjectCompile (options) * NormalLibObjCompile (options) * NormalSharedLibObjCompile (options) * LibObjCompile (dir,options) * DebuggedLibObjCompile (options) * ProfiledLibObjCompile (options) * SharedLibObjCompile (options) * NormalLibraryObjectRule () * ObjectFromSpecialSource (dst,src,flags) * SpecialObjectRule (objs,depends,options) * NormalLibraryTarget (libname,objlist) * NormalLibraryTarget2 (libname,objlist1,objlist2) * NormalLibraryTarget3 (libname,objlist1,objlist2,objlist3) * NormalDepLibraryTarget (libname,deplist,objlist) * SubdirLibraryRule (objlist) * ProfiledLibraryTarget (libname,objlist) * DebuggedLibraryTarget (libname,objlist) * AliasedLibraryTarget (libname,alias) * NormalRelocatableTarget (objname,objlist) * ProfiledRelocatableTarget (objname,objlist) * DebuggedRelocatableTarget (objname,objlist) * LintLibraryTarget (libname,srclist) * NormalLintTarget (srclist) * LintTarget () * LinkSourceFile (src,dir) * LinkFile (tofile,fromfile) * MakeSubincludesForBuild (step,dir,srclist) * NamedTargetSubdirs (name,dirs,verb,flags,subname) * NamedMakeSubdirs (name,dirs) * MakeSubdirs (dirs) * DependSubdirs (dirs) * ForceSubdirs (dirs) * InstallSubdirs (dirs) * InstallManSubdirs (dirs) * IncludesSubdirs (dirs) * NamedCleanSubdirs (name,dirs) * CleanSubdirs (dirs) * NamedTagSubdirs (name,dirs) * TagSubdirs (dirs) * MakeLintSubdirs (dirs,target,subtarget) * LintSubdirs (dirs) * MakeLintLibSubdirs (dirs) * MakeMakeSubdirs (dirs,target) * MakeNsubdirMakefiles () * MakefileSubdirs (dirs) * CppScriptTarget (dst,src,defs,deplist) * MakeScriptFromCpp (name,defs) * CppFileTarget (dst,src,defs,deplist) * MakeDirectories (step,dirs) * AllTarget (depends) * * * The following are in Imake.tmpl: * * Concat (a,b) * Concat3 (a,b,c) * * * The following are in specific <os>Lib.rules: * * SharedLibraryTarget (libname,rev,solist,down,up) * SharedLibraryDataTarget (libname,rev,salist) * InstallSharedLibrary (libname,rev,dest) * InstallSharedLibraryData (libname,rev,dest) * */#define NullParameter/* if [ -d ] or [ ! -d ] causes make to fail, define this as - */#ifndef DirFailPrefix#define DirFailPrefix#endif/* * SaberProgramTarget - generate rules to make Saber-C read in sources and * objects. */#ifndef SaberProgramTarget#if HasSaberC#define SaberProgramTarget(program,srclist,objlist,locallibs,syslibs) @@\Concat(saber_,program):: srclist @@\ XCOMM load $(ALLDEFINES) srclist locallibs $(SYS_LIBRARIES) $(EXTRA_LIBRARIES) syslibs @@\ @@\Concat(osaber_,program):: objlist @@\ XCOMM load $(ALLDEFINES) objlist locallibs $(SYS_LIBRARIES) $(EXTRA_LIBRARIES) syslibs#else#define SaberProgramTarget(program,srclist,objlist,locallibs,syslibs) /**/#endif#endif#ifndef RemoveTargetProgram#if RemoveTargetProgramByMoving#define RemoveTargetProgram(program) \if [ -f program ]; then $(RM) Concat(program,~); $(MV) program Concat(program,~); fi#else#define RemoveTargetProgram(program) $(RM) program#endif#endif#ifndef MakeDir#define MakeDir(dir) DirFailPrefix@if [ -d dir ]; then set +x; \ @@\ else (set -x; $(MKDIRHIER) dir); fi#endif/* * 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) @@\program: objects deplibs @@\ RemoveTargetProgram($@) @@\ $(CC) -o $@ objects $(LDOPTIONS) locallibs $(LDLIBS) syslibs $(EXTRA_LOAD_FLAGS) @@\ @@\clean:: @@\ $(RM) program#endif /* NormalProgramTarget */#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 *//* * 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) @@\ @@\program: $(OBJS) $(DEPLIBS) @@\ RemoveTargetProgram($@) @@\ $(CC) -o $@ $(OBJS) $(LDOPTIONS) $(LOCAL_LIBRARIES) $(LDLIBS) $(EXTRA_LOAD_FLAGS) @@\ @@\SaberProgramTarget(program,$(SRCS),$(OBJS),$(LOCAL_LIBRARIES),NullParameter) @@\ @@\InstallProgram(program,$(BINDIR)) @@\InstallManPage(program,$(MANDIR)) @@\DependTarget() @@\LintTarget() @@\ @@\clean:: @@\ $(RM) $(PROGRAM)#endif /* ComplexProgramTarget *//* * 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) and $(SRCS3). 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) @@\ SRCS = $(SRCS1) $(SRCS2) $(SRCS3) @@\ @@\AllTarget($(PROGRAMS)) @@\ @@\program: $(OBJS1) $(DEPLIBS1) @@\ RemoveTargetProgram($@) @@\ $(CC) -o $@ $(LDOPTIONS) $(OBJS1) locallib $(LDLIBS) syslib $(EXTRA_LOAD_FLAGS) @@\ @@\InstallProgram(program,$(BINDIR)) @@\InstallManPage(program,$(MANDIR)) @@\ @@\SaberProgramTarget(program,$(SRCS1),$(OBJS1),locallib,syslib) @@\ @@\DependTarget() @@\LintTarget() @@\ @@\clean:: @@\ $(RM) $(PROGRAMS)#endif /* ComplexProgramTarget_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) @@\program: $(OBJS2) $(DEPLIBS2) @@\ RemoveTargetProgram($@) @@\ $(CC) -o $@ $(LDOPTIONS) $(OBJS2) locallib $(LDLIBS) syslib $(EXTRA_LOAD_FLAGS) @@\ @@\SaberProgramTarget(program,$(SRCS2),$(OBJS2),locallib,syslib) @@\ @@\InstallProgram(program,$(BINDIR)) @@\InstallManPage(program,$(MANDIR))#endif /* ComplexProgramTarget_2 *//* * ComplexProgramTarget_3 - generate rules for compiling and linking the * program specified by $(OBJS3) and $(SRCS3) and installing the program and * man page. It should be used to build the third program in Imakefiles * describing more than one program. */#ifndef ComplexProgramTarget_3#define ComplexProgramTarget_3(program,locallib,syslib) @@\program: $(OBJS3) $(DEPLIBS3) @@\ RemoveTargetProgram($@) @@\ $(CC) -o $@ $(LDOPTIONS) $(OBJS3) locallib $(LDLIBS) syslib $(EXTRA_LOAD_FLAGS) @@\ @@\SaberProgramTarget(program,$(SRCS3),$(OBJS3),locallib,syslib) @@\ @@\InstallProgram(program,$(BINDIR)) @@\InstallManPage(program,$(MANDIR))#endif /* ComplexProgramTarget_3 */#if DoRanlibCmd#define RanLibrary(args) $(RANLIB) args#else#define RanLibrary(args) /**/#endif/* * LinkFileList - link a list of list of files from one place to another */#ifndef LinkFileList#define LinkFileList(step,list,dir,sub) @@\step:: list @@\ @case '${MFLAGS}' in *[i]*) set +e;; esac; \ @@\ echo " cd" dir; cd dir; \ @@\ for i in list; do (set -x; $(RM) $$i; $(LN) sub/$$i .); done#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) @@\ @case '${MFLAGS}' in *[i]*) set +e;; esac; \ @@\ for i in list; do \ @@\ (set -x; $(INSTALL) -c flags $$i $(DESTDIR)dest); \ @@\ done#endif /* InstallMultipleDestFlags *//* * InstallMultipleDest - generate rules to install multiple files at once * during a particular step in the build using any install flags set in * $(INSTALLFLAGS). */#ifndef InstallMultipleDest#define InstallMultipleDest(step,list,dest) @@\InstallMultipleDestFlags(step,list,dest,$(INSTALLFLAGS))#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 *//* * DependTarget - generate rules to compute dependencies for all files listed * in $(SRCS). */#ifndef DependTarget#define DependTarget() @@\depend:: @@\ $(DEPEND) $(DEPENDFLAGS) -s "# DO NOT DELETE" -- $(ALLDEFINES) -- $(SRCS)#endif /* DependTarget *//* * DependTarget3 - generate rules to compute dependencies for all files given. */#ifndef DependTarget3#define DependTarget3(srcs1,srcs2,srcs3) @@\depend:: @@\ $(DEPEND) $(DEPENDFLAGS) -s "# DO NOT DELETE" -- $(ALLDEFINES) -- srcs1 @@\ $(DEPEND) -a $(DEPENDFLAGS) -s "# DO NOT DELETE" -- $(ALLDEFINES) -- srcs2 @@\ $(DEPEND) -a $(DEPENDFLAGS) -s "# DO NOT DELETE" -- $(ALLDEFINES) -- srcs3#endif /* DependTarget3 *//* * CleanTarget - generate rules to remove any garbage files; the #* is here * instead of in the definition of RM_CMD because System V will treat the * pound sign in the RM_CMD variable as a comment. */#ifndef CleanTarget#define CleanTarget() @@\clean:: @@\ $(RM_CMD) "#"*#endif /* CleanTarget *//* * TagsTarget - generate rules to compute tags files for C source code. */#ifndef TagsTarget#define TagsTarget() @@\tags:: @@\
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -