Skip to content

Commit 3ec16a0

Browse files
committed
Rewrite HDF5 detection logic to work with newer versions
1 parent f3149e6 commit 3ec16a0

25 files changed

Lines changed: 13361 additions & 2681 deletions

src/amuse_etics/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ support/config.mk:
1111
# Building the code into a static library
1212
DEPFLAGS += $(CUDA_FLAGS)
1313
CXXFLAGS += $(DEPFLAGS) -Wall
14-
LDFLAGS += $(CUDA_LDFLAGS)
15-
LDLIBS += -lcudart
14+
LDFLAGS += $(CUDA_LDFLAGS) $(HDF5_LDFLAGS)
15+
LDLIBS += -lcudart -lhdf5_cpp -lhdf5
1616

1717
CODELIB = src/libetics.a
1818

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
c++ mpi cuda hdf5
1+
c++ mpi cuda hdf5-cxx

src/amuse_etics/src/Makefile.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ scf-optimize-lc: mathaux.o scf.o scf-optimize-lc.o ic.o
5858

5959
# only io.cpp should be compiled with all the weird HDF5 flags
6060
io.o: io.cpp
61-
$(CXX) $(CPPFLAGS) -I@HDF5_ROOT@/include $(CXXFLAGS) -c -o io.o io.cpp
61+
$(CXX) $(CPPFLAGS) $(HDF5_CXXFLAGS) $(CXXFLAGS) -c -o io.o io.cpp
6262

6363
.cu.o: $<
6464
$(NVCC) $(CUDAFLAGS) $(CPPFLAGS) -Xcompiler "$(CXXFLAGS)" -dc -o $@ $<
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../support/shared/m4/amuse_lib_hdf5.m4

src/amuse_etics/src/configure

Lines changed: 10 additions & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -652,11 +652,11 @@ ac_header_cxx_list=
652652
ac_subst_vars='LTLIBOBJS
653653
LIBOBJS
654654
BOOSTINC
655-
HDF5_ROOT
655+
HDF5_LDFLAGS
656+
HDF5_CXXFLAGS
656657
STATICLIBS
657658
GPU_ARCH
658659
CUDA_ROOT
659-
H5CXX
660660
MPICXX
661661
ac_ct_CC
662662
CFLAGS
@@ -3053,11 +3053,11 @@ if test x$ac_prog_cxx_stdcxx = xno
30533053
then :
30543054
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5
30553055
printf %s "checking for $CXX option to enable C++11 features... " >&6; }
3056-
if test ${ac_cv_prog_cxx_11+y}
3056+
if test ${ac_cv_prog_cxx_cxx11+y}
30573057
then :
30583058
printf %s "(cached) " >&6
30593059
else $as_nop
3060-
ac_cv_prog_cxx_11=no
3060+
ac_cv_prog_cxx_cxx11=no
30613061
ac_save_CXX=$CXX
30623062
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
30633063
/* end confdefs.h. */
@@ -3099,11 +3099,11 @@ if test x$ac_prog_cxx_stdcxx = xno
30993099
then :
31003100
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5
31013101
printf %s "checking for $CXX option to enable C++98 features... " >&6; }
3102-
if test ${ac_cv_prog_cxx_98+y}
3102+
if test ${ac_cv_prog_cxx_cxx98+y}
31033103
then :
31043104
printf %s "(cached) " >&6
31053105
else $as_nop
3106-
ac_cv_prog_cxx_98=no
3106+
ac_cv_prog_cxx_cxx98=no
31073107
ac_save_CXX=$CXX
31083108
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
31093109
/* end confdefs.h. */
@@ -4499,138 +4499,14 @@ fi
44994499

45004500
fi
45014501

4502-
if test -z $HDF5_ROOT
4503-
then :
4502+
AMUSE_LIB_HDF5()
45044503

4505-
# Extract the first word of "h5c++", so it can be a program name with args.
4506-
set dummy h5c++; ac_word=$2
4507-
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4508-
printf %s "checking for $ac_word... " >&6; }
4509-
if test ${ac_cv_prog_H5CXX+y}
4504+
if test "$HDF5_CXX_FOUND" == "no"
45104505
then :
4511-
printf %s "(cached) " >&6
4512-
else $as_nop
4513-
if test -n "$H5CXX"; then
4514-
ac_cv_prog_H5CXX="$H5CXX" # Let the user override the test.
4515-
else
4516-
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4517-
for as_dir in $PATH
4518-
do
4519-
IFS=$as_save_IFS
4520-
case $as_dir in #(((
4521-
'') as_dir=./ ;;
4522-
*/) ;;
4523-
*) as_dir=$as_dir/ ;;
4524-
esac
4525-
for ac_exec_ext in '' $ac_executable_extensions; do
4526-
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
4527-
ac_cv_prog_H5CXX="h5c++"
4528-
printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
4529-
break 2
4530-
fi
4531-
done
4532-
done
4533-
IFS=$as_save_IFS
4534-
4535-
test -z "$ac_cv_prog_H5CXX" && ac_cv_prog_H5CXX="no"
4536-
fi
4537-
fi
4538-
H5CXX=$ac_cv_prog_H5CXX
4539-
if test -n "$H5CXX"; then
4540-
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $H5CXX" >&5
4541-
printf "%s\n" "$H5CXX" >&6; }
4542-
else
4543-
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
4544-
printf "%s\n" "no" >&6; }
4506+
as_fn_error $? "Could not find HDF5 library with C++ support" "$LINENO" 5
45454507
fi
45464508

45474509

4548-
if test "$H5CXX" == "no"
4549-
then :
4550-
as_fn_error $? "This package needs HDF5 (not really but this configure script does)" "$LINENO" 5
4551-
fi
4552-
HDF5_ROOT=`which h5c++ | sed 's:/bin/h5c++$::'`
4553-
4554-
else $as_nop
4555-
4556-
# Extract the first word of "h5c++", so it can be a program name with args.
4557-
set dummy h5c++; ac_word=$2
4558-
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4559-
printf %s "checking for $ac_word... " >&6; }
4560-
if test ${ac_cv_prog_H5CXX+y}
4561-
then :
4562-
printf %s "(cached) " >&6
4563-
else $as_nop
4564-
if test -n "$H5CXX"; then
4565-
ac_cv_prog_H5CXX="$H5CXX" # Let the user override the test.
4566-
else
4567-
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4568-
for as_dir in $HDF5_ROOT/bin
4569-
do
4570-
IFS=$as_save_IFS
4571-
case $as_dir in #(((
4572-
'') as_dir=./ ;;
4573-
*/) ;;
4574-
*) as_dir=$as_dir/ ;;
4575-
esac
4576-
for ac_exec_ext in '' $ac_executable_extensions; do
4577-
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
4578-
ac_cv_prog_H5CXX="$HDF5_ROOT/bin/h5c++"
4579-
printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
4580-
break 2
4581-
fi
4582-
done
4583-
done
4584-
IFS=$as_save_IFS
4585-
4586-
test -z "$ac_cv_prog_H5CXX" && ac_cv_prog_H5CXX="no"
4587-
fi
4588-
fi
4589-
H5CXX=$ac_cv_prog_H5CXX
4590-
if test -n "$H5CXX"; then
4591-
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $H5CXX" >&5
4592-
printf "%s\n" "$H5CXX" >&6; }
4593-
else
4594-
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
4595-
printf "%s\n" "no" >&6; }
4596-
fi
4597-
4598-
4599-
if test "$H5CXX" == "no"
4600-
then :
4601-
as_fn_error $? "Cound not find HDF5 compiler in $HDF5_ROOT/bin" "$LINENO" 5
4602-
fi
4603-
4604-
fi
4605-
4606-
4607-
# # Check HDF5
4608-
# AS_IF([test -z $HDF5_ROOT],
4609-
# [
4610-
# AC_CHECK_LIB([hdf5], [main], [],
4611-
# [
4612-
# AS_UNSET([ac_cv_lib_hdf5_main])
4613-
# AC_CHECK_PROG([HDF5CC], [h5cc], [h5cc], [:])
4614-
# AS_IF([test "$HDF5CC" == :], [AC_MSG_ERROR([This package needs HDF5])],
4615-
# [
4616-
# AC_PROG_SED
4617-
# AC_MSG_NOTICE([H5CC executable found, trying to find library nearby])
4618-
# HDF5_ROOT=`which h5cc | sed 's:/bin/h5cc$::'`
4619-
# AC_MSG_NOTICE([XXXXX $HDF5_ROOT])
4620-
# # AX_LDFLAGS_PUSH([dgsfgdfgd /home/ymeiron/local/lib/libhdf5.a])
4621-
# # AC_CHECK_LIB([hdf5], [main], [], [AC_MSG_ERROR([This package needs HDF5])])
4622-
# # AX_LDFLAGS_POP
4623-
# ])
4624-
# ])
4625-
# ],
4626-
# [
4627-
# AX_LDFLAGS_PUSH([-L$HDF5_ROOT/lib])
4628-
# AC_CHECK_LIB([hdf5], [main], [], [AC_MSG_ERROR([No compatible HDF5 library was found in $HDF5_ROOT/lib])])
4629-
# AX_LDFLAGS_POP
4630-
# ])
4631-
4632-
4633-
46344510
H5CXX_SHOW=`h5c++ -show`
46354511
MPICXX_SHOW=`mpic++ -show`
46364512

@@ -4788,6 +4664,7 @@ fi
47884664

47894665

47904666

4667+
47914668
ac_config_files="$ac_config_files Makefile"
47924669

47934670

src/amuse_etics/src/configure.ac

Lines changed: 4 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -130,43 +130,9 @@ AS_IF([test -z $MPI_ROOT],
130130
AS_IF([test "$MPICXX" == "no"], [AC_MSG_ERROR([Cound not find MPI compiler in $MPI_ROOT/bin])])
131131
])
132132

133-
AS_IF([test -z $HDF5_ROOT],
134-
[
135-
AC_CHECK_PROG([H5CXX], [h5c++], [h5c++], [no])
136-
AS_IF([test "$H5CXX" == "no"], [AC_MSG_ERROR([This package needs HDF5 (not really but this configure script does)])])
137-
HDF5_ROOT=`which h5c++ | sed 's:/bin/h5c++$::'`
138-
],
139-
[
140-
AC_CHECK_PROG([H5CXX], [h5c++], [$HDF5_ROOT/bin/h5c++], [no], [$HDF5_ROOT/bin])
141-
AS_IF([test "$H5CXX" == "no"], [AC_MSG_ERROR([Cound not find HDF5 compiler in $HDF5_ROOT/bin])])
142-
])
143-
144-
145-
# # Check HDF5
146-
# AS_IF([test -z $HDF5_ROOT],
147-
# [
148-
# AC_CHECK_LIB([hdf5], [main], [],
149-
# [
150-
# AS_UNSET([ac_cv_lib_hdf5_main])
151-
# AC_CHECK_PROG([HDF5CC], [h5cc], [h5cc], [:])
152-
# AS_IF([test "$HDF5CC" == :], [AC_MSG_ERROR([This package needs HDF5])],
153-
# [
154-
# AC_PROG_SED
155-
# AC_MSG_NOTICE([H5CC executable found, trying to find library nearby])
156-
# HDF5_ROOT=`which h5cc | sed 's:/bin/h5cc$::'`
157-
# AC_MSG_NOTICE([XXXXX $HDF5_ROOT])
158-
# # AX_LDFLAGS_PUSH([dgsfgdfgd /home/ymeiron/local/lib/libhdf5.a])
159-
# # AC_CHECK_LIB([hdf5], [main], [], [AC_MSG_ERROR([This package needs HDF5])])
160-
# # AX_LDFLAGS_POP
161-
# ])
162-
# ])
163-
# ],
164-
# [
165-
# AX_LDFLAGS_PUSH([-L$HDF5_ROOT/lib])
166-
# AC_CHECK_LIB([hdf5], [main], [], [AC_MSG_ERROR([No compatible HDF5 library was found in $HDF5_ROOT/lib])])
167-
# AX_LDFLAGS_POP
168-
# ])
133+
AMUSE_LIB_HDF5()
169134

135+
AS_IF([test "$HDF5_CXX_FOUND" == "no"], [AC_MSG_ERROR([Could not find HDF5 library with C++ support])])
170136

171137

172138
H5CXX_SHOW=`h5c++ -show`
@@ -246,7 +212,8 @@ AC_SUBST([CUDA_ROOT])
246212
AC_SUBST([NVCC])
247213
AC_SUBST([GPU_ARCH])
248214
AC_SUBST([STATICLIBS])
249-
AC_SUBST([HDF5_ROOT])
215+
AC_SUBST([HDF5_CXXFLAGS])
216+
AC_SUBST([HDF5_LDFLAGS])
250217
AC_SUBST([BOOSTINC])
251218
AC_CONFIG_FILES([Makefile])
252219

src/amuse_etics/support/aclocal.m4

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313

1414
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
1515
m4_include([shared/m4/amuse_cuda.m4])
16+
m4_include([shared/m4/amuse_lib_hdf5.m4])
1617
m4_include([shared/m4/amuse_log_envvars.m4])
1718
m4_include([shared/m4/amuse_venv.m4])
1819
m4_include([shared/m4/ax_count_cpus.m4])
19-
m4_include([shared/m4/ax_lib_hdf5.m4])
2020
m4_include([shared/m4/ax_mpi.m4])

src/amuse_etics/support/config.mk.in

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,6 @@ NVCC = @NVCC@
2222
CUDA_FLAGS = @CUDA_FLAGS@
2323
CUDA_LDFLAGS = @CUDA_LDFLAGS@
2424

25-
HDF5_VERSION = @HDF5_VERSION@
26-
HDF5_CFLAGS = @HDF5_CFLAGS@
27-
HDF5_CPPFLAGS = @HDF5_CPPFLAGS@
28-
HDF5_LIBS = @HDF5_LIBS@
29-
HDF5_FLIBS = @HDF5_FLIBS@
30-
25+
HDF5_CXXFLAGS = @HDF5_CXXFLAGS@
26+
HDF5_LDFLAGS = @HDF5_LDFLAGS@
3127

0 commit comments

Comments
 (0)