summaryrefslogtreecommitdiffstats
path: root/c++
diff options
context:
space:
mode:
authorMike McGreevy <mamcgree@hdfgroup.org>2011-04-14 21:21:59 (GMT)
committerMike McGreevy <mamcgree@hdfgroup.org>2011-04-14 21:21:59 (GMT)
commit98362b664c5299950edaa85448b219b372106b0b (patch)
treea5d95898916b57abc11b6dab2e53683be55ca31a /c++
parenta45c7424b2d849c8876d4681d0815367f6e5c7f6 (diff)
downloadhdf5-98362b664c5299950edaa85448b219b372106b0b.zip
hdf5-98362b664c5299950edaa85448b219b372106b0b.tar.gz
hdf5-98362b664c5299950edaa85448b219b372106b0b.tar.bz2
[svn-r20504] Purpose:
General shared library improvements for CYGWIN / AIX Description: Shared libraries are disabled on both CYGWIN and AIX due to inability to build them correctly. Part of the problem in both of these situations is the lack of the libtool flag -no-undefined, which tells libtool that all needed symbols are defined at link time (a requirement on these systems) and that it's okay to build shared libraries. Another problem are lack of dependencies between wrapper libraries and core C HDF5 library. This patch addresses both of these by fixing configure to add in -no-undefined flag for libtool during linking and adds automake dependencies in the Makefile.am files. After testing, both CYGWIN and AIX now generate shared libraries, but there are still some test failures in each. (cache_api, dt_arith, and testerror.sh on CYGWIN, and fortran tests on AIX). Even though the shared libraries are not quite perfect, this is a general improvement to what we had before, so I'm applying the patch anyways. Note that default behavior of shared libraries on these systems being disabled has NOT been changed and requires the use of the --enable-unsupported to attempt to build them. We will need to address the test failures in each architecture prior to formally supporting shared libraries on each. Tested: h5committested & CYGWIN tested (on bangan) (AIX tested by Albert on bp-login2)
Diffstat (limited to 'c++')
-rw-r--r--c++/Makefile.in5
-rw-r--r--c++/examples/Makefile.in5
-rw-r--r--c++/src/Makefile.am3
-rw-r--r--c++/src/Makefile.in10
-rw-r--r--c++/test/Makefile.in5
5 files changed, 23 insertions, 5 deletions
diff --git a/c++/Makefile.in b/c++/Makefile.in
index 503fe96..93d29d9 100644
--- a/c++/Makefile.in
+++ b/c++/Makefile.in
@@ -121,14 +121,16 @@ AMTAR = @AMTAR@
# but which should not be exported to h5cc for building other programs.
# AM_CFLAGS is an automake construct which should be used by Makefiles
# instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
+# This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
-AM_LDFLAGS = @AM_LDFLAGS@
+AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
AM_MAKEFLAGS = @AM_MAKEFLAGS@
AR = @AR@
+AS = @AS@
# Set the paths for AFS installs of autotools for Linux machines
# Ideally, these tools should never be needed during the build.
@@ -191,6 +193,7 @@ H5_CXXFLAGS = @H5_CXXFLAGS@
H5_CXX_SHARED = @H5_CXX_SHARED@
H5_FCFLAGS = @H5_FCFLAGS@
H5_FORTRAN_SHARED = @H5_FORTRAN_SHARED@
+H5_LDFLAGS = @H5_LDFLAGS@
H5_LONE_COLON = @H5_LONE_COLON@
H5_VERSION = @H5_VERSION@
HADDR_T = @HADDR_T@
diff --git a/c++/examples/Makefile.in b/c++/examples/Makefile.in
index efd7b8c..08ff8f1 100644
--- a/c++/examples/Makefile.in
+++ b/c++/examples/Makefile.in
@@ -88,14 +88,16 @@ AMTAR = @AMTAR@
# but which should not be exported to h5cc for building other programs.
# AM_CFLAGS is an automake construct which should be used by Makefiles
# instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
+# This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
-AM_LDFLAGS = @AM_LDFLAGS@
+AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
AM_MAKEFLAGS = @AM_MAKEFLAGS@
AR = @AR@
+AS = @AS@
# Set the paths for AFS installs of autotools for Linux machines
# Ideally, these tools should never be needed during the build.
@@ -158,6 +160,7 @@ H5_CXXFLAGS = @H5_CXXFLAGS@
H5_CXX_SHARED = @H5_CXX_SHARED@
H5_FCFLAGS = @H5_FCFLAGS@
H5_FORTRAN_SHARED = @H5_FORTRAN_SHARED@
+H5_LDFLAGS = @H5_LDFLAGS@
H5_LONE_COLON = @H5_LONE_COLON@
H5_VERSION = @H5_VERSION@
HADDR_T = @HADDR_T@
diff --git a/c++/src/Makefile.am b/c++/src/Makefile.am
index 5cde27b..6278fa0 100644
--- a/c++/src/Makefile.am
+++ b/c++/src/Makefile.am
@@ -47,6 +47,9 @@ libhdf5_cpp_la_SOURCES=H5Exception.cpp H5IdComponent.cpp H5Library.cpp \
H5ArrayType.cpp H5VarLenType.cpp H5CompType.cpp H5DataSet.cpp \
H5CommonFG.cpp H5Group.cpp H5File.cpp
+# HDF5 C++ library depends on HDF5 Library.
+libhdf5_cpp_la_LIBADD=$(LIBHDF5)
+
# Public headers
include_HEADERS=H5Cpp.h H5AbstractDs.h H5AtomType.h H5Attribute.h H5Classes.h \
H5CommonFG.h H5CompType.h H5DataSet.h H5DataSpace.h H5DataType.h \
diff --git a/c++/src/Makefile.in b/c++/src/Makefile.in
index 8a8ad25..72f1695 100644
--- a/c++/src/Makefile.in
+++ b/c++/src/Makefile.in
@@ -95,7 +95,7 @@ am__base_list = \
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
"$(DESTDIR)$(includedir)"
LTLIBRARIES = $(lib_LTLIBRARIES)
-libhdf5_cpp_la_LIBADD =
+libhdf5_cpp_la_DEPENDENCIES = $(LIBHDF5)
am_libhdf5_cpp_la_OBJECTS = H5Exception.lo H5IdComponent.lo \
H5Library.lo H5Attribute.lo H5Object.lo H5PropList.lo \
H5FaccProp.lo H5FcreatProp.lo H5DcreatProp.lo H5DxferProp.lo \
@@ -154,14 +154,16 @@ AMTAR = @AMTAR@
# but which should not be exported to h5cc for building other programs.
# AM_CFLAGS is an automake construct which should be used by Makefiles
# instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
+# This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
-AM_LDFLAGS = @AM_LDFLAGS@ $(am__append_1)
+AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ $(am__append_1)
AM_MAKEFLAGS = @AM_MAKEFLAGS@
AR = @AR@
+AS = @AS@
# Set the paths for AFS installs of autotools for Linux machines
# Ideally, these tools should never be needed during the build.
@@ -224,6 +226,7 @@ H5_CXXFLAGS = @H5_CXXFLAGS@
H5_CXX_SHARED = @H5_CXX_SHARED@
H5_FCFLAGS = @H5_FCFLAGS@
H5_FORTRAN_SHARED = @H5_FORTRAN_SHARED@
+H5_LDFLAGS = @H5_LDFLAGS@
H5_LONE_COLON = @H5_LONE_COLON@
H5_VERSION = @H5_VERSION@
HADDR_T = @HADDR_T@
@@ -448,6 +451,9 @@ libhdf5_cpp_la_SOURCES = H5Exception.cpp H5IdComponent.cpp H5Library.cpp
H5CommonFG.cpp H5Group.cpp H5File.cpp
+# HDF5 C++ library depends on HDF5 Library.
+libhdf5_cpp_la_LIBADD = $(LIBHDF5)
+
# Public headers
include_HEADERS = H5Cpp.h H5AbstractDs.h H5AtomType.h H5Attribute.h H5Classes.h \
H5CommonFG.h H5CompType.h H5DataSet.h H5DataSpace.h H5DataType.h \
diff --git a/c++/test/Makefile.in b/c++/test/Makefile.in
index 5761842..096e33a 100644
--- a/c++/test/Makefile.in
+++ b/c++/test/Makefile.in
@@ -120,14 +120,16 @@ AMTAR = @AMTAR@
# but which should not be exported to h5cc for building other programs.
# AM_CFLAGS is an automake construct which should be used by Makefiles
# instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
+# This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@
AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
-AM_LDFLAGS = @AM_LDFLAGS@ $(am__append_1)
+AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ $(am__append_1)
AM_MAKEFLAGS = @AM_MAKEFLAGS@
AR = @AR@
+AS = @AS@
# Set the paths for AFS installs of autotools for Linux machines
# Ideally, these tools should never be needed during the build.
@@ -190,6 +192,7 @@ H5_CXXFLAGS = @H5_CXXFLAGS@
H5_CXX_SHARED = @H5_CXX_SHARED@
H5_FCFLAGS = @H5_FCFLAGS@
H5_FORTRAN_SHARED = @H5_FORTRAN_SHARED@
+H5_LDFLAGS = @H5_LDFLAGS@
H5_LONE_COLON = @H5_LONE_COLON@
H5_VERSION = @H5_VERSION@
HADDR_T = @HADDR_T@