Files
hdf5/fortran/config/conclude.in
Bill Wendling 7927acd7f3 [svn-r6739] Purpose:
Bug Fix

Description:
    H5FC was failing on Copper (IBM P690). The reason: the xlf compiler
    needs files to end in .f in stead of .f90. If you have .f90 files,
    you need the "-qsuffix=f=f90" flag defined. This was defined for
    compiling things via the "-c" option (to object files) but not for
    straight compilation of a file.

    I also noticed that the directory modules were being extracted from
    was "." and "../src". H5FC would find these alright when doing a
    "make check-install" but if Suzie User were to try this, it might
    fail for her. Suzie would have to specify explicitly where to grab
    these files.

Solution:
    The solution to the problem was a bit more involved. I added a new
    variable called "F9XSUFFIXFLAG" which is set to this value if the
    machine needs it.

    Added new variable called "FSEARCH_DIRS" which can be set to the
    directories to find modules during compilation. The H5FC script knows
    where to find the correct modules (it's in the lib/ directory), so it
    uses the F9XMODFLAG to find them and not the FSEARCH_DIRS flag.

Platforms tested:
    Modi4 (Fortran & Parallel)
    Verbena (Fortran) C++ not needed since this is Fortran-only fix
    Arabica (Fortran)
    Copper (Fortran)

    Ran "make install" and "make check-install" afterwards...

Misc. update:
2003-04-23 14:25:58 -05:00

190 lines
6.6 KiB
Makefile

##------------------------------------------------------------ -*- makefile -*-
## The following section of this makefile comes from the
## `./config/conclude' file which was generated with config.status
## from `./config/conclude.in'.
##-----------------------------------------------------------------------------
## This is the target for the library described in the main body of the
## makefile.
##
lib: $(LIB)
$(LIB) __no_library__: $(LIB_OBJ)
@$(LT_LINK_FLIB) -o $@ $(FFLAGS) $(LIB_OBJ) $(LDFLAGS) $(LIBS)
progs: $(LIB) $(PROGS)
## Build a tags file in this directory.
TAGS: $(LIB_SRC)
$(RM) $@
-etags $(LIB_SRC)
## Runs each test in order, passing $(TEST_FLAGS) to the program.
tests: $(TEST_PROGS) $(LIB)
check test _test: tests
@for test in $(TEST_PROGS) dummy; do \
if test $$test != dummy; then \
echo "============================"; \
echo "Testing $$test $(TEST_FLAGS)"; \
echo "============================"; \
srcdir="$(srcdir)" \
$(RUNTEST) ./$$test $(TEST_FLAGS) || \
exit 1; \
echo ""; \
fi; \
done;
@for test in $(TEST_SCRIPTS) dummy; do \
if test $$test != dummy; then \
echo "============================"; \
echo "Testing $$test $(TEST_FLAGS)"; \
echo "============================"; \
RUNSERIAL="$(RUNSERIAL)" RUNPARALLEL="$(RUNPARALLEL)" \
srcdir="$(srcdir)" \
/bin/sh $$test $(TEST_FLAGS) || \
exit 1; \
echo ""; \
fi; \
done;
## Make installation directories directories if they don't exist.
$(libdir):
$(top_srcdir)/bin/mkdirs $@
$(includedir):
$(top_srcdir)/bin/mkdirs $@
$(bindir):
$(top_srcdir)/bin/mkdirs $@
$(DOCDIR):
$(top_srcdir)/bin/mkdirs $@
$(EXAMPLEDIR):
$(top_srcdir)/bin/mkdirs $@
## Install the library, the public header files, and public programs.
install: $(PUB_LIB) $(PUB_HDR) $(PUB_PROGS) $(libdir) $(includedir) $(bindir)
@for f in X $(PUB_LIB); do \
if test $$f != X; then \
(cd .libs && rm -f $(PUB_LIB)i && ln -s ../$(PUB_LIB) $(PUB_LIB)i); \
($(LT_INSTALL_LIB) $$f $(libdir)/. || exit 1); \
fi; \
done
@if test -n "$(F9XMODEXT)" && test "X$(F9XMODEXT)" != "Xo"; then \
if test -f "hdf5.$(F9XMODEXT)" || test -f "HDF5.$(F9XMODEXT)"; then \
((cp *.$(F9XMODEXT) $(libdir)/. && chmod 644 $(libdir)/*.$(F9XMODEXT)) || exit 1); \
fi; \
fi
@if test -f libhdf5_fortran.settings; then \
(set -x; $(INSTALL_DATA) libhdf5_fortran.settings $(libdir)/. || exit 1); \
fi
@for f in X $(PUB_HDR); do \
if test $$f != X; then \
if test -f $$f; then \
(set -x; $(INSTALL_DATA) $$f $(includedir)/. || exit 1); \
else \
(set -x; $(INSTALL_DATA) $(srcdir)/$$f $(includedir)/. || \
exit 1); \
fi; \
fi; \
done
@for f in X $(PUB_PROGS); do \
if test $$f != X; then \
($(LT_INSTALL_PROG) $$f $(bindir)/. || exit 1); \
fi; \
done
install-examples: $(EXAMPLE_PROGS) $(EXAMPLEDIR)
@for f in X $(EXAMPLE_PROGS); do \
if test $$f != X; then \
(set -x; $(INSTALL_DATA) $(srcdir)/$$f $(EXAMPLEDIR)/. || exit 1);\
fi; \
done
uninstall-examples:
@if test -n "$(EXAMPLE_PROGS)"; then \
set -x; cd $(EXAMPLEDIR) && $(RM) $(EXAMPLE_PROGS); \
fi
## Removes those things that `make install' (would have) installed.
uninstall:
@for f in libhdf5_fortran.settings $(LIB); do \
$(LT_UNINSTALL) $(libdir)/$$f; \
done
@if test -n "$(PUB_HDR)"; then \
set -x; cd $(includedir) && $(RM) $(PUB_HDR); \
fi
@if test -n "$(F9XMODEXT)" -a "X$(F9XMODEXT)" != "Xo"; then \
if test -f "$(libdir)/hdf5.$(F9XMODEXT)" -o -f "$(libdir)/HDF5.$(F9XMODEXT)"; then \
set -x; $(RM) $(libdir)/*.$(F9XMODEXT); \
fi; \
fi
@for f in X $(PUB_PROGS); do \
if test $$f != X; then \
$(LT_UNINSTALL) $(bindir)/$$f; \
fi; \
done
## Removes temporary files without removing the final target files. That is,
## remove things like object files but not libraries or executables.
##
mostlyclean:
@if test -n "$(LIB_OBJ)"; then \
$(RM) $(LIB_OBJ) $(LIB_OBJ:.lo=.o); \
fi
@if test -n "$(TEST_OBJ)"; then \
$(RM) $(TEST_OBJ) $(TEST_OBJ:.lo=.o); \
fi
@if test -n "$(PROG_OBJ)" || test -n "$(MOSTLYCLEAN)"; then \
$(RM) $(PROG_OBJ) $(PROG_OBJ:.lo=.o) $(MOSTLYCLEAN); \
fi
## Like `mostlyclean' except it also removes the final targets: things like
## libraries and executables. This target doesn't remove any file that
## is part of the HDF5 distribution.
##
clean: mostlyclean
@if test -n "$(LIB)" -o -n "$(TEST_PROGS)" -o -n "$(PROGS)" -o -n "$(CLEAN)"; then \
$(RM) $(LIB) $(TEST_PROGS) $(PROGS) $(CLEAN); \
fi
-$(RM) *.M *.a *.mod
-$(RM) -r .libs
## Like `clean' except it also removes files that were created by running
## configure. If you've unpacked the source and built HDF5 without creating
## any other files, then `make distclean' will leave only the files that were
## in the distribution.
##
distclean: clean
-$(RM) .depend TAGS *~ core *.core *.bak *.old *.new $(DISTCLEAN)
@if test -f $(srcdir)/Makefile.in; then \
(set -x; $(RM) Makefile); \
fi
## Like `distclean' except it deletes all files that can be regenerated from
## the makefile, including those generated from autoheader and autoconf.
##
maintainer-clean: distclean
-$(RM) *~ core core.* *.core *.bak *.contrib gmon.out
## Implicit rules
.c.o:
$(CC) $(CFLAGS) $(CPPFLAGS) -c $<
.c.lo:
@$(LT_CCOMPILE) $(CFLAGS) $(CPPFLAGS) -c $<
.f90.o:
$(F9X) $(FFLAGS) $(FSEARCH_DIRS) -c $<
.f90.lo:
@$(LT_FCOMPILE) $(FFLAGS) $(FSEARCH_DIRS) -c $<
##-----------------------------------------------------------------------------
## The following section of this makefile contains dependencies between the
## source files and the header files.
##-----------------------------------------------------------------------------
.PHONY: dep depend
dep depend: $(srcdir)/Dependencies
@DEPEND@