📄 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) * BuildIncludes (srclist,dstsubdir,dstupdir) * 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) * ServerTarget (server,subdirs,objects,libs,syslibs) * RanLibrary (args) * InstallLibrary (libname,dest) * MergeIntoInstalledLibrary (tolib,fromlib) * InstallLibraryAlias (libname,alias,dest) * InstallLintLibrary (libname,dest) * InstallManPageLong (file,destdir,dest) * InstallManPage (file,destdir) * InstallManPageAliases (file,destdir,aliases) * InstallNamedNonExec (srcname,dstname,dest) * InstallNonExecFile (file,dest) * InstallNonExec (file,dest) * InstallProgramWithFlags (program,dest,flags) * InstallProgram (program,dest) * InstallScript (program,dest) * InstallNamedProg (srcname,dstname,dest) * LinkFileList (step,list,dir,sub) * InstallMultipleDestFlags (step,list,dest,flags) * InstallMultipleDest (step,list,dest) * InstallMultiple (list,dest) * InstallMultipleFlags (list,dest,flags) * InstallMultipleMan (list,dest) * InstallAppDefaults (class) * InstallAppDefaultsLong (file,class) * DependDependency () * DependTarget () * DependTarget3 (srcs1,srcs2,srcs3) * CleanTarget () * TagsTarget () * ImakeDependency (target) * BuildMakefileTarget (notused,imakeflags) * MakefileTarget () * LibMkdir (dir) * LibCleanDir (dir) * ObjectCompile (options) * NormalLibObjCompile (options) * NormalSharedLibObjCompile (options) * LibObjCompile (dir,options) * DebuggedLibObjCompile (options) * ProfiledLibObjCompile (options) * SharedLibObjCompile (options) * NormalLibraryObjectRule () * NormalFortranObjectRule () * 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) * MakeFontsDir (deplist) * MakeFonts () * InstallFontObjs (objs,dest) * InstallFonts (dest) * InstallFontAliases (dest) * FontSrc (basename) * FontBaseObj (basename) * InstallFontScale (dest) * UncompressedFontTarget (basename) * UncompressedFontTarget (basename) * CompressedFontTarget (basename) * FontTarget (basename) * FontObj (basename) * 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#ifndef BuildIncludes#define BuildIncludes(srclist,dstsubdir,dstupdir) @@\includes:: @@\ MakeDir($(BUILDINCDIR)/dstsubdir) @@\ @(set -x; cd $(BUILDINCDIR)/dstsubdir; for i in srclist; do \ @@\ $(RM) $$i; \ @@\ $(LN) $(BUILDINCTOP)/dstupdir/$(CURRENT_DIR)/$$i .; \ @@\ done)#endif /* BuildIncludes *//* * 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 *//* * ServerTarget - generate rules to compile, link, and relink an X server. */#ifndef ServerTarget#define ServerTarget(server,subdirs,objects,libs,syslibs) @@\server: subdirs objects libs @@\ -@if [ -f server ]; then set -x; \ @@\ $(MV) server server.bak; else exit 0; fi @@\ $(CC) $(CDEBUGFLAGS) $(CCOPTIONS) -o server objects libs $(EXTRA_LIBRARIES) syslibs $(EXTRA_LOAD_FLAGS) @@\ @@\Concat(load,server): @@\ -@if [ -f server ]; then set -x; \ @@\ $(MV) server server.bak; else exit 0; fi @@\ $(CC) $(CDEBUGFLAGS) $(CCOPTIONS) -o server objects libs $(EXTRA_LIBRARIES) syslibs $(EXTRA_LOAD_FLAGS)#endif /* ServerTarget */#if DoRanlibCmd#define RanLibrary(args) $(RANLIB) args#else#define RanLibrary(args) /**/#endif/* * InstallLibrary - generate rules to install the indicated library. */#ifndef InstallLibrary#define InstallLibrary(libname,dest) @@\install:: Concat(lib,libname.a) @@\ MakeDir($(DESTDIR)dest) @@\ $(INSTALL) -c $(INSTLIBFLAGS) Concat(lib,libname.a) $(DESTDIR)dest @@\ RanLibrary($(RANLIBINSTFLAGS) Concat($(DESTDIR)dest/lib,libname.a))#endif /* InstallLibrary *//* * MergeIntoInstalledLibrary - generate rules to merge one library into another */#ifndef MergeIntoInstalledLibrary#define MergeIntoInstalledLibrary(tolib,fromlib) @@\install:: fromlib @@\ $(SCRIPTSRC)/mergelib $(DESTDIR)tolib fromlib#endif /* MergeIntoInstalledLibrary *//* * InstallLibraryAlias - generate rules to create a link from one library name * to another for the purposes of aliasing. */#ifndef InstallLibraryAlias#define InstallLibraryAlias(libname,alias,dest) @@\install:: @@\ -(cd $(DESTDIR)dest; \ @@\ $(RM) Concat(lib,alias.a); \ @@\ $(LN) Concat(lib,libname.a) Concat(lib,alias.a))#endif /* InstallLibraryAlias *//* * InstallLintLibrary - generate rules to install the indicated lint library. */#ifndef InstallLintLibrary#define InstallLintLibrary(libname,dest) @@\install.ln:: Concat(llib-l,libname.ln) @@\ MakeDir($(DESTDIR)dest) @@\ $(INSTALL) -c $(INSTLIBFLAGS) Concat(llib-l,libname.ln) $(DESTDIR)dest#endif /* InstallLintLibrary *//* * InstallManPageLong - generate rules to install the indicated manual page, * giving it an alternate name. This is used for installing man pages whose * base name without the .man suffix would normally be longer than 8 characters * (the limit for using source code control systems on files systems with * short file names). */#ifndef InstallManPageLong#define InstallManPageLong(file,destdir,dest) @@\install.man:: file.man @@\ MakeDir($(DESTDIR)destdir) @@\ $(INSTALL) -c $(INSTMANFLAGS) file.man $(DESTDIR)destdir/dest.$(MANSUFFIX)#endif /* InstallManPageLong *//* * InstallManPage - generate rules to install the indicated manual page. */#ifndef InstallManPage#define InstallManPage(file,destdir) @@\InstallManPageLong(file,destdir,file)#endif /* InstallManPage *//* * InstallManPageAliases - generate rules to install manual page aliases. */#ifndef InstallManPageAliases#define InstallManPageAliases(file,destdir,aliases) @@\install.man:: @@\ @(TMP=/tmp/tmp.$$$$; \ @@\ $(RM) $${TMP}; \ @@\ echo .so `basename destdir`/file.$(MANSUFFIX) > $${TMP}; \ @@\ for i in aliases; do (set -x; \ @@\ $(INSTALL) -c $(INSTMANFLAGS) $${TMP} $(DESTDIR)destdir/$$i.$(MANSUFFIX)); \ @@\ done; \ @@\ $(RM) $${TMP})#endif /* InstallManPageAliases *//* * InstallNamedNonExec - generate rules to install a data file */#ifndef InstallNamedNonExec#define InstallNamedNonExec(srcname,dstname,dest) @@\install:: srcname @@\ MakeDir($(DESTDIR)dest) @@\ $(INSTALL) -c $(INSTDATFLAGS) srcname $(DESTDIR)dest/dstname#endif /* InstallNamedNonExec *//* * InstallNonExecFile - generate rules to install a data file */#ifndef InstallNonExecFile#define InstallNonExecFile(file,dest) @@\install:: file @@\ MakeDir($(DESTDIR)dest) @@\ $(INSTALL) -c $(INSTDATFLAGS) file $(DESTDIR)dest#endif /* InstallNonExecFile *//* * 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) -c $(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) @@\install:: program @@\ MakeDir($(DESTDIR)dest) @@\ $(INSTALL) -c $(INSTPGMFLAGS) flags program $(DESTDIR)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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -