> http://cr.grommit.com/~chin/ksh93-webrev-jun29/jun29-makefiles/
I've completed my review of the Makefiles. Things are looking good --
most of my comments are quite minor. Nice work, Roland :-)
General:
* Seems like every AST-related Makefile contains:
# Override this top level flag so the compiler builds in its
# native C99 mode. This has been enabled to support the math
# stuff in the AST tools.
C99MODE= $(C99_ENABLE) -D_XOPEN_SOURCE=600 -D__EXTENSIONS__=1
# silence common libast&co. warnings (upstream will handle this
# later) ... ... about |#pragma prototyped| ...
CERRWARN += -erroff=E_UNRECOGNIZED_PRAGMA_IGNORED
It would be really nice if we could centralize these somewhere.
(Just a request, not a requirement.)
* I realize the use of SHELL=/usr/bin/ksh has been discussed
before, and I know you want to keep it. But for the library
Makefiles, can we please consolidate it into libfoo/Makefile.com
and yank it out of libfoo/$ISA/Makefile? (That should also
allow you to remove libcmd/$ISA/Makefile from your list of
changed files.)
* A nit, but almost every libfoo/Makefile.com has "explicitly"
misspelled as "expliclity".
* Similarly another nit: almost every libfoo/Makefile has a
needless "definitions for install_h target" comment above HDRS.
lib/Makefile:
* 515: libshell appears to have a spurious dependency on libnsl.
lib/libc/{sparc,sparcv9,amd64,i386}/Makefile.com:
* It's a shame this has to be duplicated across all four Makefiles,
but I guess that's status quo with the libc Makefiles.
* In theory, you need a FLG here so that when someone brings
over usr/src/lib/libc they'll get Makefile.ksh93switch brought
over too. But FLGs are dying soon with the Mercurial switch,
so I guess it doesn't matter.
lib/libcmd/Makefile:
* 51-52: Not sure why the HDRDIR32/HDRDIR64 handling warrants a
comment here (none of the other uses seem to have comments).
lib/libcmd/Makefile.com:
* 104: "-Isrc/lib/libcmd" seems bizarre; why is this necessary?
* 131-132: Comment about fnamecheck omission seems unnecessary.
lib/libdll/{sparc,sparcv9,amd64,i386}/Makefile:
* GETRELEASEMINOR seems the hard way around; seems simpler to
update Makefile.master to have:
RELEASE_MAJOR=5
RELEASE_MINOR=11
RELEASE=$(RELEASE_MAJOR).$(RELEASE_MINOR)
... then get rid of GETRELEASEMINOR. (But if for some reason it
needs to be kept, then please move it somewhere more common.)
* Seems simpler to replace DLLPLATFORMCPPFLAGS with
DLLPLATFORM=sun4 (or i386), and then have Makefile.com have
"-DHOSTTYPE="sol$(RELEASE_MINOR).$(DLLPLATFORM)" in CPPFLAGS.
lib/libast/{sparc,sparcv9,amd64,i386}/Makefile:
* Same comments as libdll above.
lib/libpp/Makefile.com
* 100: s/execept/except/
lib/libshell/Makefile.demo:
* 74: Continuation line here seems awkward.
lib/libshell/Makefile.com:
* 122: Comment mentions libnsl, but it's not in the corresponding
macro.
* 134-171: Could we keep the CPPFLAGS in cmd/ksh/Makefile.com
and here in-sync through includes instead?
* 143: -Isrc/cmd/ksh93 seems suspicious; why are header files
for the library lurking over in a command directory?
cmd/Makefile:
* 31: Why include ksh/Makefile.ksh93switch here? If we really
need this, seems like Makefile.ksh93switch needs to move to a
more common directory.
cmd/ast/msgcc/Makefile
* 70: Comment about "install rules" doesn't seem to match code
that follows.
* 73: "main" comment here seems unnecessary.
* 80-82: Suggest consolidating into `clean lint:'
* 84-90: These lines should be needless now that all the programs
are listed in $(PROG).
cmd/ksh/Makefile:
* 65-74: I'm confused why this logic is here and at e.g. lines
39-46 of cmd/ksh/i386/Makefile.
cmd/ksh/Makefile.com:
* 39-43: This comment seems a bit hard to believe, since there
seems to be a sizeable difference between this Makefile's
structure and the one in libshell. Given that there's just
a single source file, I don't see the need for mkpicdirs.
* 49: See previous FLG-related comment.
* 52: Extra blank line.
* 57-58: See previous comment on the need to share this
list with libshell.
* 132: I think this comment is supposed to explain why we delete
ksh and ksh93 even for `clean' (rather than `clobber'), but I'm
not quite getting it.
cmd/ksh/Makefile.testshell:
* 38-44: So will this test suite failure be resolved prior to
integration?
* 56-61: Since we're well past build 64, can this issue be
removed? (If not, please reformat the comment to be 80-column
friendly.)
* 66: s/compliciated./complicated./
* 81, 95: Use of csh prompt syntax seems surprising here ;-)
* 100: s/weired/weird/.
* 104: One exclamation point will do ;-)
* 113-143: Please reformat to be 80-column friendly.
cmd/ksh/Makefile.ksh93switch:
* 28-30: Nit: the suggestion would be easier to parse if we
removed the embedded comment -- e.g.:
# Should we build ksh93 as /bin/ksh ?
# This can be overridden at build time via:
# $ export ON_BUILD_KSH93_AS_BINKSH=1
* 37: Extra blank line.
usr/src/lib/Makefile.astmsg:
* 29: Should "Temporary control building" be "Temporary control
over building"? (Or maybe "Temporarily" was meant?)
* 33-35: Similar nit to Makefile.ksh93switch.
* 44: s/mesage/message/
* 60-63: Seems like the common part of these macros should be
moved into ASTMSGCCFLAGS. (I'm also unclear why ASTMSGCCFLAGS
is needed, rather than directly using CPPFLAGS.)
* 69, 63, 76: Why is CFLAGS needed?
* 79-81: Seems like it would be simpler as:
$(ASTMSGCATALOG): $(MSGLIBNAME).msg
@$(RM) $@; \
$(SED) 's/^$$translation msgcc .*//' $(MSGLIBNAME).msg | gencat
$@ -
... but I haven't tested it.
* 90: $(TOUCH) instead?
cmd/sgs/libelf/Makefile.com:
* Not sure why the DIRMODE setting is no longer needed.
Makefile.lint:
cmd/ast/Makefile:
cmd/nsadmin/Makefile:
cmd/sgs/libelf/Makefile.targ:
src/cmd/ksh/{sparc,sparcv9,amd64,i386}/Makefile:
lib/libast/Makefile:
lib/libpp/Makefile:
lib/libdll/Makefile:
lib/libdll/Makefile.com
lib/libcmd/{sparc,sparcv9,amd64,i386}/Makefile:
lib/libpp/{sparc,i386}/Makefile:
lib/libshell/{sparc,sparcv9,amd64,i386}/Makefile:
pkgdefs/Makefile:
pkgdefs/SUNWastdev/Makefile:
* Reviewed, no comments beyond the general ones.
--
meem