mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-27 02:10:55 +08:00
77 lines
2.7 KiB
Plaintext
77 lines
2.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 -- removed 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 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
|
||
|
OS
|
||
|
|
||
|
The first file which is found is sourced and can therefore affect
|
||
|
the behavior of the rest of configure. For example, the linux
|
||
|
configuration file might contain:
|
||
|
|
||
|
# Site configuration -- do not distribute this file.
|
||
|
if test "X$CFLAGS" = "X"; then
|
||
|
CFLAGS="-g -Wall"
|
||
|
fi
|
||
|
|
||
|
Site configuration files are for personal preferences and should
|
||
|
not be distributed.
|
||
|
|
||
|
|
||
|
* 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 depend'. For
|
||
|
instance:
|
||
|
|
||
|
$ find . -name .depend -exec rm {} \;
|
||
|
$ make depend
|
||
|
|
||
|
* 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 two-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 modifications
|
||
|
times of archive members.
|