summaryrefslogtreecommitdiffstats
path: root/INSTALL_MAINT
diff options
context:
space:
mode:
Diffstat (limited to 'INSTALL_MAINT')
-rw-r--r--INSTALL_MAINT76
1 files changed, 76 insertions, 0 deletions
diff --git a/INSTALL_MAINT b/INSTALL_MAINT
new file mode 100644
index 0000000..78c3297
--- /dev/null
+++ b/INSTALL_MAINT
@@ -0,0 +1,76 @@
+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.