Chris Quenelle <Chris.Quenelle at sun.com> wrote:
> Can you include references to documentation of these
> specific features in other implementations? I'll be
> happy to file an RFE and ping the dmake engineer.
>
> I've included more specific comments below:
>
>
> Joerg Schilling wrote:
> > Hi,
> >
> > are there any plans to implement modern features in
> > /usr/ccs/bin/make and dmake?
> >
> > 1) SunPro make was the first make program on UNIX to
> > introduce the "include" directive but it still only
> > accepts one file name per include directive. This
> > makes it impossible to implement specific features
> > where the number of included files is not known in the
> > makefile that calls it.
> >
> > Note: if you implement this feature, please add an
> > automatically filled out macro "MAKE_NAME" that contains
> > a value other than "make", "smake" or "gmake".
>
> Are you suggesting that on Solaris when a user runs /usr/ccs/bin/make
> we set MAKE_NAME to a value other than "make"? What value
> should we choose? If this is a version/vendor string, shouldn't
> it include the version number also?
The only porpose for the POSIX defined macro $(MAKE) is to allow to
call exactly the same make program again from within "make".
$(MAKE) contains the last path component of the make program or the
complete path. As Linux e.g. delivers "gmake" as "make", this macro
is unusable for identifying a specific make progam implentation.
On the othe side, the POSIX "make" definition is far away from being
sufficitent to be used as a base for a portable make based build environment.
If you like to support portable software, you can either go the way David Korn
did and write your own portable make program and disallow to use any other
program to compile your software or you may write a portable makefile system
that is able to support more than one make imlementation in case that it
supports ehough features. The latter is the way that I go.
Well I could disallow Sun make as it is non-portable and thus only useful on
one of many platforms. In this case we would _need_ to have "smake" on Solaris
as GNU make has too many bugs is unmaintained (important bugs have not been
fixed during the past 10 years). Note that this would force Sun to first
integrate "smake" on Solaris in order to compile the next cdrtools tarball....
In order to allow the schily make file system to distinct between different
make programs and to supply the right make program specific ruleset, I
introduced the macro "MAKE_NAME" 14 years ago. MAKE_NAME contains the value
"sake" in case of smake and you are free to chose a name for sun make (e.g.
"sunmake" or "dmake"). You just cannot use "smake" or "gmake" as these names
are already in use.
As smake is also implementing "automake" support (note that this is not related
to a software from the FSF that is called automake but does not do what the
name lets you expect), smake defined more make specific macros that help to
implement a portable makefile system like the schily makefile system:
MAKE = smake
MAKEFLAGS = -pr
MAKE_ARCH = i386
MAKE_BRAND =
MAKE_DOMAIN =
MAKE_FLAGS = -pr
MAKE_HOST = unknown
MAKE_HWSERIAL = 342163369
MAKE_ISALIST = amd64 pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386
i86
MAKE_LEVEL = 1
MAKE_MACH = i86pc
MAKE_MODEL = i86pc
MAKE_M_ARCH = i86pc
MAKE_NAME = smake
MAKE_OS = sunos
MAKE_OSDEFS = -D__SVR4
MAKE_OSREL = 5.11
MAKE_OSVERSION = snv_117
MAKE_SHELL_FLAG = -ce
MAKE_SHELL_IFLAG = -c
MAKE_VERSION = 1.2a42
as you see, there is also a macro called MAKE_VERSION.
I would need MAKE_NAME in order to detect new sun make versions
that support multiple include file names in a single include directive.
> > 2) POSIX defines a way to forward command line macro=name
> > macro definitions to sub-make programs (make programs
> > called by the current make program) since at least 10
> > years.
> >
> > GNU Make implements this feature since about 15 years and
> > smake implements this feature since 10 years.
> >
> > When whill Sun make implement this feature?
> >
> > Most reasons to patch makefiles from OSS packages will go
> > away in case that command line macro=name definitions
> > are forwarded to sub-makes. You just need to overwrite the
> > values from the top level ake command line.
>
>
> This would certainly be useful in the work I'm doing now.
Good to hear that there are more people who are interested in this feature...
J?rg
--
EMail:joerg at schily.isdn.cs.tu-berlin.de (home) J?rg Schilling D-13353 Berlin
js at cs.tu-berlin.de (uni)
joerg.schilling at fokus.fraunhofer.de (work) Blog:
http://schily.blogspot.com/
URL: http://cdrecord.berlios.de/private/ ftp://ftp.berlios.de/pub/schily