Purpose:
Feature Add
Description:
Added "install-example" and "install-all" to the Makefile system.
The behaviour of the "make install*" options:
make install - Installs binaries, libraries, include
files, and example programs.
make install-examples - Installs only the example programs.
The directories are:
${prefix}/doc/hdf5/examples/{c,c++,fortran}
make install-all - Install the binaries, libraries, include
files, example programs, and
documentation. The whole kit-n'-caboodle.
make uninstall-examples - Get rid of those example files (but not
the ${prefix}/doc/hdf5/examples/...
directories)
There's a new bin/ program which helps create directories which are
deeply nested called "mkdirs". It's a simple shell script.
Platforms tested:
Linux
New feature.
Description:
Test programs were assumed to be serial programs only.
There was no provision to test parallel programs automatically.
Solution:
Added $(TEST_PARA_PROGS) to hold parallel test programs and
added appropriate action entry to test them if defined.
Platforms tested:
Eirene (parallel).
Purpose:
Feature Addition
Description:
Added support for gcc 3.0.x. GCC 3.0.x supports the C99
specification. The "-std=c99" gets rid of those annoying "warning
long long not supported by ANSI standard" messages.
Platforms tested:
Linux and gcc 3.0.1
Purpose:
Bug Fix
Description:
The way we were generating Dependencies and .depend files was broken.
If the $srcdir or other macros began with a ".", then it would match
anything and cause problems since it would then overwrite the
beginning of the header file's path.
Solution:
Wrote a Perl script which can handle this type of weirdness better.
It's only used when the environment is a GNU one with a GCC
compiler...
Platforms tested:
Linux
Bug fix... (sorta)
Description:
Added --enable-linux-lfs configure flag to have better control over whether
the enable large file support on Linux machines. Also removed the
-malign-double flag for gcc since it can potentially cause errors which
are difficult to detect.
Platforms tested:
Linix 2.2 & 2.4 (eirene and dangermouse)
Code cleanup
Description:
Get ready for adding C99 extensions sometime in the future.
Solution:
Added some comments to the gcc flags..
Platforms tested:
Linux (eirene), FreeBSD 4.3 (hawkwind)
Better Mouse Trap^W^WBug Fix
Description:
Instead of having the large file support stuff be in the
config/gnu-flags directory, I added it to the configure.in file so
that it first checks for the syscall ``getdents64()''. If it finds
it, then it removes the ``-malign-double'' flag if the GCC compiler
is 2.95.x since this flag doesn't play well with the LFS stuff.
Solution:
Added test for getdents64(), if found it removes the -malign-double
flag if the compiler is 2.95.x. This is done in the configure.in
file. The gnu-flags file is returned to normal. A new field is added
to the H5config.h.in file because of the getdents64 check.
Platforms tested:
Linux
Bug Fix
Description:
Linux does actually support 64 bit files (those greater than 2GB),
you just have to defined a bunch of, seemingly meaningless, macros in
order to coax glibc to work with you. 64 bit file support is in the
2.3 and above kernels by default. For lower, well...upgrade or
something. The one weird thing, the "-mdouble-align" flag was causing
hdf5 to barf when the large file support was compiled in there. It
has something to do with the structures and their alignment or
something. Very weird.
Solution:
Added a test to see if we're on a Linux boxen with kernel >2.3 and if
so then specify the flags for LFS support. Removed the -mdouble-align
flag if we do use LFS support since it causes damage.
Platforms tested:
Linux (Dangermouse)
Bug fix.
Description:
'make distclean' is broken on FreeBSD 4.3, with some syntax errors. I have
a feeling that the make command is more picky in FBSD 4.3 than in 4.2 which
is what is causing these errors to crop up now.
Solution:
Add missing semicolon to line in 'clean' target and take out bogus '-'s
in front of "$(RM)" commands which are already in if's
Platforms tested:
FreeBSD 4.3 (hawkwind)
Bug Fix
Description:
On the T3E, the hack about SUBDOCDIR macro didn't work cause it
wanted an actual value to be in this macro. Well, it wasn't, so now I
check that it actually has a value.
Solution:
Check that DOCDIR and SUBDOCDIR have a value before trying to do
anything with it.
Portability changes
Description:
Very quick port to Compaq (nee DEC) Alpha OSF5.
Solution:
Added a new "dec-osf5.x" configuration file and changed configure.in
to look for it.
The local test machine is now passing all the tests, except I can't get
the "-L<path>" stuff to work, so tools which depend on the HDF4 library
around tested.
Platforms tested:
Compaq Alpha 5.1 (compaq.ncsa.uiuc.edu)
Bug Fix
Description:
If we need to specify a -R flag for dynamic libraries (like, in the
case when we specify --with-hdf4), then this flag needs to be added
to the linking line so that it will show up in the generated library
and other programs linking to that library will be able to find the
relevant libraries.
Solution:
Added the DYNAMIC_DIRS macro to the link line.
Platforms tested:
Arabica
Update
Description:
Changed the way .depend and Dependencies files were being generated.
Instead of gathering all files which are ``#included'', we only pick
out the ones which are local to us.
Solution:
Changed -M flag to -MM and changed
#include <hdf5_files.h>
to
#include "hdf5_files.h"
in the source code.
Platforms tested:
Linux
Hack
Description:
Need to install the files in the examples/java directory, however
they include installing a Makefile. This was causing havoc with our
Makefile/configure system.
Solution:
Changed so that you can specify a "SUBDOCDIR" which will create a
subdirectory for you and fill it with files specified in PUB_SUBDOCS.
Platforms tested:
Linux
Bug Fix
Description:
Added logic so that all the various make options would recursively be
done in their subdirectories.
Solution:
Added a for-loop to iterate through the subdirectories.
Platforms tested:
Linux
Fix
Description:
The "make *clean" options weren't recursing through the
subdirectories (if they exist).
Solution:
Force it to recurse through the subdirectories listed in SUBDIRS
Platforms tested:
Linux
Update
Description:
Incorporated all the changes made to powerpc-ibm-aix4.2.1.0
and powerpc-ibm-aix4.3.2.0 into powerpc-ibm-aix4.x.
Removed the other two "sub-files" now that powerpc-ibm-aix4.x
can cover them too.
Platforms tested:
IBM SP2 at LLNL BLUE, both parallel and serial.
Code cleaning
Description:
Moved all gcc compiler flags into the config/gnu-flags file and re-added
the warning flags removed during the beta testing.
Platforms tested:
FreeBSD 4.2 (hawkwind)
Fix for install-doc feature
Description:
I fixed the install-doc feature so that it actually works! (Imagine
:-).
Solution:
It manually checks if the DOCDIR exists. If not, then it mkdir's it.
Then it does the install of the appropriate docs.
Platforms tested:
Linux, Solaris
Config cleanup
Description:
In production environments, the optimization flag for gcc was set to
-O6, which has some code-generation problems in certain environments.
Solution:
Turned optimizations down to -O2, which is still pretty bleeding edge.
Platforms tested:
FreeBSD 4.2 (hawkwind)
New platform
Description:
Support the Cray SV1 machine. (config file is identical to unicosmk file
right now).
Platforms tested:
Cray SV1 (killeen.nersc.gov)
Feature Fix
Description:
This checks before printing the warning message about hsizet type if
the user specified --disable-hsizet on the command line.
Platforms tested:
Linux
Bug fix
Description:
install method was cached as 'cp -r'. It did not work
in --srcdir option as the configure set the method to ../cp -r.
Solution:
Removed the cached entry. Let it look for install or use install-sh.
Platforms tested:
LLNL Blue (found and used /usr/local/gnu/bin/install).
Bug fix
Description:
TFLOPS was configured to use '-g' flag even when --enable-production
option was used. It was because configure hard set CFLAGS to '-g'
if it is a valid C compiler option and if $CFLAGS is not set yet.
This is not noticed in other platforms because the config/* files
they all set CFLAGS in one form or another.
Solution:
This is a bug in configure but it is risky to change it so close
to code release. Instead, just set CFLAGS in this file to bypass
the configure bug which should be squashed after code release.
Platform tested:
Tflops with parallel, both debug and production modes.
Improvement
Description:
During configure, it tries to find the size of various basic
C data types (int, int8, fast_int8, ...) by running a small
program for each data type. But Pecific blue uses a batch queue
system to launch all jobs and the whole process takes couple
minutes. With over 20 basic types to test, that takes "forever"
for the configure to complete.
Solution:
Let the configure complete, then save all those valid values in
the config.cache file into the specific config file for Pac. Blue.
With the values cached, configure does not need to run those little
problems.
Platform Tested:
Pacific blue with mpicc.
Purpose:
Bugfix
Description:
The gcc linker couldn't resolve any socket routine symbols
if the Stream VFD was configure.
Solution:
Add the socket library to the LIBS makefile variable not just
when compiling with the native cc compiler
but also if using GNU tools (such as on Solaris x86 systems).
Platforms tested:
SunOS 5.5 with GNU cc (hatteras),
SunOS 5.6 with native cc (thor.sistec.kp.dlr.de)
Bug Fix
Description:
configure on Cray T3E is looking for a differently named config file,
so at it under that name.
Platforms tested:
Cray T3E (mcurie)
Buglet
Description:
If we compiled with -all-static, then the compiler could complain
about not being able to find dlopen and friends.
Solution:
Used the ``-dlopen self'' libtool command.
Platforms tested:
Linux
Bug Fix
Description:
Some platforms don't have support for dlopen and friends when the
library is static.
Solution:
This is part of the attempt to correct this "feature". libtool
wants AC_LIBTOOL_DLOPEN in the configure.in file and -dlopen on
this line...
Platforms tested:
(untested)
Bug fix
Description:
make reconfigure complained syntax error.
Solution:
The for loop previous added contained a typo. Replaced $$test
with $$sub.
Platforms tested:
modi4-64.
Fix
Description:
Changed so that only *.c files are run through the tracing
program. This is so the fortran stuff won't return spurious
warnings.
Platforms tested:
Linux
Purpose:
Set compiler flag to force BSD compliance.
Description:
In order to set a socket descriptor into non-blocking mode
via ioctl(2) the Stream driver uses the FIONBIO constant.
Under Solaris this is defined only when compiled as BSD code.
I hope this doesn't break anything.
Platforms tested:
Solaris 5.7
Bug fix
Description:
During a `reconfigure', it wasn't traversing the
subdirectories...
Solution:
Added a loop to the reconfigure logic to do just that.
Platforms tested:
NOT tested...
Bug Fix
Description:
On some platforms, if you don't have . in your PATH, it won't
find the test program it's supposed to run.
Solution:
Changed instead to ./$$test so that it picks up the program in
the current directory.
Platforms tested:
Opus and Linux
Site specific configure files
Description:
Some machines need to specify things during the configure
but they aren't necessary for all machines of that type. Those
site-specific changes should go here. The format of the filename
is:
host-$hostname
where $hostname is the output from the `hostname' command.
Needless to say, this is optional to those sites which don't need
it.
Fix Irix pmake bugs
Description:
Build fails on Irix when builddir != srcdir
Solution:
* acconfig.h
* src/H5config.h.in [REGENERATED]
Added definition for HAVE_STREAM
* config/conclude.in
* config/depend1.in
* config/depend2.in
* config/depend3.in
* config/depend4.in
The `Dependencies' file is located in the source
tree. This fixes bugs for Irix pmake when compiling
outside the source tree. Hopefully it still preserves
Albert's changes which allow concurrent compilations
to not stomp on each other's Dependencies files.
* examples/Dependencies [REGENERATED]
* src/Dependencies [REGENERATED]
* test/Dependencies [REGENERATED]
* tools/Dependencies [REGENERATED]
Regenerated for testing purposes.
Platforms:
i686-pc-linux
mips-sgi-irix6.5
sparc-sun-solaris2.6
Feature
Description:
Most tests are done inside a for-loop. Whenever a test exits
with error, the for-loop does a "exit 1" to exit the make.
"make -i" could not catch and ignore the error status.
Solution:
Replaced "exit 1" with break. At the end of the for-loop,
test if all tests have been run. If not, the for-loop is
ended by the break command, thus raise an error. Now,
'make -i' can catch and ignor it.
Also added the test of variable HDF5_Make_Ignore inside the
for-loop to indicate the desire to ignore errors when the
HDF5_Make_Ignore is set to a non-null/blank string.
Platforms:
Tested on modi4 and eirene.
in the configure script, basically replacing all -L/<path> constructs
with -R/<path> ones so that libtools will pass it along to the compiler
correctly.
Feature "improvement".
Problem:
The Makefile target triggers gmake to redo the whole auto-configure
process if it sees any autoconfigure related files changed. It causes
couple problems. One is that when multiple machines using --srcdir
are running make, they may detect the changes and launch the autoconf
at the same time. These end up as multiple hosts updating the same
srcdir area together--bad things can happen. Another one is that
when one modifies some Makefile.in, then try "make distclean" before
launching the configure process. Instead of cleaning things, it
started a configure, recreate all Makefiles and other files, then
finally come around to do the distclean--who knows what it cleans
by now since the Makefile is changed too. Last problem was that
this auto-process will launch even for command "gmake -n ...".
Solution:
Renamed Makefile target to reconfigure so that the auto-checking
is still available but must be launched explicitedly. If one
wishes to have the auto-checking as default, one may do
alias gmake "\gmake -i reconfigure; gmake \!* ".
Configuration improvement
Problem:
Arabica has a zlib library that is a dynamic lib in /usr/ncsa/lib.
Binary generated would fail to run with a missig libz.so complain
if /usr/ncsa/lib is not in $LD_LIBRARY_PATH. This exposed the
problem that if the binary is linked with -L$mylibpath -lxyz
where libxyz is a dynamic type, the binary can't run if $mylibpath
is not in $LD_LIBRARY_PATH (or equivalent) or as part of the
system default library paths (e.g., /usr/lib, /usr/local/lib).
This problem also caused failures during configure (when trying
to see what format to print long long) and during H5detect.
The base cause is because libtool does not "transfer" the
knowledge of -L$mylibpath to the wrapper file its mode=link
generates.
Solution:
bin/ltmain.sh:
Changed it so that it transfers the libpaths from -Llibpaths
to the wrapper generated. I used the already defined variable
finalize_shlibpath. Not sure it is correct to use it this way.
Need to check on this.
configure.in:
Put in a patch to transfer information from LDFLAGS to LD_LIBRARY_PATH
right before the AC_TRY_RUN. The above fix for ltmain.sh does not
work here because libtool is generated later than this point.
There should be a cleaner way to do this.
Removed the hardcode of NCSA_LT_LINK_EXE because it is no longer
needed.
commence.in:
Removed the hardcode of NCSA_LT_LINK_EXE because it is no longer
needed.
Makefile.in:
Another patch of LDFLAGS to LD_LIBRARY_PATH because I could not
make it to generate H5detect in the wrapper form of libtool.
Need to make it to use the libtool correctly. Later.
Platform tested:
arabica (solaris 2.7)
baldric (solaris 2.6)