diff --git a/configure.ac b/configure.ac index 3b5d4893f8bad38cb4a98d64ce53c45caa49d09f..1a91b861723002a38fd2d47336bad1c13dbf06d9 100644 --- a/configure.ac +++ b/configure.ac @@ -407,13 +407,47 @@ AC_HEADER_STDC # Check for the libraries we will need. AC_CHECK_LIB(m,sqrt,,AC_MSG_ERROR(something is wrong with the math library!)) -# Check for GSL +# Check for GSL. We test for this in the standard directories by default, +# and only disable if using --with-gsl=no or --without-gsl. When a value +# is given GSL must be found. have_gsl="no" -AC_CHECK_LIB([gslcblas], [cblas_dgemm]) -AC_CHECK_LIB([gsl], [gsl_integration_qag]) -if test "x$ac_cv_lib_gslcblas_cblas_dgemm" = "xyes"; then - have_gsl="yes" +AC_ARG_WITH([gsl], + [AS_HELP_STRING([--with-gsl=PATH], + [root directory where GSL is installed @<:@yes/no@:>@] + )], + [with_gsl="$withval"], + [with_gsl="test"] +) +if test "x$with_gsl" != "xno"; then + if test "x$with_gsl" != "xyes" -a "x$with_gsl" != "xtest" -a "x$with_gsl" != "x"; then + GSL_LIBS="-L$with_gsl/lib -lgsl -lgslcblas" + GSL_INCS="-I$with_gsl/include" + else + GSL_LIBS="-lgsl -lgslcblas" + GSL_INCS="" + fi + # GSL is not specified, so just check if we have it. + if test "x$with_gsl" = "xtest"; then + AC_CHECK_LIB([gslcblas],[cblas_dgemm], [have_gsl="yes"], [have_gsl="no"], $GSL_LIBS) + if test "x$have_gsl" != "xno"; then + AC_DEFINE([HAVE_LIBGSLCBLAS],1,[The GSL CBLAS library appears to be present.]), + AC_CHECK_LIB([gsl],[gsl_integration_qag], + AC_DEFINE([HAVE_LIBGSL],1,[The GSL library appears to be present.]), + [have_gsl="no"], $GSL_LIBS) + fi + else + AC_CHECK_LIB([gslcblas],[cblas_dgemm], + AC_DEFINE([HAVE_LIBGSLCBLAS],1,[The GSL CBLAS library appears to be present.]), + AC_MSG_ERROR(something is wrong with the GSL CBLAS library!), $GSL_LIBS) + AC_CHECK_LIB([gsl],[gsl_integration_qag], + AC_DEFINE([HAVE_LIBGSL],1,[The GSL library appears to be present.]), + AC_MSG_ERROR(something is wrong with the GSL library!), $GSL_LIBS) + have_gsl="yes" + fi fi +AC_SUBST([GSL_LIBS]) +AC_SUBST([GSL_INCS]) +AM_CONDITIONAL([HAVEGSL],[test -n "$GSL_LIBS"]) # Check for pthreads. AX_PTHREAD([LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" @@ -445,7 +479,7 @@ AC_ARG_WITH([metis], [AS_HELP_STRING([--with-metis=PATH], [root directory where metis is installed @<:@yes/no@:>@] )], - [], + [with_metis="$withval"], [with_metis="no"] ) if test "x$with_metis" != "xno"; then @@ -473,13 +507,13 @@ AH_VERBATIM([__STDC_FORMAT_MACROS], #define __STDC_FORMAT_MACROS 1 #endif]) -# Check for grackle. +# Check for grackle. have_grackle="no" AC_ARG_WITH([grackle], [AS_HELP_STRING([--with-grackle=PATH], [root directory where grackle is installed @<:@yes/no@:>@] )], - [], + [with_grackle="$withval"], [with_grackle="no"] ) if test "x$with_grackle" != "xno"; then @@ -492,9 +526,9 @@ if test "x$with_grackle" != "xno"; then GRACKLE_LIBS="-lgrackle" GRACKLE_INCS="" fi - + have_grackle="yes" - + AC_CHECK_LIB( [grackle], [initialize_chemistry_data], @@ -753,22 +787,22 @@ AC_ARG_WITH([hydro], case "$with_hydro" in gadget2) AC_DEFINE([GADGET2_SPH], [1], [Gadget-2 SPH]) - ;; + ;; minimal) AC_DEFINE([MINIMAL_SPH], [1], [Minimal SPH]) - ;; + ;; hopkins) AC_DEFINE([HOPKINS_PE_SPH], [1], [Pressure-Entropy SPH]) - ;; + ;; default) AC_DEFINE([DEFAULT_SPH], [1], [Default SPH]) - ;; + ;; gizmo) AC_DEFINE([GIZMO_SPH], [1], [GIZMO SPH]) - ;; + ;; shadowfax) AC_DEFINE([SHADOWFAX_SPH], [1], [Shadowfax SPH]) - ;; + ;; *) AC_MSG_ERROR([Unknown hydrodynamics scheme: $with_hydro]) @@ -793,7 +827,7 @@ if test "$enable_debug_interactions" != "no"; then AC_DEFINE_UNQUOTED([MAX_NUM_OF_NEIGHBOURS], [$enableval] ,[The maximum number of particle neighbours to be logged]) [enable_debug_interactions="yes (Logging up to $enableval neighbours)"] fi - else + else [enable_debug_interactions="no (only available for gadget2 hydro scheme)"] fi fi @@ -809,22 +843,22 @@ AC_ARG_WITH([kernel], case "$with_kernel" in cubic-spline) AC_DEFINE([CUBIC_SPLINE_KERNEL], [1], [Cubic spline kernel]) - ;; + ;; quartic-spline) AC_DEFINE([QUARTIC_SPLINE_KERNEL], [1], [Quartic spline kernel]) - ;; + ;; quintic-spline) AC_DEFINE([QUINTIC_SPLINE_KERNEL], [1], [Quintic spline kernel]) - ;; + ;; wendland-C2) AC_DEFINE([WENDLAND_C2_KERNEL], [1], [Wendland-C2 kernel]) - ;; + ;; wendland-C4) AC_DEFINE([WENDLAND_C4_KERNEL], [1], [Wendland-C4 kernel]) - ;; + ;; wendland-C6) AC_DEFINE([WENDLAND_C6_KERNEL], [1], [Wendland-C6 kernel]) - ;; + ;; *) AC_MSG_ERROR([Unknown kernel function: $with_kernel]) ;; @@ -841,13 +875,13 @@ AC_ARG_WITH([hydro-dimension], case "$with_dimension" in 1) AC_DEFINE([HYDRO_DIMENSION_1D], [1], [1D solver]) - ;; + ;; 2) AC_DEFINE([HYDRO_DIMENSION_2D], [2], [2D solver]) - ;; + ;; 3) AC_DEFINE([HYDRO_DIMENSION_3D], [3], [3D solver]) - ;; + ;; *) AC_MSG_ERROR([Dimensionality must be 1, 2 or 3]) ;; @@ -864,10 +898,10 @@ AC_ARG_WITH([equation-of-state], case "$with_eos" in ideal-gas) AC_DEFINE([EOS_IDEAL_GAS], [1], [Ideal gas equation of state]) - ;; + ;; isothermal-gas) AC_DEFINE([EOS_ISOTHERMAL_GAS], [1], [Isothermal gas equation of state]) - ;; + ;; *) AC_MSG_ERROR([Unknown equation of state: $with_eos]) ;; @@ -884,16 +918,16 @@ AC_ARG_WITH([adiabatic-index], case "$with_gamma" in 5/3) AC_DEFINE([HYDRO_GAMMA_5_3], [5./3.], [Adiabatic index is 5/3]) - ;; + ;; 7/5) AC_DEFINE([HYDRO_GAMMA_7_5], [7./5.], [Adiabatic index is 7/5]) - ;; + ;; 4/3) AC_DEFINE([HYDRO_GAMMA_4_3], [4./3.], [Adiabatic index is 4/3]) - ;; + ;; 2) AC_DEFINE([HYDRO_GAMMA_2_1], [2.], [Adiabatic index is 2]) - ;; + ;; *) AC_MSG_ERROR([Unknown adiabatic index: $with_gamma]) ;; @@ -910,16 +944,16 @@ AC_ARG_WITH([riemann-solver], case "$with_riemann" in none) AC_DEFINE([RIEMANN_SOLVER_NONE], [1], [No Riemann solver]) - ;; + ;; exact) AC_DEFINE([RIEMANN_SOLVER_EXACT], [1], [Exact Riemann solver]) - ;; + ;; trrs) AC_DEFINE([RIEMANN_SOLVER_TRRS], [1], [Two Rarefaction Riemann Solver]) - ;; + ;; hllc) AC_DEFINE([RIEMANN_SOLVER_HLLC], [1], [Harten-Lax-van Leer-Contact Riemann solver]) - ;; + ;; *) AC_MSG_ERROR([Unknown Riemann solver: $with_riemann]) ;; @@ -936,19 +970,19 @@ AC_ARG_WITH([cooling], case "$with_cooling" in none) AC_DEFINE([COOLING_NONE], [1], [No cooling function]) - ;; + ;; const-du) AC_DEFINE([COOLING_CONST_DU], [1], [Const du/dt cooling function]) - ;; + ;; const-lambda) AC_DEFINE([COOLING_CONST_LAMBDA], [1], [Const Lambda cooling function]) - ;; + ;; grackle) AC_DEFINE([COOLING_GRACKLE], [1], [Cooling via the grackle library]) - ;; + ;; EAGLE) AC_DEFINE([COOLING_EAGLE], [1], [Cooling following the EAGLE model]) - ;; + ;; *) AC_MSG_ERROR([Unknown cooling function: $with_cooling]) ;; @@ -965,13 +999,13 @@ AC_ARG_WITH([chemistry], case "$with_chemistry" in none) AC_DEFINE([CHEMISTRY_NONE], [1], [No chemistry function]) - ;; + ;; gear) AC_DEFINE([CHEMISTRY_GEAR], [1], [Chemistry taken from the GEAR model]) - ;; + ;; EAGLE) AC_DEFINE([CHEMISTRY_EAGLE], [1], [Chemistry taken from the EAGLE model]) - ;; + ;; *) AC_MSG_ERROR([Unknown chemistry function: $with_chemistry]) ;; @@ -988,25 +1022,25 @@ AC_ARG_WITH([ext-potential], case "$with_potential" in none) AC_DEFINE([EXTERNAL_POTENTIAL_NONE], [1], [No external potential]) - ;; + ;; point-mass) AC_DEFINE([EXTERNAL_POTENTIAL_POINTMASS], [1], [Point-mass external potential]) - ;; + ;; isothermal) AC_DEFINE([EXTERNAL_POTENTIAL_ISOTHERMAL], [1], [Isothermal external potential]) - ;; + ;; disc-patch) AC_DEFINE([EXTERNAL_POTENTIAL_DISC_PATCH], [1], [Disc-patch external potential]) - ;; + ;; sine-wave) AC_DEFINE([EXTERNAL_POTENTIAL_SINE_WAVE], [1], [Sine wave external potential in 1D]) - ;; + ;; point-mass-ring) AC_DEFINE([EXTERNAL_POTENTIAL_POINTMASS_RING], [1], [Point mass potential for Keplerian Ring (Hopkins 2015).]) - ;; + ;; point-mass-softened) AC_DEFINE([EXTERNAL_POTENTIAL_POINTMASS_SOFT], [1], [Softened point-mass potential with form 1/(r^2 + softening^2).]) - ;; + ;; *) AC_MSG_ERROR([Unknown external potential: $with_potential]) ;; @@ -1054,7 +1088,7 @@ touch src/version.c AC_OUTPUT # Report general configuration. -AC_MSG_RESULT([ +AC_MSG_RESULT([ ------- Summary -------- $PACKAGE_NAME v.$PACKAGE_VERSION @@ -1084,7 +1118,7 @@ AC_MSG_RESULT([ Riemann solver : $with_riemann Cooling function : $with_cooling Chemistry : $with_chemistry - + External potential : $with_potential Multipole order : $with_multipole_order No gravity below ID : $no_gravity_below_id diff --git a/examples/Makefile.am b/examples/Makefile.am index bddb32943781e9326e05cc5c55a87086fc96cf02..a589b184350b9fddc7028d60709f18c2003a2bea 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -19,12 +19,12 @@ MYFLAGS = # Add the source directory and debug to CFLAGS -AM_CFLAGS = -I$(top_srcdir)/src $(HDF5_CPPFLAGS) +AM_CFLAGS = -I$(top_srcdir)/src $(HDF5_CPPFLAGS) $(GSL_INCS) AM_LDFLAGS = $(HDF5_LDFLAGS) # Extra libraries. -EXTRA_LIBS = $(HDF5_LIBS) $(FFTW_LIBS) $(PROFILER_LIBS) $(TCMALLOC_LIBS) $(JEMALLOC_LIBS) $(GRACKLE_LIBS) +EXTRA_LIBS = $(HDF5_LIBS) $(FFTW_LIBS) $(PROFILER_LIBS) $(TCMALLOC_LIBS) $(JEMALLOC_LIBS) $(GRACKLE_LIBS) $(GSL_LIBS) # MPI libraries. MPI_LIBS = $(METIS_LIBS) $(MPI_THREAD_LIBS) diff --git a/src/Makefile.am b/src/Makefile.am index 0c8b53de3cca4ad4836834d13c9710ccce0cce00..6877cbe71f45d3efc5b77c72b70d8d0722bf3e13 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -16,7 +16,7 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # Add the debug flag to the whole thing -AM_CFLAGS = $(HDF5_CPPFLAGS) +AM_CFLAGS = $(HDF5_CPPFLAGS) $(GSL_INCS) # Assign a "safe" version number AM_LDFLAGS = $(HDF5_LDFLAGS) $(FFTW_LIBS) -version-info 0:0:0 @@ -25,7 +25,7 @@ AM_LDFLAGS = $(HDF5_LDFLAGS) $(FFTW_LIBS) -version-info 0:0:0 GIT_CMD = @GIT_CMD@ # Additional dependencies for shared libraries. -EXTRA_LIBS = $(HDF5_LIBS) $(PROFILER_LIBS) $(TCMALLOC_LIBS) $(JEMALLOC_LIBS) $(GRACKLE_LIB) +EXTRA_LIBS = $(HDF5_LIBS) $(PROFILER_LIBS) $(TCMALLOC_LIBS) $(JEMALLOC_LIBS) $(GRACKLE_LIB) $(GSL_LIBS) # MPI libraries. MPI_LIBS = $(METIS_LIBS) $(MPI_THREAD_LIBS)