summaryrefslogtreecommitdiffstats
path: root/config/apple
diff options
context:
space:
mode:
Diffstat (limited to 'config/apple')
-rw-r--r--config/apple121
1 files changed, 106 insertions, 15 deletions
diff --git a/config/apple b/config/apple
index a2d6ae4..a8a219b 100644
--- a/config/apple
+++ b/config/apple
@@ -1,17 +1,14 @@
# -*- shell-script -*-
#
# Copyright by The HDF Group.
-# Copyright by the Board of Trustees of the University of Illinois.
# All rights reserved.
#
# This file is part of HDF5. The full HDF5 copyright notice, including
# terms governing use, modification, and redistribution, is contained in
-# the files COPYING and Copyright.html. COPYING can be found at the root
-# of the source code distribution tree; Copyright.html can be found at the
-# root level of an installed copy of the electronic HDF5 document set and
-# is linked from the top-level documents page. It can also be found at
-# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have
-# access to either file, you may request a copy from help@hdfgroup.org.
+# the COPYING file, which can be found at the root of the source code
+# distribution tree, or in https://www.hdfgroup.org/licenses.
+# If you do not have access to either file, you may request a copy from
+# help@hdfgroup.org.
# This file is part of the HDF5 build script. It is processed shortly
@@ -20,16 +17,62 @@
#
# See BlankForm in this directory for details.
-# The default compiler is `gcc'
+# The default compiler is `clang'.
+# No support for OS older than darwin 10.X.
if test "X-" = "X-$CC"; then
- CC=gcc
- CC_BASENAME=gcc
+ case "$host_os" in
+ darwin10.*) # Snow Leopard. Use gcc/g++ because clang++ is not available.
+ CC=gcc
+ CC_BASENAME=gcc
+ ;;
+ *)
+ if test "X-$enable_parallel" = "X-yes"; then
+ # default to use mpicc which is the defacto MPI compiler name
+ CC=mpicc
+ CC_BASENAME=mpicc
+ else
+ CC=clang
+ CC_BASENAME=clang
+ fi
+
+ # Production
+ PROD_CFLAGS="-O3"
+ PROD_CPPFLAGS=
+
+ # Debug
+ DEBUG_CFLAGS="-g -O0"
+ DEBUG_CPPFLAGS=
+
+ # Profile
+ # Use this for profiling with gprof
+ # Just "-g" for now. More later.
+ PROFILE_CFLAGS="-g"
+ PROFILE_CPPFLAGS=
+ ;;
+ esac
fi
-# Figure out compiler flags
+# Figure out C compiler flags
. $srcdir/config/gnu-flags
-
+. $srcdir/config/clang-flags
. $srcdir/config/intel-flags
+
+# temp patch: if GCC 4.2.1 is used in Lion or Mountain Lion systems, do not
+# use -O option as it causes failures in test/dt_arith.
+case "$host_os" in
+ darwin1[12].*) # lion & mountain lion
+ #echo cc_vendor=$cc_vendor'-'cc_version=$cc_version
+ case "$cc_vendor-$cc_version" in
+ gcc-4.2.1)
+ # Remove any -O flags
+ #echo PROD_CFLAGS=$PROD_CFLAGS
+ PROD_CFLAGS="`echo $PROD_CFLAGS | sed -e 's/-O[0-3]*//'`"
+ #echo new PROD_CFLAGS=$PROD_CFLAGS
+ ;;
+ esac
+ ;;
+esac
+
if test "X-" = "X-$FC"; then
case $CC_BASENAME in
gcc*)
@@ -40,15 +83,57 @@ if test "X-" = "X-$FC"; then
FC=ifort
FC_BASENAME=ifort
;;
+ mpicc*)
+ FC=mpif90
+ FC_BASENAME=mpif90
+ ;;
+ clang)
+ # clang has no fortran compiler. Use gfortran.
+ FC=gfortran
+ FC_BASENAME=gfortran
+ ;;
esac
fi
-# Figure out compiler flags
+
+# Figure out FORTRAN compiler flags
. $srcdir/config/gnu-fflags
-
. $srcdir/config/intel-fflags
+
+# The default C++ compiler is `clang++'.
+if test "X-" = "X-$CXX"; then
+ case $CC_BASENAME in
+ gcc)
+ CXX=g++
+ CXX_BASENAME=g++
+ ;;
+ icc)
+ CXX=icpc
+ CXX_BASENAME=icpc
+ ;;
+ mpicc*)
+ FC=mpif90
+ FC_BASENAME=mpif90
+ ;;
+ clang)
+ CXX=clang++
+ CXX_BASENAME=clang++
+ ;;
+ esac
+fi
+
+# Figure out C++ compiler flags
+. $srcdir/config/intel-cxxflags # Do this ahead of GNU to avoid icpc being detected as g++
+. $srcdir/config/gnu-cxxflags
+. $srcdir/config/clang-cxxflags
+
# compiler version strings
case $CC in
+ clang)
+ cc_version_info=`$CC $CFLAGS $H5_CFLAGS --version 2>&1 |\
+ grep 'Apple' | sed 's/(.*//'`
+ ;;
+
*gcc*)
cc_version_info=`$CC $CFLAGS $H5_CFLAGS --version 2>&1 | grep -v 'PathScale' |\
grep 'GCC' | sed 's/.*\((GCC) [-a-z0-9\. ]*.*\)/\1/'`
@@ -64,6 +149,7 @@ case $CC in
;;
esac
+# Figure out Fortran compiler flags and version strings
case $FC in
*gfortran*)
fc_version_info=`$FC $FCFLAGS $H5_FCFLAGS --version 2>&1 |\
@@ -76,13 +162,18 @@ case $FC in
;;
*)
- echo "No match to get fc_version_info for $FC"
+ echo "No match to get fc_version_info and flags for $FC"
;;
esac
# get c++ version info
case $CXX in
+ clang++)
+ cxx_version_info=`$CXX $CXXFLAGS $H5_CXXFLAGS --version 2>&1 |\
+ grep 'Apple' | sed 's/(.*//'`
+ ;;
+
*g++*)
cxx_version_info=`$CXX $CXXFLAGS $H5_CXXFLAGS --version 2>&1 |\
grep 'GCC' | sed 's/.*\((GCC) [-a-z0-9\. ]*.*\)/\1/'`