⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imake.rules

📁 早期freebsd实现
💻 RULES
📖 第 1 页 / 共 3 页
字号:
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 + -