mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-12-03 02:32:04 +08:00
4bf629adc9
./INSTALL_MAINT ./README ./RELEASE Partially updated for second alpha, but haven't updated version numbers yet. ./src/H5.c ./src/H5A.c ./src/H5AC.c ./src/H5B.c ./src/H5D.c ./src/H5F.c ./src/H5Fcore.c ./src/H5Ffamily.c ./src/H5Fistore.c ./src/H5Fmpio.c ./src/H5Fsec2.c ./src/H5Fsplit.c ./src/H5Fstdio.c ./src/H5G.c ./src/H5Gnode.c ./src/H5HG.c ./src/H5HL.c ./src/H5I.c ./src/H5MM.c ./src/H5MMprivate.h ./src/H5O.c ./src/H5Oattr.c ./src/H5Ocomp.c ./src/H5Ocont.c ./src/H5Odtype.c ./src/H5Oefl.c ./src/H5Olayout.c ./src/H5Oname.c ./src/H5Osdspace.c ./src/H5Oshared.c ./src/H5Ostab.c ./src/H5P.c ./src/H5S.c ./src/H5T.c ./src/H5Tconv.c ./src/H5detect.c ./test/hyperslab.c ./test/istore.c Changed memory allocation functions so they fail instead of dumping core. The `x' was removed from the name to remind us of that: H5MM_xmalloc() -> H5MM_malloc(), etc. H5MM_calloc() takes one argument like H5MM_malloc() instead of two like calloc() because we almost always called it with `1' for one of the arguments anyway. The only difference between the two functions is that H5MM_calloc() returns memory which is initialized to zero. ./src/H5Gent.c ./src/H5Gprivate.h Removed H5G_ent_calloc() since it wasn't used. ./src/H5Fistore.c Fixed a bug found by Albert. Thanks, Albert! This fix combined with the changes to memory allocation prevent the library from failing an assertion if the application uses an unreasonable size for chunks (like Alberts 10000x10000x4). ./src/H5MF.c ./src/H5MFprivate.h Changed H5MF_free() to H5MF_xfree() since calling it with an undefined address is allowed.
100 lines
3.7 KiB
Plaintext
100 lines
3.7 KiB
Plaintext
Information for HDF5 maintainers:
|
|
|
|
* You can run make from any directory. However, running in a
|
|
subdirectory only knows how to build things in that directory and
|
|
below. However, all makefiles know when their target depends on
|
|
something outside the local directory tree:
|
|
|
|
$ cd test
|
|
$ make
|
|
make: *** No rule to make target ../src/libhdf5.a
|
|
|
|
* All Makefiles understand the following targets:
|
|
|
|
all -- build locally.
|
|
install -- install libs, headers, progs.
|
|
uninstall -- remove installed files.
|
|
mostlyclean -- remove temp files (eg, *.o but not *.a).
|
|
clean -- mostlyclean plus libs and progs.
|
|
distclean -- all non-distributed files.
|
|
maintainer-clean -- all derived files but H5config.h.in and configure.
|
|
|
|
* Most Makefiles also understand:
|
|
|
|
TAGS -- build a tags table
|
|
dep, depend -- recalculate source dependencies
|
|
lib -- build just the libraries w/o programs
|
|
|
|
* If you have personal preferences for which make, compiler, compiler
|
|
flags, preprocessor flags, etc., that you use and you don't want to
|
|
set environment variables, then use a site configuration file.
|
|
|
|
When configure starts, it looks in the config directory for files
|
|
whose name is some combination of the CPU name, vendor, and
|
|
operating system in this order:
|
|
|
|
CPU-VENDOR-OS
|
|
VENDOR-OS
|
|
CPU-VENDOR
|
|
OS
|
|
VENDOR
|
|
CPU
|
|
|
|
The first file which is found is sourced and can therefore affect
|
|
the behavior of the rest of configure. See config/BlankForm for the
|
|
template.
|
|
|
|
* If you use GNU make along with gcc the Makefile will contain targets
|
|
that automatically maintain a list of source interdependencies; you
|
|
seldom have to say `make clean'. I say `seldom' because if you
|
|
change how one `*.h' file includes other `*.h' files you'll have
|
|
to force an update.
|
|
|
|
To force an update of all dependency information remove the
|
|
`.depend' file from each directory and type `make'. For
|
|
instance:
|
|
|
|
$ cd $HDF5_HOME
|
|
$ find . -name .depend -exec rm {} \;
|
|
$ make
|
|
|
|
If you're not using GNU make and gcc then dependencies come from
|
|
".distdep" files in each directory. Those files are generated on
|
|
GNU systems and inserted into the Makefile's by running
|
|
config.status (which happens near the end of configure).
|
|
|
|
* If you use GNU make along with gcc then the Perl script `trace' is
|
|
run just before dependencies are calculated to update any H5TRACE()
|
|
calls that might appear in the file. Otherwise, after changing the
|
|
type of a function (return type or argument types) one should run
|
|
`trace' manually on those source files (e.g., ../bin/trace *.c).
|
|
|
|
* Object files stay in the directory and are added to the library as a
|
|
final step instead of placing the file in the library immediately
|
|
and removing it from the directory. The reason is three-fold:
|
|
|
|
1. Most versions of make don't allow `$(LIB)($(SRC:.c=.o))'
|
|
which makes it necessary to have two lists of files, one
|
|
that ends with `.c' and the other that has the library
|
|
name wrapped around each `.o' file.
|
|
|
|
2. Some versions of make/ar have problems with modification
|
|
times of archive members.
|
|
|
|
3. Adding object files immediately causes problems on SMP
|
|
machines where make is doing more than one thing at a
|
|
time.
|
|
|
|
* When using GNU make on an SMP you can cause it to compile more than
|
|
one thing at a time. At the top of the source tree invoke make as
|
|
|
|
$ make -j -l6
|
|
|
|
which causes make to fork as many children as possible as long as
|
|
the load average doesn't go above 6. In subdirectories one can say
|
|
|
|
$ make -j2
|
|
|
|
which limits the number of children to two (this doesn't work at the
|
|
top level because the `-j2' is not passed to recursive makes).
|