|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: I T
Length: 44486 (0xadc6) Types: TextFile Names: »Imake.rules«
└─⟦276d19d6e⟧ Bits:30007243 EUUGD5_I: X11R5 └─⟦399fbce15⟧ »./mit-1/mit-1.00« └─⟦ee38ad226⟧ └─⟦this⟧ »mit/config/Imake.rules«
XCOMM ------------------------------------------------------------------------- XCOMM Imake rules for building libraries, programs, scripts, and data files XCOMM rules: $XConsortium: Imake.rules,v 1.121 91/08/22 16:32:50 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) * FontBaseObj (basename) * InstallFontScale (dest) * FontSrc (basename) * FontBaseObj (basename) * FontBaseObj (basename) * UncompressedFontTarget (basename) * UncompressedFontTarget (basename) * CompressedFontTarget (basename) * FontTarget (basename) * FontObj (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 #define InstallScript(program,dest) @@\ install:: program.script @@\ MakeDir($(DESTDIR)dest) @@\ $(INSTALL) -c $(INSTBINFLAGS) program.script $(DESTDIR)dest/program #endif /* InstallScript */ /* * InstallNamedProg - install a program with renaming and no stripping. */ #ifndef InstallNamedProg #define InstallNamedProg(srcname,dstname,dest) @@\ install:: srcname @@\ MakeDir($(DESTDIR)dest) @@\ $(INSTALL) -c $(INSTBINFLAGS) srcname $(DESTDIR)dest/dstname #endif /* InstallNamedProg */ /* * 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 */ /* * InstallMultipleFlags - generate rules to install multiple files at once * during the install step of the build using the given install flags. */ #ifndef InstallMultipleFlags #define InstallMultipleFlags(list,dest,flags) @@\ InstallMultipleDestFlags(install,list,dest,flags) #endif /* InstallMultipleFlags */ /* * InstallMultipleMan - generate rules to install a variety of manual pages * during the install.man step of the build. */ #ifndef InstallMultipleMan #define InstallMultipleMan(list,dest) @@\ InstallMultipleDestFlags(install.man,list,dest,$(INSTMANFLAGS)) #endif /* InstallMultipleMan */ /* * InstallAppDefaults - generate rules to install appliation default files * if the InstallAppDefFiles configuration parameter is set. */ #ifndef InstallAppDefaults #if InstallAppDefFiles #define InstallAppDefaults(class) @@\ install:: class.ad @@\ MakeDir($(DESTDIR)$(XAPPLOADDIR)) @@\ $(INSTALL) -c $(INSTAPPFLAGS) class.ad $(DESTDIR)$(XAPPLOADDIR)/class #else #define InstallAppDefaults(class) #endif /* InstallAppDefFiles */ #endif /* InstallAppDefaults */ /* * InstallAppDefaultsLong - generate rules to install appliation default files * if the InstallAppDefFiles configuration parameter is set. */ #ifndef InstallAppDefaultsLong #if InstallAppDefFiles #define InstallAppDefaultsLong(file,class) @@\ install:: file.ad @@\ MakeDir($(DESTDIR)$(XAPPLOADDIR)) @@\ $(INSTALL) -c $(INSTAPPFLAGS) file.ad $(DESTDIR)$(XAPPLOADDIR)/class #else #define InstallAppDefaultsLong(file,class) #endif /* InstallAppDefFiles */ #endif /* InstallAppDefaultsLong */ /* * DependDependency - generate rules to build the makedepend program if * this Imakefile is within the source tree. */ #ifndef DependDependency #ifdef UseInstalled #define DependDependency() /**/ #else #define DependDependency() @@\ depend:: $(DEPEND) @@\ @@\ $(DEPEND): @@\ @echo "checking $@ over in $(DEPENDSRC) first..."; \ @@\ cd $(DEPENDSRC); $(MAKE); \ @@\ echo "okay, continuing in $(CURRENT_DIR)" #endif /* UseInstalled */ #endif /* DependDependency */ /* * DependTarget - generate rules to compute dependencies for all files listed * in $(SRCS). */ #ifndef DependTarget #define DependTarget() @@\ DependDependency() @@\ @@\ 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) @@\ DependDependency() @@\ @@\ 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:: @@\ $(TAGS) -w *.[ch] @@\ $(TAGS) -xw *.[ch] > TAGS #endif /* TagsTarget */ /* * ImakeDependency - generate rules to compile imake if this Imakefile is * within the source tree. */ #ifndef ImakeDependency #ifdef UseInstalled #define ImakeDependency(target) /**/ #else #define ImakeDependency(target) @@\ target:: $(IMAKE) @@\ @@\ $(IMAKE): @@\ @(cd $(IMAKESRC); if [ -f Makefile ]; then \ @@\ echo "checking $@ in $(IMAKESRC) first..."; $(MAKE) all; else \ @@\ echo "bootstrapping $@ from Makefile.ini in $(IMAKESRC) first..."; \ @@\ $(MAKE) -f Makefile.ini BOOTSTRAPCFLAGS="$(BOOTSTRAPCFLAGS)"; fi; \ @@\ echo "okay, continuing in $(CURRENT_DIR)") #endif /* UseInstalled */ #endif /* ImakeDependency */ /* * BuildMakefileTarget - generate rules to build a Makefile from an Imakefile * and any special imake flags. This is generally done automatically by the * template or by any special Imakefiles. The first argument exists just * because imakeflags is usually empty and some preprocessors will complain * if an empty argument is passed as the sole argument to a macro. */ #ifndef BuildMakefileTarget #define BuildMakefileTarget(notused,imakeflags) @@\ ImakeDependency(Makefile) @@\ @@\ Makefile:: @@\ -@if [ -f Makefile ]; then set -x; \ @@\ $(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \ @@\ else exit 0; fi @@\ $(IMAKE_CMD) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR) imakeflags #endif /* BuildMakefileTarget */ /* * MakefileTarget - generate rules to build a normal Makefile. */ #ifndef MakefileTarget #define MakefileTarget() @@\ BuildMakefileTarget(Imakefile,NullParameter) #endif /* MakefileTarget */ /* * LibMkdir - helper for creating library object subdirectories */ #ifndef LibMkdir #define LibMkdir(dir) DirFailPrefix@if [ -d dir ]; then exit 0; else set -x; mkdir dir; fi #endif /* * LibCleanDir - helper for cleaning library object subdirectories */ #ifndef LibCleanDir #define LibCleanDir(dir) -@if [ -d dir ]; then \ @@\ (set -x; cd dir; $(RM) *.o); else exit 0; fi #endif /* * ObjectCompile - compile fragment for a normal object file */ #ifndef ObjectCompile #define ObjectCompile(options) $(RM) $@ @@\ $(CC) -c $(CFLAGS) options $*.c #endif /* * NormalLibObjCompile - compile fragment for a normal library object file */ #ifndef NormalLibObjCompile #define NormalLibObjCompile(options) ObjectCompile(options) #endif /* * NormalSharedLibObjCompile - compile fragment for shared object when * a normal library is not being built */ #ifndef NormalSharedLibObjCompile #define NormalSharedLibObjCompile(options) NormalLibObjCompile(options $(SHLIBDEF) $(SHAREDCODEDEF) $(PICFLAGS)) #endif /* * LibObjCompile - compile fragment for shared/profiled/debugged objects */ #ifndef LibObjCompile #define LibObjCompile(dir,options) $(RM) $@ dir/$@ @@\ $(CC) -c $(CCOPTIONS) $(ALLDEFINES) options $*.c @@\ $(MV) $@ dir/$@ #endif /* * DebuggedLibObjCompile - compile fragment for debugged objects */ #ifndef DebuggedLibObjCompile #define DebuggedLibObjCompile(options) LibObjCompile(debugger,-g options) #endif /* * ProfiledLibObjCompile - compile fragment for profiled objects */ #ifndef ProfiledLibObjCompile #define ProfiledLibObjCompile(options) LibObjCompile(profiled,-pg options) #endif /* * SharedLibObjCompile - compile fragment for shared objects */ #ifndef SharedLibObjCompile #define SharedLibObjCompile(options) LibObjCompile(shared,options $(SHLIBDEF) $(SHAREDCODEDEF) $(PICFLAGS) $(CDEBUGFLAGS)) #endif /* * NormalLibraryObjectRule - for simple libraries */ #ifndef NormalLibraryObjectRule #define NormalLibraryObjectRule() @@\ .c.o: @@\ ObjectCompile($(_NOOP_)) #endif /* NormalLibraryObjectRule */ #ifndef NormalFortranObjectRule #define NormalFortranObjectRule() @@\ .f.o: @@\ $(RM) $@ @@\ $(FC) -c $(FCFLAGS) $*.f #endif #ifndef ObjectFromSpecialSource #define ObjectFromSpecialSource(dst,src,flags) @@\ dst.c: src.c @@\ $(RM) $@ @@\ $(LN) $? $@ @@\ @@\ dst.o: dst.c @@\ ObjectCompile(flags) @@\ @@\ depend:: dst.c @@\ @@\ clean:: @@\ $(RM) dst.c #endif /* ObjectFromSpecialSource */ /* * SpecialObjectRule - generate rules to compile a file with special flags. */ #ifndef SpecialObjectRule #define SpecialObjectRule(objs,depends,options) @@\ objs: depends @@\ ObjectCompile(options) #endif /* SpecialObjectRule */ /* * NormalLibraryTarget - generate rules to create a library. */ #ifndef NormalLibraryTarget #define NormalLibraryTarget(libname,objlist) @@\ AllTarget(Concat(lib,libname.a)) @@\ @@\ Concat(lib,libname.a): objlist @@\ $(RM) $@ @@\ $(AR) $@ objlist @@\ RanLibrary($@) #endif /* NormalLibraryTarget */ /* * NormalLibraryTarget2 - generate rules to create a library in two steps. * This is used to create libraries with large numbers of files. */ #ifndef NormalLibraryTarget2 #define NormalLibraryTarget2(libname,objlist1,objlist2) @@\ AllTarget(Concat(lib,libname.a)) @@\ @@\ Concat(lib,libname.a): objlist1 objlist2 @@\ $(RM) $@ @@\ $(AR) $@ objlist1 @@\ $(AR) $@ objlist2 @@\ RanLibrary($@) #endif /* NormalLibraryTarget2 */ /* * NormalLibraryTarget3 - generate rules to create a library in three steps. * This is used to create libraries with very large numbers of files. */ #ifndef NormalLibraryTarget3 #define NormalLibraryTarget3(libname,objlist1,objlist2,objlist3) @@\ AllTarget(Concat(lib,libname.a)) @@\ @@\ Concat(lib,libname.a): objlist1 objlist2 objlist3 @@\ $(RM) $@ @@\ $(AR) $@ objlist1 @@\ $(AR) $@ objlist2 @@\ $(AR) $@ objlist3 @@\ RanLibrary($@) #endif /* NormalLibraryTarget3 */ /* * NormalDepLibraryTarget - generate rules to create a library. */ #ifndef NormalDepLibraryTarget #define NormalDepLibraryTarget(libname,deplist,objlist) @@\ AllTarget(Concat(lib,libname.a)) @@\ @@\ Concat(lib,libname.a): deplist @@\ $(RM) $@ @@\ $(AR) $@ objlist @@\ RanLibrary($@) #endif /* NormalDepLibraryTarget */ /* * SubdirLibraryRule - */ #ifndef SubdirLibraryRule #define SubdirLibraryRule(objlist) @@\ all:: DONE @@\ @@\ DONE: objlist @@\ touch $@ @@\ @@\ clean:: @@\ $(RM) DONE #endif /* SubdirLibraryRule */ /* * ProfiledLibraryTarget - generate rules to create a profiled library. */ #ifndef ProfiledLibraryTarget #define ProfiledLibraryTarget(libname,objlist) @@\ AllTarget(Concat3(lib,libname,_p.a)) @@\ @@\ Concat3(lib,libname,_p.a): objlist @@\ $(RM) $@ @@\ cd profiled; $(AR) ../$@ objlist @@\ RanLibrary($@) #endif /* ProfiledLibraryTarget */ /* * DebuggedLibraryTarget - generate rules to create a debuggable library. */ #ifndef DebuggedLibraryTarget #define DebuggedLibraryTarget(libname,objlist) @@\ AllTarget(Concat3(lib,libname,_d.a)) @@\ @@\ Concat3(lib,libname,_d.a): objlist @@\ $(RM) $@ @@\ cd debugger; $(AR) ../$@ objlist @@\ RanLibrary($@) #endif /* DebuggedLibraryTarget */ /* * AliasedLibraryTarget - generate rules to link one library to another. */ #ifndef AliasedLibraryTarget #define AliasedLibraryTarget(libname,alias) @@\ AllTarget(Concat(lib,alias.a)) @@\ @@\ Concat(lib,alias.a): Concat(lib,libname.a) @@\ $(RM) $@ @@\ $(LN) Concat(lib,libname.a) $@ #endif /* AliasedLibraryTarget */ /* * NormalRelocatableTarget - generate rules to produce a relocatable object * file instead of a library. */ #ifndef NormalRelocatableTarget #define NormalRelocatableTarget(objname,objlist) @@\ AllTarget(objname.o) @@\ @@\ objname.o: objlist @@\ $(RM) $@ @@\ $(LD) $(LDCOMBINEFLAGS) objlist -o $@ #endif /* NormalRelocatableTarget */ /* * ProfiledRelocatableTarget - generate rules to produce a profiled relocatable * object file instead of a library. */ #ifndef ProfiledRelocatableTarget #define ProfiledRelocatableTarget(objname,objlist) @@\ AllTarget(Concat(objname,_p.o)) @@\ @@\ Concat(objname,_p.o): objlist @@\ $(RM) $@ @@\ $(LD) -X -r objlist -o $@ #endif /* ProfiledRelocatableTarget */ /* * DebuggedRelocatableTarget - generate rules to produce a debuggable * 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 */ #define FontSrc(basename) basename.bdf #ifdef SnfFonts #define FontBaseObj(basename) basename.snf #else #define FontBaseObj(basename) basename.pcf #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 */ #define FontSrc(basename) basename.bdf #ifdef SnfFonts #define FontBaseObj(basename) basename.snf #else #define FontBaseObj(basename) basename.pcf #endif /* * 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