From afef3c035864297dd2ffe537508164ecb87e89e4 Mon Sep 17 00:00:00 2001 From: James Laird Date: Mon, 11 Apr 2005 16:47:05 -0500 Subject: [svn-r10587] Purpose: Minor feature Description: If a user configures without C++ or Fortran, 'make' will not recurse into c++ or fortran directories. However, if the user cd's into these directories and 'makes,' the Makefiles will attempt to build interfaces that have not been configured, usually failing. In an unrelated but minor change, src/H5detect should be compiled with the -g flag to disable compiler optimizations since it is only executed once. Solution: Make it harder for users to try to compile interfaces that have not been configured by making c++, fortran, and hl directories not recurse into their subdirectories unless they have been configured. Thus, 'make' in /fortran/src will break if Fortran has not been configured, but 'make' in /fortran will not break. Platforms tested: mir, modi4, copper Misc. update: --- c++/Makefile.am | 5 ++++- c++/Makefile.in | 2 +- fortran/Makefile.am | 6 +++++- fortran/Makefile.in | 3 ++- hl/Makefile.am | 6 +++++- hl/Makefile.in | 2 +- src/Makefile.am | 1 + src/Makefile.in | 19 +++++++++++++++++-- 8 files changed, 36 insertions(+), 8 deletions(-) diff --git a/c++/Makefile.am b/c++/Makefile.am index c4e1c44..98241cc 100644 --- a/c++/Makefile.am +++ b/c++/Makefile.am @@ -19,7 +19,10 @@ include $(top_srcdir)/config/commence.am -SUBDIRS=src test +## Only recurse into subdirectories if C++ interface is enabled. +if BUILD_CXX_CONDITIONAL + SUBDIRS=src test +endif DIST_SUBDIRS = $(SUBDIRS) examples # Clean and mostlyclean need to recurse into examples directory diff --git a/c++/Makefile.in b/c++/Makefile.in index 45c5877..4140683 100644 --- a/c++/Makefile.in +++ b/c++/Makefile.in @@ -279,7 +279,7 @@ H5CC = $(bindir)/h5cc H5CC_PP = $(bindir)/h5pcc H5FC = $(bindir)/h5fc H5FC_PP = $(bindir)/h5pfc -SUBDIRS = src test +@BUILD_CXX_CONDITIONAL_TRUE@SUBDIRS = src test DIST_SUBDIRS = $(SUBDIRS) examples # Automake needs to be taught how to build lib, progs, and tests targets. diff --git a/fortran/Makefile.am b/fortran/Makefile.am index 06bd888..dce1857 100644 --- a/fortran/Makefile.am +++ b/fortran/Makefile.am @@ -28,7 +28,11 @@ if BUILD_PARALLEL_CONDITIONAL endif # Subdirectories in build order, not including examples directory -SUBDIRS=src test $(TESTPARALLEL_DIR) +## Only recurse into subdirectories if HDF5 is configured to use Fortran. +if BUILD_FORTRAN_CONDITIONAL + SUBDIRS=src test $(TESTPARALLEL_DIR) +endif + # All directories that have Makefiles DIST_SUBDIRS=src test testpar examples diff --git a/fortran/Makefile.in b/fortran/Makefile.in index dd8e34c..b9967e1 100644 --- a/fortran/Makefile.in +++ b/fortran/Makefile.in @@ -286,7 +286,8 @@ H5FC_PP = $(bindir)/h5pfc @BUILD_PARALLEL_CONDITIONAL_TRUE@TESTPARALLEL_DIR = testpar # Subdirectories in build order, not including examples directory -SUBDIRS = src test $(TESTPARALLEL_DIR) +@BUILD_FORTRAN_CONDITIONAL_TRUE@SUBDIRS = src test $(TESTPARALLEL_DIR) + # All directories that have Makefiles DIST_SUBDIRS = src test testpar examples diff --git a/hl/Makefile.am b/hl/Makefile.am index 4e6db6a..1f016b5 100644 --- a/hl/Makefile.am +++ b/hl/Makefile.am @@ -24,6 +24,10 @@ if BUILD_CXX_CONDITIONAL CXX_DIR = c++ endif -SUBDIRS=src test $(CXX_DIR) $(FORTRAN_DIR) +## Don't recurse into any subdirectories if HDF5 is not configured to +## use the HL library +if BUILD_HDF5_HL_CONDITIONAL + SUBDIRS=src test $(CXX_DIR) $(FORTRAN_DIR) +endif include $(top_srcdir)/config/conclude.am diff --git a/hl/Makefile.in b/hl/Makefile.in index e7b01df..6f5cc45 100755 --- a/hl/Makefile.in +++ b/hl/Makefile.in @@ -277,7 +277,7 @@ H5FC = $(bindir)/h5fc H5FC_PP = $(bindir)/h5pfc @BUILD_FORTRAN_CONDITIONAL_TRUE@FORTRAN_DIR = fortran @BUILD_CXX_CONDITIONAL_TRUE@CXX_DIR = c++ -SUBDIRS = src test $(CXX_DIR) $(FORTRAN_DIR) +@BUILD_HDF5_HL_CONDITIONAL_TRUE@SUBDIRS = src test $(CXX_DIR) $(FORTRAN_DIR) # Automake needs to be taught how to build lib, progs, and tests targets. # These will be filled in automatically for the most part (e.g., diff --git a/src/Makefile.am b/src/Makefile.am index 64f39ed..b861b36 100755 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -24,6 +24,7 @@ include $(top_srcdir)/config/commence.am # a long time to compile it with any optimization on. H5detect is used # to generate H5Tinit.c once. So, optimization is not critical. noinst_PROGRAMS = H5detect +H5detect_CFLAGS = -g # Our main target, the HDF5 library lib_LTLIBRARIES=libhdf5.la diff --git a/src/Makefile.in b/src/Makefile.in index 19547da..a48278c 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -108,7 +108,7 @@ am_libhdf5_la_OBJECTS = H5.lo H5A.lo H5AC.lo H5B.lo H5B2.lo \ libhdf5_la_OBJECTS = $(am_libhdf5_la_OBJECTS) PROGRAMS = $(noinst_PROGRAMS) H5detect_SOURCES = H5detect.c -H5detect_OBJECTS = H5detect.$(OBJEXT) +H5detect_OBJECTS = H5detect-H5detect.$(OBJEXT) H5detect_LDADD = $(LDADD) DEFAULT_INCLUDES = -I. -I$(srcdir) -I. depcomp = $(SHELL) $(top_srcdir)/bin/depcomp @@ -336,6 +336,7 @@ H5CC = $(bindir)/h5cc H5CC_PP = $(bindir)/h5pcc H5FC = $(bindir)/h5fc H5FC_PP = $(bindir)/h5pfc +H5detect_CFLAGS = -g # Our main target, the HDF5 library lib_LTLIBRARIES = libhdf5.la @@ -636,7 +637,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5Zshuffle.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5Zszip.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5Ztrans.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5detect.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5detect-H5detect.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @@ -659,6 +660,20 @@ distclean-compile: @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +H5detect-H5detect.o: H5detect.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(H5detect_CFLAGS) $(CFLAGS) -MT H5detect-H5detect.o -MD -MP -MF "$(DEPDIR)/H5detect-H5detect.Tpo" -c -o H5detect-H5detect.o `test -f 'H5detect.c' || echo '$(srcdir)/'`H5detect.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/H5detect-H5detect.Tpo" "$(DEPDIR)/H5detect-H5detect.Po"; else rm -f "$(DEPDIR)/H5detect-H5detect.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='H5detect.c' object='H5detect-H5detect.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(H5detect_CFLAGS) $(CFLAGS) -c -o H5detect-H5detect.o `test -f 'H5detect.c' || echo '$(srcdir)/'`H5detect.c + +H5detect-H5detect.obj: H5detect.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(H5detect_CFLAGS) $(CFLAGS) -MT H5detect-H5detect.obj -MD -MP -MF "$(DEPDIR)/H5detect-H5detect.Tpo" -c -o H5detect-H5detect.obj `if test -f 'H5detect.c'; then $(CYGPATH_W) 'H5detect.c'; else $(CYGPATH_W) '$(srcdir)/H5detect.c'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/H5detect-H5detect.Tpo" "$(DEPDIR)/H5detect-H5detect.Po"; else rm -f "$(DEPDIR)/H5detect-H5detect.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='H5detect.c' object='H5detect-H5detect.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(H5detect_CFLAGS) $(CFLAGS) -c -o H5detect-H5detect.obj `if test -f 'H5detect.c'; then $(CYGPATH_W) 'H5detect.c'; else $(CYGPATH_W) '$(srcdir)/H5detect.c'; fi` + mostlyclean-libtool: -rm -f *.lo -- cgit v0.12