diff options
author | Manoj Srivastava <srivasta@golden-gryphon.com> | 2014-04-27 18:05:39 -0700 |
---|---|---|
committer | Manoj Srivastava <srivasta@golden-gryphon.com> | 2014-04-27 18:05:39 -0700 |
commit | 7d4c02d5c9108aa413fbb0ffa1dc8a39bc5f54a1 (patch) | |
tree | 2abb9ad01d397bc1e208f57f528c1ec529761392 /jmake/files | |
parent | 5c913c35c09a82eead2c07534baa709a5dead3e7 (diff) | |
parent | 8f5e5726134ce5b4bd436b16f367796d851df553 (diff) |
Merge branch 'upstream'
Signed-off-by: Manoj Srivastava <srivasta@golden-gryphon.com>
Conflicts:
jmake/jmake.man
Diffstat (limited to 'jmake/files')
-rw-r--r-- | jmake/files/Jmake.rules | 111 | ||||
-rw-r--r-- | jmake/files/Jmake.tmpl | 19 |
2 files changed, 100 insertions, 30 deletions
diff --git a/jmake/files/Jmake.rules b/jmake/files/Jmake.rules index 232c633..0b0c02d 100644 --- a/jmake/files/Jmake.rules +++ b/jmake/files/Jmake.rules @@ -1,12 +1,12 @@ ;######################################################################## ;# Jmake rules for building libraries, programs, scripts, and data files -;# $Id: Jmake.rules 18 2006-12-27 10:35:09Z rmanfredi $ +;# $Id: Jmake.rules 174 2014-04-05 08:19:48Z rmanfredi $ /* * MACHINE-INDEPENDENT RULES -- DO NOT MODIFY */ -/* $Id: Jmake.rules 18 2006-12-27 10:35:09Z rmanfredi $ +/* $Id: Jmake.rules 174 2014-04-05 08:19:48Z rmanfredi $ * * Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi * @@ -78,6 +78,18 @@ local_realclean:: @@\ $(RM) depends /* + * AllTargetProgram: + * Generate rules to build necessary things during make all. + * This target is specific to executable. Use AllTarget() for + * other type of files. + */ +#define AllTargetProgram(program) @!\ +all:: program @!\ + @!\ +local_realclean:: @@\ + $(RM) program^^$(_EXE) + +/* * RemoveTargetProgram: * This is used in some other macros in order to remove the target * before starting its building (saves disk space). There should be @@ -85,10 +97,11 @@ local_realclean:: @@\ * used *inside* building rules. */ #define RemoveTargetProgram(program) \ - $(RM) program @@\ + -$(RM) program^^$(_EXE) @@\ if test -f program^^^$(_EXE); then \ @@\ $(MV) program^^^$(_EXE) program^^~^^^$(_EXE); fi + /* * NormalProgramTarget: * Generate rules to compile and link the indicated program; since @@ -99,20 +112,31 @@ local_realclean:: @@\ ++OBJECTS objects @!\ ++SOURCES sources @!\ NormalObjectRule() @!\ -AllTarget(program) @!\ +AllTargetProgram(program) @!\ @!\ program: objects @@\ RemoveTargetProgram($@) @@\ - $(CC) -o $@ objects $(JLDFLAGS) $(LIBS) @!\ + $(CC) -o $@$(_EXE) objects $(JLDFLAGS) $(LIBS) @!\ /* - * SingleProgramTarget: - * Obsolete version of NormalProgramTarget that doesn't have - * deplibs. + * NormalProgramLibTarget: + * 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 Jmakefile. + * The ``libs'' argument is used to depend on locally built libraries, + * in te same Jmakefile. */ -#define SingleProgramTarget(program,objects,libs) \ -NormalProgramTarget(program,objects,libs) +#define NormalProgramLibTarget(program,sources,objects,libs) @!\ +++OBJECTS objects @!\ +++SOURCES sources @!\ +NormalObjectRule() @!\ +AllTargetProgram(program) @!\ + @!\ +program: objects libs @@\ + RemoveTargetProgram($@) @@\ + $(CC) -o $@$(_EXE) objects $(JLDFLAGS) libs $(LIBS) @!\ + /* * SimpleProgramTarget: @@ -124,7 +148,6 @@ NormalProgramTarget(program,objects,libs) NormalProgramTarget(program,program.c,program.o) - /* * ComplexProgramTarget: * Generate rules for compiling and linking the program specified by @@ -136,11 +159,11 @@ NormalProgramTarget(program,program.c,program.o) ++OBJECTS $(OBJS) @!\ ++SOURCES $(SRCS) @!\ NormalObjectRule() @!\ -AllTarget(program) @!\ +AllTargetProgram(program) @!\ @!\ program: $(OBJS) @@\ RemoveTargetProgram($@) @@\ - $(CC) -o $@ $(OBJS) $(JLDFLAGS) $(LIBS) @!\ + $(CC) -o $@$(_EXE) $(OBJS) $(JLDFLAGS) $(LIBS) @!\ @!\ InstallProgram(program,$(BINDIR)) @!\ InstallManPage(program,$(MANSRC)) @!\ @@ -160,11 +183,11 @@ LintTarget() ++OBJECTS $(OBJS1) @!\ ++SOURCES $(SRCS1) @!\ NormalObjectRule() @!\ -AllTarget(program) @!\ +AllTargetProgram(program) @!\ @!\ program: $(OBJS1) @@\ RemoveTargetProgram($@) @@\ - $(CC) -o $@ $(OBJS1) $(JLDFLAGS) $(LIBS) @!\ + $(CC) -o $@$(_EXE) $(OBJS1) $(JLDFLAGS) $(LIBS) @!\ @!\ InstallProgram(program,$(BINDIR)) @!\ InstallManPage(program,$(MANSRC)) @!\ @@ -184,11 +207,11 @@ LintTarget() ++OBJECTS $(OBJS2) @!\ ++SOURCES $(SRCS2) @!\ NormalObjectRule() @!\ -AllTarget(program) @!\ +AllTargetProgram(program) @!\ @!\ program: $(OBJS2) @@\ RemoveTargetProgram($@) @@\ - $(CC) -o $@ $(OBJS2) $(JLDFLAGS) $(LIBS) @!\ + $(CC) -o $@$(_EXE) $(OBJS2) $(JLDFLAGS) $(LIBS) @!\ @!\ InstallProgram(program,$(BINDIR)) @!\ InstallManPage(program,$(MANSRC)) @@ -205,11 +228,11 @@ InstallManPage(program,$(MANSRC)) ++OBJECTS $(OBJS3) @!\ ++SOURCES $(SRCS3) @!\ NormalObjectRule() @!\ -AllTarget(program) @!\ +AllTargetProgram(program) @!\ @!\ program: $(OBJS3) @@\ RemoveTargetProgram($@) @@\ - $(CC) -o $@ $(OBJS3) $(JLDFLAGS) $(LIBS) @!\ + $(CC) -o $@$(_EXE) $(OBJS3) $(JLDFLAGS) $(LIBS) @!\ @!\ InstallProgram(program,$(BINDIR)) @!\ InstallManPage(program,$(MANSRC)) @@ -554,7 +577,7 @@ DeinstallMultipleDest(local_deinstall.man,list,dest) * Generate rules to build the makedepend program. */ #define DependDependency() @!\ -depend:: TOPDIR/mkdep @!\ +local_depend:: TOPDIR/mkdep @!\ @!\ TOPDIR/mkdep: @!\ ?TOP: @echo "You have to run Configure first."; exit 1 @!\ @@ -571,7 +594,8 @@ TOPDIR/mkdep: @!\ |once _DependTarget_ @!\ DependDependency() @!\ @!\ -depend:: @@\ +depend:: local_depend @!\ +local_depend:: @@\ ($(SED) '/^# DO NOT DELETE/q' Makefile && \ @@\ $(MKDEP) $(SOURCES) | \ @@\ $(SED) -e 's:/usr/lib[^ ]*::g; s:$(USRINC)[^ ]*::g; ' \ @@\ @@ -617,7 +641,9 @@ local_clobber:: local_realclean @!\ */ #define InstallTarget() @!\ ?SUBDIRS:install:: local_install sub_install @!\ -%SUBDIRS:install:: local_install @!\ +%SUBDIRS:install:: local_install @@\ + @exit 0 @!\ + @!\ ?SUBDIRS:install.man:: maybe_install.man sub_install.man @!\ %SUBDIRS:install.man:: maybe_install.man @!\ ?SUBDIRS:deinstall:: sub_deinstall local_deinstall @!\ @@ -1114,8 +1140,28 @@ NormalLintTarget($(SOURCES)) @!\ */ #define LinkSourceFile(src,dir) @!\ src: dir/src @@\ - $(RM) $@ @@\ + $(RM) -f $@ @@\ $(LN) $? $@ @!\ + @!\ +local_depend:: src @@\ + @!\ +local_realclean:: @@\ + $(RM) -f src @!\ + + +/* + * LinkSourceFileAlias: + * Snag source file from some other directory with a different local name. + */ +#define LinkSourceFileAlias(src,dir,alias) @!\ +alias: dir/src @@\ + $(RM) -f $@ @@\ + $(LN) $? $@ @!\ + @!\ +local_depend:: alias @@\ + @!\ +local_realclean:: @@\ + $(RM) -f alias @!\ /* @@ -1168,6 +1214,22 @@ name:: @@\ /* + * NamedTargetSubdirsAsRule: + * Recursively make a series of steps in the specified directories, + * where the name of the local rule is different from the recursive + * actions. + */ +#define NamedTargetSubdirsAsRule(dirs,localname,name,verb,flags) @!\ +localname:: @@\ + @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ @@\ + for i in dirs ;\ @@\ + do \ @@\ + (cd $$i ; echo verb "in $(DIR)$$i..."; \ @@\ + $(MAKE) $(MFLAGS) flags name) || exit 1; \ @@\ + done + + +/* * NamedTargetSubdirs: * Recursively make a series of steps. */ @@ -1211,7 +1273,8 @@ NamedTargetSubdirs(all,"Making all",^^) * make depend step. */ #define DependDirs(dirs) \ -NamedTargetSubdirsRule(dirs,depend,"Depending",^^) +depend:: sub_depend @!\ +NamedTargetSubdirsAsRule(dirs,sub_depend,depend,"Depending",^^) /* diff --git a/jmake/files/Jmake.tmpl b/jmake/files/Jmake.tmpl index 0663793..a06d405 100644 --- a/jmake/files/Jmake.tmpl +++ b/jmake/files/Jmake.tmpl @@ -1,7 +1,7 @@ /* * Generic jmake template * - * $Id: Jmake.tmpl 30 2009-10-28 07:45:28Z rmanfredi $ + * $Id: Jmake.tmpl 156 2012-12-19 16:44:39Z rmanfredi $ * * Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi * @@ -27,7 +27,7 @@ */ : Makefile.SH generated from Jmake.tmpl and Jmakefile <TAG> -: $Id: Jmake.tmpl 30 2009-10-28 07:45:28Z rmanfredi $ +: $Id: Jmake.tmpl 156 2012-12-19 16:44:39Z rmanfredi $ /************************************************************************* * * @@ -81,6 +81,7 @@ DIR = $DIR ;# Parameters set by Configure -- edit config.sh if changes are needed ?AR:AR = ar rc /* FIXME */ +?ARCHLIB:ARCHLIB = $installarchlib ?BINDIR:BINDIR = $installbin ?CC:CC = $cc ?CHMOD:CHMOD = $chmod @@ -89,9 +90,9 @@ DIR = $DIR ?CTAGS:CTAGS = ctags /* FIXME */ ?_EXE:_EXE = $_exe ?INSTALLPREFIX:INSTALLPREFIX = $prefix -?JCFLAGS:JCFLAGS = \$(CFLAGS) $optimize $ccflags $large +?JCFLAGS:JCFLAGS = \$(CFLAGS) $optimize $pthread $ccflags $large ?JCPPFLAGS:JCPPFLAGS = $cppflags -?JLDFLAGS:JLDFLAGS = \$(LDFLAGS) $optimize $ldflags +?JLDFLAGS:JLDFLAGS = \$(LDFLAGS) $optimize $pthread $ldflags ?JLFLAGS:JLFLAGS = \$(LFLAGS) ?JYFLAGS:JYFLAGS = \$(YFLAGS) $yaccflags ?L:L = $manext @@ -104,6 +105,7 @@ DIR = $DIR ?MAKE:$make_set_make ?MKDEP:MKDEP = $mkdep \$(DPFLAGS) \$(JCPPFLAGS) -- ?MV:MV = $mv +?NM:NM = $nm ?PRIVLIB:PRIVLIB = $installprivlib ?RANLIB:RANLIB = $ranlib ?RM:RM = $rm -f @@ -193,6 +195,11 @@ maybe_deinstall.man: deinstall.man-no MakefileTarget() TagsTarget() +/* + * Empty rules in case there is no depend target. + */ +depend:: + %SUBDIRS:|skip /* Skip if no sub-directories */ ;######################################################################## ;# Rules for building in sub-directories -- do not edit @@ -240,8 +247,8 @@ Makefiles:: Makefiles.SH:: --skip /* No sub-directories */ -%MKDEP:|skip /* Skip if no depend target */ +-skip /* No sub-directories */ +%local_depend%:|skip /* Skip if no local depend target */ ;######################################################################## ;# Dependencies generated by make depend ;# DO NOT DELETE THIS LINE -- make depend relies on it |