The use of the gcc commandline option -I- had been
deprecated for a while now. I just removed it from the PTMakefile's.
The test (make test) was fixed to work with modern C++ compilers that demand that std::cout is used instead of just cout.
Fixed the default Makedefs.h: the given example cause
CPPEXT to end on a space which then resulted in a total
failure of everything else (It must be: CPPEXT=.cc on it own
on a line, not CPPEXT=".cc" with or without a comment
behind it).
The test (make test) was fixed to work around a bug in the
libstdc++ that comes with for instance RedHat-7.0
(_G_CLOG_CONFLICT needs to be defined).
Support for FreeBSD: The path to make is now better
propagated so things work when you are using gmake for
instance. FreeBSDs find does not support
-mindepth -maxdepth or -printf,
therefore find has been replaced with a construction
using ls and grep.
All UNIX programs that used to be set in $PROTODIR/Makedefs.h
are now determined, including path, by ./configure.
During installation /bin/sh is used (bash is
still needed to use prototype makefiles).
./configure now tries to extract --prefix
and --datadir automatically from a previous install.
Fixed all Makefiles with a loop like
"for i in $(SUBDIRS); do".
The behaviour of for in bash-2 changed from bash-1.14
and prototype would not work with bash-2.
Only remove ELF executable files, not scripts, in target
real-clean.
Added CPPEXT to $PROTODIR/Makedefs.h.
Bug fixes for target real-clean: .cvsignore
files were wrongly deleted and recursion into sub directories was broken.
Target shared didn't create the $BASEDIR/lib directory, if it doesn't exist, before copying the shared library there.
A few minor bug fixes:
typing make in a subdirectory
caused the target .depend to be build while checking the
Makefile target.
This can fail since INCLUDEFLAGS is set by the
Makefile(s) in the parent directories now.
Also, it was possible that the dependency on subdirectory objects caused these object files to be rebuild with the rules of the parent Makefile. Both bugs have been fixed.
The INCLUDEFLAGS variable is now correctly
propagated to sub directories by replacing each occurance of
"-I" by "-I../".
$PROTODIR/Makedefs.h was corrected to include a
DFLAGS variable which can be set to -MM or
-M to produce respectively dependencies of only local
header files (between double quotes) or also system header files
(between angle brackets)
Of course you can change the default per project in your
$BASEDIR/Makedefs.h file.
If you upgrade from version 1.0, then please note that
you will have to set a new environment variable (CPPEXT)
and that the variable SRC has been spliced into two:
CSRC and CXXSRC, for C sources and
C++ sources respectively.
You will have to edit all your projects Makefiles and change
SRC into CXXSRC (assuming it's a
C++ project), sorry about that.
Also, CFLAGS is now only used for C sources,
you'll have to change CXXFLAGS for C++ projects.
Warning: Upgrading prototype will overwrite
$PROTODIR/Makedefs.h. If you made changes to that file
(most likely setting a different default CFLAGS), then you'll
have to redo that by hand after installing. You might
want to backup $PROTODIR/Makedefs.h before installing.