Skip to content
Snippets Groups Projects
Commit 3c634ebb authored by Thomas Jahns's avatar Thomas Jahns :cartwheel: Committed by Sergey Kosukhin
Browse files

Autotools files update.

parent b4ec77d3
No related branches found
No related tags found
No related merge requests found
Showing
with 478 additions and 195 deletions
......@@ -53,28 +53,7 @@ AC_PROG_INSTALL
AC_OPENMP
# Set up libtool.
AC_MSG_NOTICE([setting up libtool])
dnl before switching on libtool, identify compilers that prevent us from
dnl certain build configurations
ACX_LT_PROBLEMS
LT_INIT([pic-only])
dnl Clean up after Libtool checks:
rm -f a.out
dnl _KPSE_USE_LIBTOOL ensures libtool is also used for configure-time tests,
dnl which deduces dependent libraries automatically
_KPSE_USE_LIBTOOL
_KPSE_CHECK_LIBTOOL
AS_IF([test -n "$FC" && test "X$FC" != Xno],
[AC_LANG_PUSH([Fortran])
_KPSE_CHECK_LIBTOOL
AC_LANG_POP([Fortran])])
AS_IF([test -n "$F77" && test "X$F77" != Xno],
[AC_LANG_PUSH([Fortran 77])
_KPSE_CHECK_LIBTOOL
AC_LANG_POP([Fortran 77])])
AS_IF([test -n "$CXX" && test "X$CXX" != Xno],
[AC_LANG_PUSH([C++])
_KPSE_CHECK_LIBTOOL
AC_LANG_POP([C++])])
ACX_USE_LIBTOOL_CONFIGURATION([pic-only])
# -----------------------------------------------------------------------
# Check endianess of system
......@@ -190,46 +169,13 @@ enable_ppm=no
AS_IF([test x"$USE_MPI" = xyes],
[AC_DEFINE([USE_MPI],[1],[parallel I/O requested and available])
dnl test properties of MPI system
AC_PATH_PROGS([MPI_LAUNCH],[mpirun mpiexec],[true])
saved_CFLAGS=$CFLAGS
saved_FCFLAGS=$FCFLAGS
saved_LIBS=$LIBS
CFLAGS="$CFLAGS $MPI_C_INCLUDE"
FCFLAGS="$FCFLAGS $MPI_FC_INCLUDE"
LIBS="$LIBS $MPI_C_LIB"
AS_IF([test x"$cross_compiling" = xno],
[AC_MSG_CHECKING([if $MPI_LAUNCH works])
AC_LINK_IFELSE([AC_LANG_SOURCE([
@%:@include <stdio.h>
@%:@include <stdlib.h>
@%:@include <mpi.h>
@%:@define xmpi(ret) \\
do { \\
if (ret != MPI_SUCCESS) \\
exit(EXIT_FAILURE); \\
} while (0)
int
main(int argc, char **argv)
{
xmpi(MPI_Init(&argc, &argv));
char *numarg = argv@<:@1@:>@;
int cmdnum = atoi(numarg);
int procnum = 1;
xmpi(MPI_Allreduce(MPI_IN_PLACE, &procnum, 1, MPI_INT, MPI_SUM,
MPI_COMM_WORLD));
xmpi(MPI_Finalize());
return (procnum == cmdnum)?EXIT_SUCCESS:EXIT_FAILURE;
}
])],
[AS_IF([$MPI_LAUNCH -n 4 ./conftest$EXEEXT 4],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_MSG_FAILURE([mpirun doesn't work])])],
[AC_MSG_FAILURE([Cannot compile simple MPI program])])
])
AS_IF([test "x$MPI_LAUNCH" = xtrue],
[AC_MSG_WARN([MPI launch command unavailable])])
ACX_MPIRUN(,,[AC_MSG_WARN([MPI launch command unavailable])])
AH_TEMPLATE([YAXT_UID_DT],[Defined to MPI datatype to be used for Xt_uid])dnl
AC_CHECK_DECL([MPI_UINT64_T],
[AC_DEFINE([YAXT_UID_DT],[MPI_UINT64_T])],
......@@ -239,6 +185,7 @@ main(int argc, char **argv)
@%:@include <mpi.h>])],[AC_INCLUDES_DEFAULT
@%:@include <mpi.h>])
CFLAGS=$saved_CFLAGS
FCFLAGS=$saved_FCFLAGS
LIBS=$saved_LIBS
AC_ARG_VAR([YAXT_FC_LIB],[Flags needed to link YAXT for the Fortran API])
......@@ -393,10 +340,10 @@ AC_ARG_ENABLE([ruby],
[AS_HELP_STRING([--enable-ruby],[ruby language bindings [default=no] (EXPERIMENTAL)])],
[AC_CHECK_PROG([RUBY],[ruby],[ruby])
RUBY_INCLUDES="$($RUBY $srcdir/config/interface.rb)"
save_CPPFLAGS=$CPPFLAGS
saved_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $RUBY_INCLUDES"
AC_CHECK_HEADER([ruby.h],,[enable_ruby=no], [AC_INCLUDES_DEFAULT])
CPPFLAGS=$save_CPPFLAGS
CPPFLAGS=$saved_CPPFLAGS
AS_IF([test "x$RUBY" != "x"],
[AS_IF([test "x$SWIG" = "x"],
[AC_MSG_ERROR([Ruby bindings: Please enable SWIG with '--enable-swig'!])])],
......@@ -421,11 +368,11 @@ AC_ARG_ENABLE(python,
"-I`$PYTHON -c 'from distutils import sysconfig;print(sysconfig.get_python_inc())'`" \
"-I`$PYTHON -c 'from distutils import sysconfig;print(sysconfig.get_python_lib(1,1))' | $SED 's/lib/include/'`"
do
save_CPPFLAGS=$CPPFLAGS
saved_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
AC_CHECK_HEADER([Python.h],[enable_python=yes
break],,[AC_INCLUDES_DEFAULT])
CPPFLAGS=$save_CPPFLAGS
CPPFLAGS=$saved_CPPFLAGS
done
AS_IF([test "x$enable_python" != "xno"],
[AS_IF([test "x$SWIG" = "x"],
......
......@@ -44,7 +44,7 @@ AC_DEFUN([ACX_XLF_QEXTNAME_ADD_APPENDUS],
[AS_CASE([$host],
[*-ibm-aix*|powerpc64-*-linux-*|powerpc-*-linux-*],
[AC_MSG_CHECKING([if -Dappendus needs to be added to CPPFLAGS for cfortran.h])
AS_IF([$CC -qversion 2>&1 | grep '^IBM XL C' >/dev/null],
AS_IF([$CC -qversion 2>&1 | sed 5q | grep '^IBM XL C' >/dev/null],
[acx_temp_qextname_f77flags=`echo "$FFLAGS" | sed -n '/-qextname/{ s/^\(.* \)*-qextname\( .*\)*$/-qextname/;p;}'`
acx_temp_qextname_fcflags=`echo "$FCFLAGS" | sed -n '/-qextname/{ s/^\(.* \)*-qextname\( .*\)*$/-qextname/;p;}'`
dnl pretend the same option as for FC was used if F77 isn't used at all
......@@ -72,11 +72,11 @@ dnl automate flag elicitation for cfortran.h
AC_DEFUN([_ACX_FIND_CFORTRAN_DEF],
[AC_REQUIRE([AC_CANONICAL_HOST])
_AC_FORTRAN_ASSERT
AC_LANG_CASE([Fortran],[acx_FC=$FC],
[Fortran 77],[acx_FC=$F77])
AS_VAR_PUSHDEF([acx_FC],[AC_LANG_CASE([Fortran],[FC],[Fortran 77],[F77])])dnl
AS_VAR_PUSHDEF([acx_FCFLAGS],[AC_LANG_CASE([Fortran],[FCFLAGS],[Fortran 77],[FFLAGS])])dnl
AS_CASE([$host],
[x86_64-*-linux-*|i*86-*-linux-*|*-apple-darwin*|ia64-*-linux-*|x86_64-*-freebsd*|i*86-*-freebsd*],
[acx_temp=`$acx_FC -V 2>&1`
[acx_temp=`$acx_FC -V 2>&1 | sed 5q`
AS_IF([echo "$acx_temp" | grep '^Copyright.*\(The Portland Group\|NVIDIA CORPORATION\)' >/dev/null],
[AS_VAR_SET([acx_cf_flag],[-DgFortran])],
[echo "$acx_temp" | grep '^NAG Fortran Compiler Release' >/dev/null],
......@@ -85,24 +85,21 @@ AC_DEFUN([_ACX_FIND_CFORTRAN_DEF],
[AS_VAR_SET([acx_cf_flag],[-DgFortran])],
[echo "$acx_temp" | grep '^Cray Fortran' >/dev/null],
[AS_VAR_SET([acx_cf_flag],[-DgFortran])],
[acx_temp=`$acx_FC --version 2>&1` \
[acx_temp=`$acx_FC --version 2>&1 | sed 5q` \
&& echo $acx_temp | grep '^GNU Fortran' >/dev/null],
[AS_IF([echo $acx_temp | grep g77 >/dev/null],
[AS_VAR_SET([acx_cf_flag],[-Dg77Fortran])],
[dnl assume gfortran
dnl check if compiling with f2c bindings or with default bindings
AS_IF([echo "]AC_LANG_CASE([Fortran],[$FCFLAGS],
[Fortran 77],[$FFLAGS])[" | grep '^\(.* \)*-ff2c\( .*\)*$' >/dev/null],
AS_IF([echo "$acx_FCFLAGS" | grep '^\(.* \)*-ff2c\( .*\)*$' >/dev/null],
[AS_VAR_SET([acx_cf_flag],[-Df2cFortran])],
[AS_VAR_SET([acx_cf_flag],[-DgFortran])])])],
[echo $acx_temp | grep '^G95' >/dev/null],
[AS_VAR_SET([acx_cf_flag],[-DNAGf90Fortran])],
[acx_temp=`$acx_FC -v 2>&1` \
&& echo $acx_temp | grep '^f2c'],
[$acx_FC -v 2>&1 | sed 5q | grep '^f2c'],
[AS_VAR_SET([acx_cf_flag],[-Df2cFortran])])],
[powerpc64-*-linux-*|powerpc-*-linux-*],
[AS_IF([acx_temp=`$acx_FC -qversion 2>&1` \
&& echo $acx_temp | grep '^IBM XL Fortran' >/dev/null],
[AS_IF([$acx_FC -qversion 2>&1 | sed 5q | grep '^IBM XL Fortran' >/dev/null],
[AS_VAR_SET([acx_cf_flag],[-DIBMR2Fortran])])],
[*-ibm-aix*],
[dnl xlc set _IBMR2 so nothing needs to be done
......@@ -115,7 +112,8 @@ dnl check if compiling with f2c bindings or with default bindings
[sx*-*-*|es*-*-*],
[dnl fixme: make sure user is actually using sxf90
dnl but currently there is no alternative I know of
AS_VAR_SET([acx_cf_flag],[-DSXFortran])])])
AS_VAR_SET([acx_cf_flag],[-DSXFortran])])
AS_VAR_POPDEF([acx_FC])])
AC_DEFUN([ACX_FIND_CFORTRAN_DEF],
[AC_CACHE_CHECK([C preprocessor flags for Fortran calling convention cfortran.h],
......@@ -165,7 +163,8 @@ Have you configured compatible compilers?])])])
])
dnl now that flag is established, add (probed) defines to CPPFLAGS
AS_IF([echo "$acx_cv_cf_flag" | grep ' (probed)$' >/dev/null],
[CPPFLAGS="${CPPFLAGS+$CPPFLAGS }`echo "$acx_cv_cf_flag" | sed 's/ (probed)$//'`"])
[acx_temp=`echo "$acx_cv_cf_flag" | sed 's/ (probed)$//'`
CPPFLAGS="${CPPFLAGS+$CPPFLAGS }$acx_temp"])
])
dnl
dnl Local Variables:
......
......@@ -6,7 +6,7 @@ dnl Version: 1.0
dnl Keywords:
dnl Author: Thomas Jahns <jahns@dkrz.de>
dnl Maintainer: Thomas Jahns <jahns@dkrz.de>
dnl URL: https://www.dkrz.de/redmine/projects/show/scales-ppm
dnl URL: https://www.dkrz.de/redmine/projects/scales-ppm
dnl
dnl Redistribution and use in source and binary forms, with or without
dnl modification, are permitted provided that the following conditions are
......@@ -61,32 +61,32 @@ AC_DEFUN([ACX_FORTRAN_CHECK_MOD_PATHS_IFELSE],
AC_REQUIRE([ACX_SL_FC_CHECK_MOD_PATH_FLAG])
AS_VAR_PUSHDEF([acx_Mod], [acx_cv_fortran_mod_$1])dnl
AC_MSG_CHECKING([for $1 m4_default([$7],[extra]) module path])
AC_CACHE_VAL([acx_Mod],dnl
[ac_mod_search_FCFLAGS_SAVE="$FCFLAGS"
for ac_moddir in '' $2; do
AS_IF([test -z "$ac_moddir"],
AC_CACHE_VAL([acx_Mod],
[ac_mod_search_FCFLAGS_SAVE=$FCFLAGS
AS_FOR([Ac_moddir],[ac_moddir],['' $2],
[AS_IF([test -z "Ac_moddir"],
[ac_res="none required"
FCFLAGS="m4_ifval([$6],[$6 ])$ac_mod_search_FCFLAGS_SAVE"],
[ac_res="$FC_MOD_FLAG$ac_moddir"
[ac_res="$FC_MOD_FLAG]Ac_moddir["
FCFLAGS="m4_ifval([$6],[$6 ])$ac_res $ac_mod_search_FCFLAGS_SAVE"])
_ACX_FORTRAN_CHECK_MOD_IFELSE([$1],dnl
[AS_IF([test -z "$ac_moddir"],dnl
[AS_VAR_SET([acx_Mod],["$6"])],dnl
[AS_VAR_SET([acx_Mod],["]m4_ifval([$6],[$6 ])[$FC_MOD_FLAG$ac_moddir"])])],,[$5])
AS_VAR_SET_IF([acx_Mod], [break])dnl
done
FCFLAGS="$ac_mod_search_FCFLAGS_SAVE"])
AS_VAR_SET_IF([acx_Mod],dnl
[AS_IF([test x"AS_VAR_GET([acx_Mod])" = x],dnl
[AC_MSG_RESULT([(none required)])],dnl
[AC_MSG_RESULT([AS_VAR_GET([acx_Mod])])])],
[AC_MSG_RESULT([not found])])
AS_VAR_SET_IF([acx_Mod], [$3], [$4])[]dnl
_ACX_FORTRAN_CHECK_MOD_IFELSE([$1],
[AS_IF([test -z "Ac_moddir"],
[AS_VAR_SET([acx_Mod],["$6"])],
[AS_VAR_SET([acx_Mod],["]m4_ifval([$6],[$6 ])[$FC_MOD_FLAG]Ac_moddir["])])
break],,[$5])])
FCFLAGS=$ac_mod_search_FCFLAGS_SAVE])
AS_VAR_SET_IF([acx_Mod],
[AS_IF([test x"AS_VAR_GET([acx_Mod])" = x],
[AC_MSG_RESULT([(none required)])],
[AC_MSG_RESULT([AS_VAR_GET([acx_Mod])])])m4_ifval([$3],[
$3])],
[AC_MSG_RESULT([not found])m4_ifval([$4],[
$4])])
AS_VAR_POPDEF([acx_Mod])dnl
])# ACX_FORTRAN_CHECK_MOD_PATHS_IFELSE
dnl
dnl Local Variables:
dnl mode: autoconf
dnl license-project-url: "https://www.dkrz.de/redmine/projects/show/scales-ppm"
dnl license-project-url: "https://www.dkrz.de/redmine/projects/scales-ppm"
dnl license-default: "bsd"
dnl End:
......@@ -102,10 +102,11 @@ AC_DEFUN([ACX_F90_PACKAGE],
AC_REQUIRE([_ASX_TR_ARG_PREPARE])dnl
AC_SUBST(acx_pkg_root)dnl
AS_VAR_SET([acx_pkg_bindings],[yes])
AC_SUBST(acx_pkg_root)dnl
AC_ARG_WITH(ASX_TR_ARG([$1-root]),
[AS_HELP_STRING([--with-]ASX_TR_ARG([$1])[-root],
[set directory to search for $1 headers and library, @<:@default=$11@:>@])],
[AS_VAR_SET([acx_pkg_root],["$AS_TR_SH([with_]ASX_TR_ARG([$1])[_root])"])],
[set directory to search for $1 headers and library]m4_ifval([$11],[, @<:@default=$11@:>@]))],
[AS_VAR_COPY([acx_pkg_root],[withval])],
m4_ifval([$11], [AS_VAR_SET([acx_pkg_root],[$11])]))
AS_VAR_SET_IF([acx_pkg_root],
[AS_VAR_SET_IF([acx_pkg_lib],,
......@@ -117,24 +118,24 @@ AC_DEFUN([ACX_F90_PACKAGE],
[AS_HELP_STRING([--with-]ASX_TR_ARG([$1-]_AC_LANG_ABBREV)[-mod],
[specifically set directory to search for $1 module, ]dnl
[@<:@default=$]AS_TR_SH(ASX_TR_ARG([with_$1_root]))[/include@:>@])],
[AS_VAR_SET([acx_pkg_mod],["$FC_MOD_FLAG$AS_TR_SH(ASX_TR_ARG([with_$1_]_AC_LANG_ABBREV[_mod]))"])],
[])
[AS_VAR_SET([acx_pkg_mod],["$FC_MOD_FLAG$withval"])])
AC_ARG_VAR(acx_pkg_mod,
[flags to enable 'USE $1' in Fortran program.])
ACX_FORTRAN_CHECK_MOD_PATHS_IFELSE([$2],["]AS_VAR_GET([acx_pkg_root])[/include" "]AS_VAR_GET([acx_pkg_root])[/lib"],
[AS_VAR_COPY([acx_pkg_mod],[acx_Mod])],
[AS_VAR_SET([acx_pkg_bindings],[no]) ; $5],
[AS_VAR_SET([acx_pkg_bindings],[no]); $5],
[$3],m4_ifval([$4],[$4 ])[AS_VAR_GET([acx_pkg_mod])])])
m4_ifval([$6],
[AC_ARG_WITH(ASX_TR_ARG([$1-]_AC_LANG_ABBREV[-lib]),
[AS_HELP_STRING([--with-]ASX_TR_ARG([$1-]_AC_LANG_ABBREV)[-lib],
[specifically set directory to search for $1 library, ]dnl
[@<:@default=$]AS_TR_SH(ASX_TR_ARG([with_$1_root]))[/lib@:>@])],
AS_VAR_SET([acx_pkg_lib], ["-L$AS_TR_SH(ASX_TR_ARG([with_$1_]_AC_LANG_ABBREV[_lib]))"]),
[])
[AS_VAR_SET([acx_pkg_lib], ["-L$withval"])])
AC_ARG_VAR(acx_pkg_lib,
[specifically set flags to use when linking $1.])dnl
AC_SUBST(acx_pkg_lib)dnl
AS_VAR_IF([acx_pkg_bindings], [yes],
[AS_VAR_PUSHDEF([ac_Search], [acx_cv_option_search_$6_]_AC_LANG_ABBREV)dnl
AC_SUBST(acx_pkg_lib)dnl
acx_save_FCFLAGS=$FCFLAGS
FCFLAGS="AS_VAR_GET([acx_pkg_mod]) $FCFLAGS"
ACX_OPTION_SEARCH_LIBS_MULTI([$6],[$7],,
......@@ -142,8 +143,17 @@ AC_DEFUN([ACX_F90_PACKAGE],
[ use $2]m4_ifval([$12],[[
$12]]),m4_ifval([$14],[[$14]],[[ call $6$13]]))
FCFLAGS=$acx_save_FCFLAGS
AS_VAR_COPY([acx_pkg_lib],[ac_Search])
AS_LITERAL_IF([ac_Search],
[AS_VAR_SET([acx_pkg_lib],
[`echo "$]ac_Search[" | sed -e 's/^ *//;s/ *$//'`])],
[AS_VAR_COPY([acx_temp],[ac_Search])
acx_temp=`echo "$acx_temp" | sed -e 's/^ *//;s/ *$//'`
AS_VAR_COPY([acx_pkg_lib],[acx_temp])])
AS_VAR_POPDEF([ac_Search])])])
AS_VAR_POPDEF([acx_pkg_bindings])dnl
AS_VAR_POPDEF([acx_pkg_mod])dnl
AS_VAR_POPDEF([acx_pkg_lib])dnl
AS_VAR_POPDEF([acx_pkg_root])dnl
AC_LANG_POP([Fortran])dnl
])
dnl
......
......@@ -48,7 +48,7 @@ dnl
# [INCLUDES], [INCLUDE-FLAGS], [EXTRA-INCLUDE-FLAG-SETS])
# ------------------------------------------------------------------
# Check the compiler accepts HEADER-FILE. The INCLUDES might be defaulted.
AC_DEFUN([ACX_LANG_CHECK_INCLUDE_PATHS_IFELSE(C)],dnl
AC_DEFUN([ACX_LANG_CHECK_INCLUDE_PATHS_IFELSE(C)],
[ACX_GENERIC_CHECK_INCLUDE_PATHS_IFELSE(CPPFLAGS,-I,$@)])
#
m4_define([ACX_LANG_INCLUDE_PROGRAM(C)],
......
......@@ -88,29 +88,37 @@ AC_DEFUN([ACX_GENERIC_CHECK_INCLUDE_PATHS_IFELSE],
AC_MSG_CHECKING([for $3 extra include path])
AC_CACHE_VAL([acx_Include],dnl
[AS_VAR_SET([save_flags],["@S|@$1"])
AS_LITERAL_IF([save_flags],,
[AS_VAR_COPY([acx_temp],[save_flags
])])dnl
while :; do
m4_foreach([ACX_IncSet],[$9],
[AS_FOR([AC_INCDIR],[ac_incdir],['']m4_ifval([$4],[ $4]),
[AS_IF([test -z "$ac_incdir"],
[ac_res="none required"
$1="m4_ifval(ACX_IncSet,ACX_IncSet )$8 AS_VAR_GET([save_flags])"],
[ac_res="$2$ac_incdir"
$1="m4_ifval(ACX_IncSet,ACX_IncSet )$8 $ac_res AS_VAR_GET([save_flags])"])
_ACX_LANG_CHECK_INCLUDE_IFELSE([$3],dnl
[AS_IF([test -z "$ac_incdir"],dnl
[AS_VAR_SET([acx_Include],["]m4_ifval(ACX_IncSet,ACX_IncSet )$8["])],dnl
[AS_VAR_SET([acx_Include],["]m4_ifval(ACX_IncSet,ACX_IncSet )[$8 $2$ac_incdir"])])],,[$7])
AS_VAR_SET_IF([acx_Include], [break])])
AS_VAR_SET_IF([acx_Include], [break])
])
break
m4_foreach([ACX_IncSet],[$9],
[AS_FOR([AC_INCDIR],[ac_incdir],['']m4_ifval([$4],[ $4]),
[AS_IF([test -z "$ac_incdir"],
[ac_res="none required"
$1="m4_ifval(ACX_IncSet,ACX_IncSet )m4_ifval([$8],[$8 ])AS_LITERAL_IF([save_flags],[$save_flags],[$acx_temp])"],
[ac_res="$2$ac_incdir"
$1="m4_ifval(ACX_IncSet,ACX_IncSet )m4_ifval([$8],[$8 ])$ac_res AS_LITERAL_IF([save_flags],[$save_flags],[$acx_temp])"])
_ACX_LANG_CHECK_INCLUDE_IFELSE([$3],dnl
[AS_IF([test -z "$ac_incdir"],dnl
[AS_VAR_SET([acx_Include],["]m4_ifval(ACX_IncSet,ACX_IncSet )$8["])],dnl
[AS_VAR_SET([acx_Include],["]m4_ifval(ACX_IncSet,ACX_IncSet )[$8 $2$ac_incdir"])])],,[$7])
AS_VAR_SET_IF([acx_Include], [break])])
AS_VAR_SET_IF([acx_Include], [break])
])
break
done
AS_VAR_COPY([$1],[save_flags])])
AS_VAR_SET_IF([acx_Include],
[acx_temp=]AS_VAR_GET([acx_Include])[
[AS_LITERAL_IF([acx_Include],
[AS_VAR_PUSHDEF([acx_temp],[acx_Include])],
[AS_VAR_COPY([acx_temp],[acx_Include
])])dnl
AS_IF([test x"$acx_temp" = x],
[AC_MSG_RESULT([(none required)])],
[AC_MSG_RESULT([$acx_temp])])],
[AC_MSG_RESULT([(none required)])],
[AC_MSG_RESULT([$acx_temp])])
AS_LITERAL_IF([acx_Include],
[AS_VAR_POPDEF([acx_temp],[acx_Include])])],
[AC_MSG_RESULT([not found])])
AS_VAR_SET_IF([acx_Include], [$5], [$6])
AS_VAR_POPDEF([acx_Include])])dnl
......
......@@ -75,57 +75,62 @@ AC_DEFUN([ACX_GENERIC_PACKAGE],
AC_ARG_WITH(ASX_TR_ARG([$1-root]),
[AS_HELP_STRING([--with-]ASX_TR_ARG([$1])[-root],
[set directory to search for $1 headers and library]m4_ifval([$13],[, @<:@default=$13@:>@]))],
[AS_VAR_SET([acx_pkg_root],"$AS_TR_SH([with_]ASX_TR_ARG([$1])[_root])")],
[AS_VAR_COPY([acx_pkg_root],[withval])],
m4_ifval([$13], AS_VAR_SET([acx_pkg_root],[$13])))
AS_VAR_SET_IF([acx_pkg_root],
[AS_VAR_SET_IF([acx_pkg_lib],,
[AS_VAR_COPY([acx_temp],acx_pkg_root)
AS_VAR_SET([acx_pkg_lib],["$8$acx_temp/lib"])])
[AS_LITERAL_IF([acx_pkg_root],
[AS_VAR_SET([acx_pkg_lib],["$8$]acx_pkg_root[/lib"])],
[AS_VAR_COPY([acx_temp],acx_pkg_root)
AS_VAR_SET([acx_pkg_lib],["$8$acx_temp/lib"])])])
AS_VAR_SET_IF([acx_pkg_inc],,
[AS_VAR_COPY([acx_temp],acx_pkg_root)
AS_VAR_SET([acx_pkg_inc],["$3$acx_temp/include"])])])
[AS_LITERAL_IF([acx_pkg_root],
[AS_VAR_SET([acx_pkg_inc],["$3$]acx_pkg_root[/include"])],
[AS_VAR_COPY([acx_temp],acx_pkg_root)
AS_VAR_SET([acx_pkg_inc],["$3$acx_temp/include"])])])])
m4_ifval([$2],
[AC_ARG_WITH(ASX_TR_ARG([$1-include]),
[AS_HELP_STRING([--with-[]ASX_TR_ARG([$1])[]-include],
[specifically set directory to search for $1 headers, ]dnl
[@<:@default=$]AS_TR_SH(ASX_TR_ARG([with_$1_root]))[/include@:>@])],
[AS_VAR_SET([acx_pkg_inc],["]$3[$]AS_TR_SH(ASX_TR_ARG([with_$1_include]))["])])
AC_ARG_VAR(acx_pkg_inc,dnl
[specifically set flags to use when compiling sources
using $1 includes.])
[AS_VAR_SET([acx_pkg_inc],["$3$withval"])])
AC_ARG_VAR(acx_pkg_inc,
[specifically set flags to use when compiling sources using $1 includes.])
ACX_LANG_CHECK_INCLUDE_PATHS_IFELSE([$2],[$14],
[AS_VAR_COPY([acx_temp],[acx_cv_pkg_inc])
acx_temp=`echo "$acx_temp" | sed -e 's/^ *//;s/ *$//'`
AS_VAR_COPY([acx_pkg_inc],[acx_temp])],
[AS_VAR_SET([acx_pkg_bindings],[no])
$6],
[AS_LITERAL_IF([acx_cv_pkg_inc],
[AS_VAR_SET([acx_pkg_inc],[`echo "$]acx_cv_pkg_inc[" | sed -e 's/^ *//;s/ *$//'`])],
[AS_VAR_COPY([acx_temp],[acx_cv_pkg_inc])
acx_temp=`echo "$acx_temp" | sed -e 's/^ *//;s/ *$//'`
AS_VAR_COPY([acx_pkg_inc],[acx_temp])])],
[AS_VAR_SET([acx_pkg_bindings],[no]); $6],
[$4],[$]acx_pkg_inc,m4_ifval([$5],[[$5]],[[[]]]))])
m4_ifval([$7],
[AC_ARG_WITH(ASX_TR_ARG([$1-lib]),
[AS_HELP_STRING([--with-]ASX_TR_ARG([$1])[-lib],
[specifically set directory to search for $1 library, ]dnl
[@<:@default=$]AS_TR_SH(ASX_TR_ARG([with_$1_root]))[/lib@:>@])],
[AS_VAR_SET([acx_pkg_lib],["$8$AS_TR_SH(ASX_TR_ARG([with_$1_lib]))"])])
[AS_VAR_SET([acx_pkg_lib],["$8$withval"])])
AC_ARG_VAR(acx_pkg_lib,
[specifically set flags to use when linking $1.])
AC_SUBST(acx_pkg_lib)
AS_VAR_IF([acx_pkg_bindings],[yes],
[specifically set flags to use when linking $1.])dnl
AC_SUBST(acx_pkg_lib)dnl
AS_VAR_IF([acx_pkg_bindings], [yes],
[AS_VAR_PUSHDEF([ac_Search],[acx_cv_option_search_$7_]_AC_LANG_ABBREV)dnl
ACX_OPTION_SEARCH_LIBS_MULTI([$7],[$9],,
[AS_VAR_SET([acx_pkg_bindings],[no])
$12],[$10],m4_ifval([$11],[$11 ])$[acx_pkg_lib])
AS_VAR_COPY([acx_temp],[ac_Search])
acx_temp=`echo "$acx_temp" | sed -e 's/^ *//;s/ *$//'`
AS_VAR_COPY([acx_pkg_lib],[acx_temp])
AS_VAR_POPDEF([ac_Search])dnl
])
])dnl
AS_VAR_POPDEF([acx_pkg_bindings])
AS_VAR_POPDEF([acx_cv_pkg_inc])
AS_VAR_POPDEF([acx_pkg_inc])
AS_VAR_POPDEF([acx_pkg_lib])
AS_VAR_POPDEF([acx_pkg_root])
])
$12],[$10],m4_ifval([$11],[$11 ])$acx_pkg_lib)
AS_LITERAL_IF([ac_Search],
[AS_VAR_SET([acx_pkg_lib],
[`echo "$]ac_Search[" | sed -e 's/^ *//;s/ *$//'`])],
[AS_VAR_COPY([acx_temp],[ac_Search])
acx_temp=`echo "$acx_temp" | sed -e 's/^ *//;s/ *$//'`
AS_VAR_COPY([acx_pkg_lib],[acx_temp])])
AS_VAR_POPDEF([ac_Search])])])
AS_VAR_POPDEF([acx_pkg_bindings])dnl
AS_VAR_POPDEF([acx_cv_pkg_inc])dnl
AS_VAR_POPDEF([acx_pkg_inc])dnl
AS_VAR_POPDEF([acx_pkg_lib])dnl
AS_VAR_POPDEF([acx_pkg_root])dnl
])
dnl
dnl Local Variables:
dnl mode: autoconf
......
......@@ -6,7 +6,7 @@ dnl Version: 1.0
dnl Keywords:
dnl Author: Thomas Jahns <jahns@dkrz.de>
dnl Maintainer: Thomas Jahns <jahns@dkrz.de>
dnl URL: https://www.dkrz.de/redmine/projects/show/scales-ppm
dnl URL: https://www.dkrz.de/redmine/projects/scales-ppm
dnl
dnl Redistribution and use in source and binary forms, with or without
dnl modification, are permitted provided that the following conditions are
......@@ -91,6 +91,6 @@ AC_DEFUN([ACX_LT_PROBLEMS],
dnl
dnl Local Variables:
dnl mode: autoconf
dnl license-project-url: "https://www.dkrz.de/redmine/projects/show/scales-ppm"
dnl license-project-url: "https://www.dkrz.de/redmine/projects/scales-ppm"
dnl license-default: "bsd"
dnl End:
dnl acx_m4_list_to_quoted_strings.m4 --- short description
dnl
dnl Copyright (C) 2019 Thomas Jahns <jahns@dkrz.de>
dnl
dnl Version: 1.0
dnl Author: Thomas Jahns <jahns@dkrz.de>
dnl Keywords:
dnl Maintainer: Thomas Jahns <jahns@dkrz.de>
dnl URL: https://www.dkrz.de/redmine/projects/scales-ppm
dnl
dnl Redistribution and use in source and binary forms, with or without
dnl modification, are permitted provided that the following conditions are
dnl met:
dnl
dnl Redistributions of source code must retain the above copyright notice,
dnl this list of conditions and the following disclaimer.
dnl
dnl Redistributions in binary form must reproduce the above copyright
dnl notice, this list of conditions and the following disclaimer in the
dnl documentation and/or other materials provided with the distribution.
dnl
dnl Neither the name of the DKRZ GmbH nor the names of its contributors
dnl may be used to endorse or promote products derived from this software
dnl without specific prior written permission.
dnl
dnl THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
dnl IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
dnl TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
dnl PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
dnl OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
dnl EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
dnl PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
dnl PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
dnl LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
dnl NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
dnl SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dnl
dnl ACX_M4_LIST_TO_QUOTED_STRINGS
dnl expand m4 quoted list to shell list of quoted strings
dnl e.g. converts
dnl [[a],[b]] to "a" "b"
m4_define([_ACX_M4_LIST_TO_QUOTED_STRINGS],
[m4_cond([$#],[0],,[$#],[1],["$1"],
["$1" _ACX_M4_LIST_TO_QUOTED_STRINGS(m4_shift($@))])])dnl
AC_DEFUN([ACX_M4_LIST_TO_QUOTED_STRINGS],
[_ACX_M4_LIST_TO_QUOTED_STRINGS(m4_unquote([$1]))])
dnl
dnl Local Variables:
dnl mode: autoconf
dnl license-project-url: "https://www.dkrz.de/redmine/projects/scales-ppm"
dnl license-default: "bsd"
dnl End:
dnl acx_mpirun.m4 --- check whether launching MPI programs works
dnl
dnl Copyright (C) 2014 Thomas Jahns <jahns@dkrz.de>
dnl
dnl Keywords: configure configure.ac autoconf MPI mpirun mpiexec
dnl Author: Thomas Jahns <jahns@dkrz.de>
dnl Maintainer: Thomas Jahns <jahns@dkrz.de>
dnl URL: https://www.dkrz.de/redmine/projects/scales-ppm
dnl
dnl Redistribution and use in source and binary forms, with or without
dnl modification, are permitted provided that the following conditions are
dnl met:
dnl
dnl Redistributions of source code must retain the above copyright notice,
dnl this list of conditions and the following disclaimer.
dnl
dnl Redistributions in binary form must reproduce the above copyright
dnl notice, this list of conditions and the following disclaimer in the
dnl documentation and/or other materials provided with the distribution.
dnl
dnl Neither the name of the DKRZ GmbH nor the names of its contributors
dnl may be used to endorse or promote products derived from this software
dnl without specific prior written permission.
dnl
dnl THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
dnl IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
dnl TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
dnl PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
dnl OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
dnl EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
dnl PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
dnl PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
dnl LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
dnl NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
dnl SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dnl
dnl
dnl ACX_MPIRUN([NUM_TASKS=4],[ACTION-IF-WORKING],
dnl [ACTION-IF-FAILED=AC_MSG_FAILURE])
dnl
dnl First determines mpi launcher program (and sets MPI_LAUNCH to its path),
dnl then builds and runs simple program with 4 tasks
dnl (or NUM_TASKS if specified).
dnl MPI_LAUNCH is either set to a valid MPI launcher program path (unless
dnl cross-compiling, because it can't be tested then) or true (when it
dnl doesn't work).
dnl
dnl TODO: instead of setting C language, perform test for active AC_LANG
AC_DEFUN([ACX_MPIRUN],
[AC_PATH_PROGS([MPI_LAUNCH],[mpirun mpiexec],[true])
AC_ARG_VAR([MPI_LAUNCH],[absolute path to launcher for MPI programs, must be working unless configuring in cross-compilation mode])
AS_IF([test x"$cross_compiling" = xno -a x"$MPI_LAUNCH" != xtrue],
[AC_MSG_CHECKING([if $MPI_LAUNCH works])
AS_IF([test -x `echo "$MPI_LAUNCH" | sed -e 's/@<:@ @:>@.*//'`],
[AC_LANG_PUSH([C])
AC_LINK_IFELSE([AC_LANG_SOURCE([
@%:@include <stdio.h>
@%:@include <stdlib.h>
@%:@include <mpi.h>
@%:@define xmpi(ret) \\
do { \\
if (ret != MPI_SUCCESS) \\
exit(EXIT_FAILURE); \\
} while (0)
int
main(int argc, char **argv)
{
xmpi(MPI_Init(&argc, &argv));
char *numarg = argv@<:@1@:>@;
int cmdnum = atoi(numarg);
int procnum = 1;
xmpi(MPI_Allreduce(MPI_IN_PLACE, &procnum, 1, MPI_INT, MPI_SUM,
MPI_COMM_WORLD));
xmpi(MPI_Finalize());
return (procnum == cmdnum)?EXIT_SUCCESS:EXIT_FAILURE;
}
])],
[acx_mpirun_test="$MPI_LAUNCH -n m4_ifval([$1],[$1],[4]) ./conftest$EXEEXT m4_ifval([$1],[$1],[4])"
AS_IF([expr "$ac_link" : '.*/libtool --mode=link' >/dev/null],
[acx_mpirun_test=`echo "$ac_link" | sed -e 's@\(.*/libtool --mode=\)link.*@\1@'`"execute $acx_mpirun_test"])
_AC_RUN_LOG([LIBC_FATAL_STDERR_=1 $acx_mpirun_test >&2],[echo "running $acx_mpirun_test"])
AS_IF([test $ac_status -eq 0],,
[MPI_LAUNCH=true ; MPI_LAUNCH_failMsg="failed to run MPI programs"])],
[MPI_LAUNCH=true ; MPI_LAUNCH_failMsg="Cannot compile or link simple MPI program"])
AC_LANG_POP([C])],
[MPI_LAUNCH_failMsg="Cannot execute $MPI_LAUNCH" ; MPI_LAUNCH=true])])
AS_IF([test x"$MPI_LAUNCH" = xtrue],
[AC_MSG_RESULT([no])
m4_ifval([$3],[$3],[AC_MSG_FAILURE([$MPI_LAUNCH_failMsg])])],
[AC_MSG_RESULT([yes])m4_ifval([$2],[
$2])])
])
dnl
dnl Local Variables:
dnl mode: autoconf
dnl license-project-url: "https://www.dkrz.de/redmine/projects/scales-ppm"
dnl license-default: "bsd"
dnl End:
......@@ -52,20 +52,18 @@ dnl Uses either AC_LANG_PROGRAM([PREAMBLE],CALL-CODE) or
dnl AC_LANG_CALL([PREAMBLE],FUNCTION), depending on whether CALL-CODE
dnl is given or not.
AC_DEFUN([_ACX_OPTION_SEARCH_LIBS],
[acx_option_func_search_save_LIBS="$LIBS"
AC_LANG_CONFTEST([m4_ifval([$6],[AC_LANG_PROGRAM([$5],[$6])],[AC_LANG_CALL([$5], [$1])])])
[AC_LANG_CONFTEST([m4_ifval([$6],[AC_LANG_PROGRAM([$5],[$6])],[AC_LANG_CALL([$5], [$1])])])
AS_FOR([AC_LIB],[ac_lib],['' $2],
[AS_IF([test -z "]AC_LIB["],
[ac_res="none required"
LIBS="m4_ifval([$4],[$4 ])m4_ifnblank($3,[$3 ])$acx_option_func_search_save_LIBS"],
[ac_res="-l]AC_LIB["
LIBS="m4_ifval([$4],[$4 ])$ac_res m4_ifnblank($3,[$3 ])$acx_option_func_search_save_LIBS"])
AC_LINK_IFELSE([], [AS_IF([test x"$ac_res" = x"none required"],dnl
[AS_VAR_SET([ac_Search],["]m4_ifval([$4],[$4 ])[$3"])],dnl
[AS_VAR_SET([ac_Search],["]m4_ifval([$4],[$4 ])[-l]AC_LIB[ $3"])])])
AC_LINK_IFELSE([], [AS_IF([test x"$ac_res" = x"none required"],
[AS_VAR_SET([ac_Search],["]m4_ifval([$4],m4_ifnblank([$3],[$4 $3],[$4]),[$3])["])],
[AS_VAR_SET([ac_Search],["]m4_ifval([$4],[$4 ])[-l]AC_LIB[]m4_ifval([$3],[ $3])["])])])
AS_VAR_SET_IF([ac_Search], [break])])
rm conftest.$ac_ext
LIBS="$acx_option_func_search_save_LIBS"])
rm conftest.$ac_ext])
dnl ACX_OPTION_SEARCH_LIBS(FUNCTION, SEARCH-LIBS,
dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], [OTHER-LIBRARIES],
dnl [EXTRA-FLAGS], [PREAMBLE])
......@@ -77,7 +75,9 @@ dnl unconditionally, which might provoke linker errors.
AC_DEFUN([ACX_OPTION_SEARCH_LIBS],
[AS_VAR_PUSHDEF([ac_Search], [acx_cv_option_search_$1_]_AC_LANG_ABBREV)dnl
AC_CACHE_CHECK([for library containing $1], [ac_Search],
[_ACX_OPTION_SEARCH_LIBS([$1],[$2],[$5],[$6],[$7])])
[acx_option_func_search_save_LIBS=$LIBS
_ACX_OPTION_SEARCH_LIBS([$1],[$2],[$5],[$6],[$7])
LIBS=$acx_option_func_search_save_LIBS])
ac_res=AS_VAR_GET([ac_Search])
AS_VAR_SET_IF([ac_Search],
[$3],
......@@ -102,21 +102,24 @@ AC_DEFUN([ACX_OPTION_SEARCH_LIBS_MULTI],
[AS_VAR_PUSHDEF([ac_Search], [acx_cv_option_search_$1_]_AC_LANG_ABBREV)dnl
AC_MSG_CHECKING([for library containing $1])
AC_CACHE_VAL([ac_Search],
[while :; do
[acx_option_func_search_save_LIBS=$LIBS
while :; do
m4_if(m4_car($5),[[]],,[_ACX_OPTION_SEARCH_LIBS([$1],[$2],,[$6],[$7],[$8])
AS_VAR_SET_IF([ac_Search], [break])])
m4_foreach([ACX_LibSet], [$5],
[_ACX_OPTION_SEARCH_LIBS([$1],[$2],[ACX_LibSet],[$6],[$7],[$8])
AS_FOR([ACX_LibSet],[acx_libset],ACX_M4_LIST_TO_QUOTED_STRINGS([$5]),
[_ACX_OPTION_SEARCH_LIBS([$1],[$2],ACX_LibSet,[$6],[$7],[$8])
AS_VAR_SET_IF([ac_Search],[break])
])
break
done])
done
LIBS=$acx_option_func_search_save_LIBS])
AS_VAR_SET_IF([ac_Search],
[AS_IF([test x"AS_VAR_GET([ac_Search])" = x],
[AC_MSG_RESULT([(none required)])],
[AC_MSG_RESULT([AS_VAR_GET([ac_Search])])])],
[AC_MSG_RESULT([not found])])
AS_VAR_SET_IF([ac_Search],[$3],[$4])
[AC_MSG_RESULT([AS_VAR_GET([ac_Search])])])m4_ifval([$3],[
$3])],
[AC_MSG_RESULT([not found])m4_ifval([$4],[
$4])])
AS_VAR_POPDEF([ac_Search])dnl
])
dnl
......
......@@ -6,7 +6,7 @@ dnl Version: 1.0
dnl Keywords:
dnl Author: Thomas Jahns <jahns@dkrz.de>
dnl Maintainer: Thomas Jahns <jahns@dkrz.de>
dnl URL: https://www.dkrz.de/redmine/projects/show/scales-ppm
dnl URL: https://www.dkrz.de/redmine/projects/scales-ppm
dnl
dnl Redistribution and use in source and binary forms, with or without
dnl modification, are permitted provided that the following conditions are
......@@ -91,6 +91,6 @@ AC_DEFUN([ACX_SL_FC_CHECK_MOD_PATH_FLAG],dnl
dnl
dnl Local Variables:
dnl mode: autoconf
dnl license-project-url: "https://www.dkrz.de/redmine/projects/show/scales-ppm"
dnl license-project-url: "https://www.dkrz.de/redmine/projects/scales-ppm"
dnl license-default: "bsd"
dnl End:
......@@ -6,7 +6,7 @@ dnl Version: 1.0
dnl Keywords:
dnl Author: Thomas Jahns <jahns@dkrz.de>
dnl Maintainer: Thomas Jahns <jahns@dkrz.de>
dnl URL: https://www.dkrz.de/redmine/projects/show/scales-ppm
dnl URL: https://www.dkrz.de/redmine/projects/scales-ppm
dnl
dnl Redistribution and use in source and binary forms, with or without
dnl modification, are permitted provided that the following conditions are
......@@ -103,6 +103,6 @@ dnl
dnl
dnl Local Variables:
dnl mode: autoconf
dnl license-project-url: "https://www.dkrz.de/redmine/projects/show/scales-ppm"
dnl license-project-url: "https://www.dkrz.de/redmine/projects/scales-ppm"
dnl license-default: "bsd"
dnl End:
dnl acx_use_libtool_configuration.m4 --- prevent problematic libtool build configurations
dnl
dnl Copyright (C) 2016 Thomas Jahns <jahns@dkrz.de>
dnl
dnl Version: 1.0
dnl Keywords:
dnl Author: Thomas Jahns <jahns@dkrz.de>
dnl Maintainer: Thomas Jahns <jahns@dkrz.de>
dnl URL: https://www.dkrz.de/redmine/projects/scales-ppm
dnl
dnl Redistribution and use in source and binary forms, with or without
dnl modification, are permitted provided that the following conditions are
dnl met:
dnl
dnl Redistributions of source code must retain the above copyright notice,
dnl this list of conditions and the following disclaimer.
dnl
dnl Redistributions in binary form must reproduce the above copyright
dnl notice, this list of conditions and the following disclaimer in the
dnl documentation and/or other materials provided with the distribution.
dnl
dnl Neither the name of the DKRZ GmbH nor the names of its contributors
dnl may be used to endorse or promote products derived from this software
dnl without specific prior written permission.
dnl
dnl THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
dnl IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
dnl TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
dnl PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
dnl OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
dnl EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
dnl PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
dnl PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
dnl LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
dnl NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
dnl SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dnl _ACX_LT_FLAGS_MANGLE
m4_define([nag_filter_flag_var],
[AS_IF([test x${$1+set} = xset],
[$1=`echo "$][$1" | tr ' ' '\n' | sed -e '/^-W@<:@lc@:>@/{' \
-e 's/^\(-Wl\)/-XCClinker \1/;s/^\(-Wc\)/-Xcompiler \1/' -e '}' | tr '\n' ' '`])])
AC_DEFUN([_ACX_LT_FORT_FLAGS_MANGLE],
[_AC_FORTRAN_ASSERT
AC_LANG_CASE([Fortran],
[AS_VAR_PUSHDEF([acx_FC],[FC])dnl
AS_VAR_PUSHDEF([acx_FCFLAGS],[FCFLAGS])dnl
AS_VAR_PUSHDEF([acx_LDFLAGS],[FCLDFLAGS])],
[Fortran 77],
[AS_VAR_PUSHDEF([acx_FC],[F77])dnl
AS_VAR_PUSHDEF([acx_FCFLAGS],[FFLAGS])dnl
AS_VAR_PUSHDEF([acx_LDFLAGS],[F77LDFLAGS])])
acx_temp=`$acx_FC -V 2>&1 | sed 5q`
dnl fix problems from NAG compiler
AS_CASE(["$acx_temp"],
[*NAG\ Fortran\ Compiler\ Release*],
[nag_filter_flag_var([acx_FCFLAGS])
nag_filter_flag_var([acx_LDFLAGS])])
dnl fix conflicting use of -module by libtool and ifort
AC_LANG_CASE([Fortran],
[AS_CASE(["x${FC_MODOUT}x"],
[x'-module 'x|x'-mod 'x],
[FC_MODOUT="-Xcompiler ${FC_MODOUT}-Xcompiler "])])dnl
AS_VAR_POPDEF([acx_FC])dnl
AS_VAR_POPDEF([acx_FCFLAGS])dnl
AS_VAR_POPDEF([acx_LDFLAGS])])
dnl
dnl ACX_USE_LIBTOOL_CONFIGURATION([ARGS-TO-LT_INIT])
dnl Switch compiler to libtool wrapper and prevent occurrence of
dnl problematic setups
AC_DEFUN([ACX_USE_LIBTOOL_CONFIGURATION],
[dnl before switching on libtool, identify compilers that prevent us from
dnl certain build configurations
ACX_LT_PROBLEMS
dnl add some monkey patching for older libtool versions that don't handle
dnl newer PGI or NAG configurations particularly well
m4_if(m4_cmp(m4_version_compare(LT_PACKAGE_VERSION,[2.4.6]),1),-1,
[m4_pushdef([_LT_COMPILER_PIC],m4_bpatsubst(m4_dquote(m4_defn([_LT_COMPILER_PIC])),[;;
\*Portland\\ ],[;; @%:@(
*NAG\\ Fortran\\ Compiler*)
_LT_TAGVAR(lt_prog_compiler_wl, $][1)='-Wl,-Wl,,'
_LT_TAGVAR(lt_prog_compiler_pic, $][1)='-PIC'
_LT_TAGVAR(lt_prog_compiler_static, $][1)='-Bstatic'
;;
*PGI\\ Compilers\\ and\\ Tools*|*Port][land\\ ]))dnl
m4_pushdef([_LT_LINKER_SHLIBS],m4_bpatsubst(m4_dquote(m4_bpatsubst(m4_dquote(
m4_bpatsubst(m4_dquote(m4_defn(
[_LT_LINKER_SHLIBS])),[tmp_sharedflag='-shared'],
[tmp_sharedflag='-shared'
tmp_compiler_flags='$compiler_flags'])),
[\$CC '"\$tmp_sharedflag""\$tmp_addflag"' \$libobjs \$deplibs \$compiler_flags \$wl-soname],
[$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs '"$tmp_compiler_flags"' $wl-soname])),
[ tmp_sharedflag='-Wl,-shared'],
[ tmp_sharedflag='-Wl,-shared'
tmp_compiler_flags='`echo \$compiler_flags | sed -e '"'"'s/ -W@<:@cl@:>@,-no-pie\\b//g'"'"'`']))dnl
m4_pushdef([_LT_SYS_HIDDEN_LIBDEPS],m4_bpatsubst(m4_dquote(
m4_defn([_LT_SYS_HIDDEN_LIBDEPS])),[test x-\([LR]\) = "\$p"],
[test x-\1 = x"$p"]))])dnl
LT_INIT([$1])
m4_if(m4_cmp(m4_version_compare(LT_PACKAGE_VERSION,[2.4.6]),1),-1,
[m4_popdef([_LT_COMPILER_PIC])m4_popdef([_LT_LINKER_SHLIBS])dnl
m4_popdef([_LT_SYS_HIDDEN_LIBDEPS])])dnl
dnl _KPSE_USE_LIBTOOL ensures libtool is also used for configure-time tests,
dnl which deduces dependent libraries automatically
_KPSE_USE_LIBTOOL
AC_PROVIDE_IFELSE([AC_PROG_FC],
[AS_IF([test -n "$FC" -a X"$FC" != Xno],
[AC_LANG_PUSH([Fortran])
_ACX_LT_FORT_FLAGS_MANGLE
AC_LANG_POP([Fortran])])])
AC_PROVIDE_IFELSE([AC_PROG_F77],
[AS_IF([test -n "$F77" -a X"$F77" != Xno],
[AC_LANG_PUSH([Fortran 77])
_ACX_LT_FORT_FLAGS_MANGLE
AC_LANG_POP([Fortran 77])])])
dnl substitute -shared-intel if present
AS_FOR([acx_flag_var],[acx_flag_var_],[CFLAGS CXXFLAGS FCFLAGS F77FLAGS LDFLAGS FCLDFLAGS],
[AS_IF([eval test x\$\{acx_flag_var+set\} = xset],
[eval acx_temp="\" \$$acx_flag_var_ \""
AS_CASE([$acx_temp],[*\ -shared-intel\ *|*\ -static-intel\ *],
[acx_temp=`echo "$acx_temp" | sed -e 's/ \(-\(shared\|static\)-intel\) / -Xcompiler \1 -XCClinker \1 /'`])
dnl take care of ifort/icc/icpc two-part options
eval acx_flag_var=\"`echo "$acx_temp" | sed -r -e 's/ -(align|allow|assume|ccdefault|check|convert|debug|debug-parameters|diag-type|diag-enable|diag-disable|double-size|dynamic-linker|dyncom|export-dir|extend-source|fp-model|fpscomp|gen-interfaces|heap-arrays|imacros|integer-size|iprefix|iquote|iwithprefixbefore|module|names|opt-report|opt-streaming-stores|pch-dir|pch-use|prof-dir|prof-file|real-size|reentrancy|stand|tcollect-filter|tune|warn|watch) (@<:@^-@:>@@<:@^ @:>@*) / -Xcompiler -\1 -Xcompiler \2 /g' -e 's/^ //;s/ $//'`\"])])])dnl
dnl
dnl Local Variables:
dnl mode: autoconf
dnl license-project-url: "https://www.dkrz.de/redmine/projects/scales-ppm"
dnl license-default: "bsd"
dnl End:
......@@ -3,10 +3,10 @@
# crayftnpreproc-wrapper --- wrapper to produce Cray ftn style front-end
# preprocessor output on stdout
#
# Copyright (C) 2014 Nathanael Hübbe <nathanael.huebbe@informatik.uni-hamburg.de>
# Copyright (C) 2014 Nathanael Hübbe <nathanael.huebbe@informatik.uni-hamburg.de>
# Thomas Jahns <jahns@dkrz.de>
#
# Author: Nathanael Hübbe <nathanael.huebbe@informatik.uni-hamburg.de>
# Author: Nathanael Hübbe <nathanael.huebbe@informatik.uni-hamburg.de>
# Thomas Jahns <jahns@dkrz.de>
# Maintainer: Thomas Jahns <jahns@dkrz.de>
# URL: https://www.dkrz.de/redmine/projects/scales-ppm
......@@ -44,25 +44,46 @@
test x"$DEBUG" = x || set -x
set -e
# create temp directory for intermediate .i-files
temporaries="$(mktemp -d -t)"
temporaries=$(mktemp -d -t)
trap "rm -rf $temporaries" EXIT
callDir="$PWD"
callDir=$PWD
declare -i i j
declare -a inargs outargs preprocessedFiles
inargs=("$@")
j=0
# filter -o option and argument from flags
for (( i = 0 ; i < ${#inargs[@]} ; i++ )) ; do
case ${inargs[$i]} in
case ${inargs[i]} in
(-o) i=$((i + 1)) ;;
(-o*) ;;
(-eZ) ;;
(-e*Z*)
outargs[$j]="${inargs[$i]//Z/}"
outargs[j]=${inargs[i]//Z/}
j=$((j + 1))
;;
(-e)
case ${inargs[i+1]} in
(Z)
# drop lone -e Z entirely
((++i))
;;
(*Z*)
# filter Z from other arguments
outargs[j]=${inargs[i]}
outargs[j+1]=${inargs[i+1]//Z/}
((++i))
j=$((j + 2))
;;
# copy everything else verbatim
(*)
outargs[j]=${inargs[i]}
j=$((j + 1))
;;
esac
;;
(*)
outargs[$j]="${inargs[$i]}"
outargs[j]=${inargs[i]}
j=$((j + 1))
;;
esac
......@@ -71,18 +92,18 @@ done
# find non-option arguments at end of input and convert to absolute
# path if necessary
for (( i = ${#outargs[@]} - 1 ; i >= 0 ; i-- )) ; do
[[ -r "${outargs[$i]}" ]] || break
case "${outargs[$i]}" in
[[ -r "${outargs[i]}" ]] || break
case ${outargs[i]} in
(/*) ;;
(*) outargs[$i]="$callDir/${outargs[$i]}" ;;
(*) outargs[i]="$callDir/${outargs[i]}" ;;
esac
done
j=0
# use previous loop termination to build list of
# names of .i-files produced by compiler
for (( i = i + 1 ; i < ${#outargs[@]} ; i++ )) ; do
preprocessedFiles[$j]="${outargs[$i]%.*}.i"
preprocessedFiles[$j]="${preprocessedFiles[$j]##*/}"
preprocessedFiles[j]="${outargs[i]%.*}.i"
preprocessedFiles[j]=${preprocessedFiles[j]##*/}
j=$((j + 1))
done
......@@ -110,5 +131,6 @@ grep -v -h '^#' "${preprocessedFiles[@]}"
# Local Variables:
# license-project-url: "https://www.dkrz.de/redmine/projects/scales-ppm"
# license-default: "bsd"
# coding: utf-8
# End:
#
......@@ -47,6 +47,7 @@
if [ "${DEBUG+set}" = set ]; then
set -x
outputRedir=">&2"
echo "$0 $*"
else
outputRedir=">/dev/null 2>&1"
fi
......@@ -80,12 +81,19 @@ if [ "${FC+set}" != set ]; then
fi
FC=${FC-$F90C}
# nagfor 5.3 up chokes on -EP flag
nag=`$FC -V 2>&1 | sed -n '/^NAG/s/NAG Fortran Compiler.*/NAG/
t print
b
: print
p'`
[ x"$nag" = xNAG ] || FCFLAGS=${FCFLAGS--EP}
case `$FC -V 2>&1 | sed 5q` in
*NAG\ Fortran\ Compiler*)
;;
*PGI\ Compilers\ and\ Tools*)
echo 'This wrapper does not support the PGI Fortran compiler, use' >&2
echo " $FC -E" >&2
echo "instead." >&2
exit 1
;;
*)
FCFLAGS=${FCFLAGS--EP}
;;
esac
# append -fpp if necessary
IFStr=`echo "$IFS" | sed -n '$!s/$/\\\\n/
H
......
......@@ -91,6 +91,7 @@ TMPDIR="${TMPDIR-/tmp}"
(umask 077 && mkdir "$tmp")
} || exit $?
#echo \"$FCFLAGS\"
trap "rm -rf '$tmp'" 0
for FortranFile in "$@" ; do
fppOutput=`echo "$FortranFile" | sed 's:.*/::
s:^:'"$tmp/"'i.:'`
......@@ -101,7 +102,6 @@ s:^:'"$tmp/"'i.:'`
test "${DEBUG+set}" = set && cat "$fppOutput" >&2
rm "$fppOutput"
done
rm -rf "$tmp"
#
# Local Variables:
# license-project-url: "https://www.dkrz.de/redmine/projects/scales-ppm"
......
......@@ -9,7 +9,7 @@
# Keywords:
# Author: Thomas Jahns <jahns@dkrz.de>
# Maintainer: Thomas Jahns <jahns@dkrz.de>
# URL: http://
# URL: https://www.dkrz.de/redmine/projects/scales-ppm
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment