| 1 | AC_PREREQ([2.69]) |
|---|
| 2 | AC_INIT([ecrad], [1.1.0], [], [], |
|---|
| 3 | [https://confluence.ecmwf.int/display/ECRAD]) |
|---|
| 4 | AC_CONFIG_MACRO_DIR([m4]) |
|---|
| 5 | m4_pattern_forbid([^A[SC]X_])dnl |
|---|
| 6 | AC_CONFIG_AUX_DIR([config]) |
|---|
| 7 | AC_CONFIG_SRCDIR([radiation/radiation_flux.F90]) |
|---|
| 8 | |
|---|
| 9 | AC_ARG_ENABLE([silent-rules], |
|---|
| 10 | [AC_HELP_STRING([--enable-silent-rules], |
|---|
| 11 | [less verbose build output (undo: "make V=1") @<:@default=yes@:>@])], |
|---|
| 12 | [AS_IF([test x"$enableval" != xno], [enable_silent_rules=yes])], |
|---|
| 13 | [enable_silent_rules=yes]) |
|---|
| 14 | |
|---|
| 15 | AC_ARG_ENABLE([single-precision], |
|---|
| 16 | [AC_HELP_STRING([--enable-single-precision], |
|---|
| 17 | [switch to single precision @<:@default=no@:>@])], |
|---|
| 18 | [AS_IF([test x"$enableval" != xno], [enable_single_precision=yes])], |
|---|
| 19 | [enable_single_precision=no]) |
|---|
| 20 | |
|---|
| 21 | AC_ARG_ENABLE([pgi-inlib], |
|---|
| 22 | [AC_HELP_STRING([--enable-pgi-inlib], |
|---|
| 23 | [enable PGI cross-file function inlining via an inline library (undo: |
|---|
| 24 | "make INLIB=0") @<:@default=auto@:>@])], |
|---|
| 25 | [AS_IF([test x"$enableval" != xno && test x"$enableval" != xauto], |
|---|
| 26 | [enable_pgi_inlib=yes])], |
|---|
| 27 | [enable_pgi_inlib=auto]) |
|---|
| 28 | |
|---|
| 29 | AC_PROG_FC |
|---|
| 30 | AC_LANG([Fortran]) |
|---|
| 31 | ACX_FC_PP_SRCEXT([F90]) |
|---|
| 32 | ACX_COMPILER_FC_VENDOR_SIMPLE |
|---|
| 33 | AC_SUBST([FC_VENDOR], [$acx_cv_fc_compiler_vendor]) |
|---|
| 34 | |
|---|
| 35 | ACX_FC_LINE_LENGTH([unlimited]) |
|---|
| 36 | |
|---|
| 37 | ACX_FC_MODULE_NAMING( |
|---|
| 38 | [AC_SUBST([FCMODEXT], ["$acx_cv_fc_module_naming_ext"]) |
|---|
| 39 | AC_SUBST([FCMODUC], ["$acx_cv_fc_module_naming_upper"])]) |
|---|
| 40 | |
|---|
| 41 | ACX_FC_MODULE_IN_FLAG([AC_SUBST([FCMODINC], ["$acx_cv_fc_module_in_flag"])]) |
|---|
| 42 | ACX_FC_MODULE_OUT_FLAG([AC_SUBST([FCMODOUT], ["$acx_cv_fc_module_out_flag"])]) |
|---|
| 43 | |
|---|
| 44 | ACX_FC_INCLUDE_FLAG([AC_SUBST([FCINCFLAG], ["$acx_cv_fc_ftn_include_flag"])]) |
|---|
| 45 | ACX_FC_INCLUDE_ORDER( |
|---|
| 46 | [AC_SUBST([FCINCORDER], ["$acx_cv_fc_ftn_include_order"])], |
|---|
| 47 | [AC_SUBST([FCINCORDER], ['src,flg'])]) |
|---|
| 48 | |
|---|
| 49 | ACX_FC_INCLUDE_FLAG_PP( |
|---|
| 50 | [AC_SUBST([FCINCFLAG_PP], ["$acx_cv_fc_pp_include_flag"])]) |
|---|
| 51 | ACX_FC_INCLUDE_ORDER_PP( |
|---|
| 52 | [AC_SUBST([FCINCORDER_PP], ["$acx_cv_fc_pp_include_order"])], |
|---|
| 53 | [AC_SUBST([FCINCORDER_PP], ['inc,flg'])]) |
|---|
| 54 | |
|---|
| 55 | ACX_LANG_MACRO_FLAG([AC_SUBST([FCDEF_PP], ["$acx_cv_fc_macro_flag"])]) |
|---|
| 56 | |
|---|
| 57 | ACX_FC_ENDIANNESS_REAL( |
|---|
| 58 | dnl Kind of the double-precision real variables that are read from the binary |
|---|
| 59 | dnl files (JPRD from ifsaux/parkind1.F90): |
|---|
| 60 | [SELECTED_REAL_KIND(13,300)], |
|---|
| 61 | [AS_CASE([$acx_cv_fc_endianness_real], |
|---|
| 62 | dnl Big-endian: |
|---|
| 63 | [replEhkm], [], |
|---|
| 64 | dnl Little-endian: |
|---|
| 65 | [mkhElper], |
|---|
| 66 | [AS_VAR_APPEND([FCFLAGS], |
|---|
| 67 | [" ${acx_cv_fc_macro_flag}__ECRAD_LITTLE_ENDIAN"])], |
|---|
| 68 | dnl Unsupported mixed-endian: |
|---|
| 69 | [AC_MSG_WARN([the endianness of the target system is not supported])])], |
|---|
| 70 | [AC_MSG_WARN([unable to detect the endianness of the target system])]) |
|---|
| 71 | |
|---|
| 72 | AS_VAR_IF([enable_silent_rules], [yes], |
|---|
| 73 | [AC_SUBST([DEFAULT_VERBOSITY], [0])], |
|---|
| 74 | [AC_SUBST([DEFAULT_VERBOSITY], [1])]) |
|---|
| 75 | |
|---|
| 76 | AS_VAR_IF([enable_single_precision], [yes], |
|---|
| 77 | [AS_VAR_APPEND([FCFLAGS], [" ${acx_cv_fc_macro_flag}SINGLE_PRECISION"])]) |
|---|
| 78 | |
|---|
| 79 | AS_CASE([$enable_pgi_inlib], |
|---|
| 80 | [auto], |
|---|
| 81 | [AS_VAR_IF([acx_cv_fc_compiler_vendor], [portland], |
|---|
| 82 | [AC_MSG_NOTICE([PGI cross-file function inlining via an inline library dnl |
|---|
| 83 | is enabled because $FC is recognized as the PGI compiler: disable the dnl |
|---|
| 84 | inlining if required (--disable-pgi-inlib)]) |
|---|
| 85 | enable_pgi_inlib=yes], |
|---|
| 86 | [enable_pgi_inlib=no])], |
|---|
| 87 | [yes], |
|---|
| 88 | [AS_IF([test x"$acx_cv_fc_compiler_vendor" != xportland], |
|---|
| 89 | [AC_MSG_WARN([PGI cross-file function inlining via an inline library is dnl |
|---|
| 90 | enabled but $FC is not recognized as the PGI compiler: it is strongly dnl |
|---|
| 91 | recommended to disable the compiler-specific feature dnl |
|---|
| 92 | (--disable-pgi-inlib)])])]) |
|---|
| 93 | |
|---|
| 94 | AS_VAR_IF([enable_pgi_inlib], [yes], |
|---|
| 95 | [AC_SUBST([DEFAULT_INLIB], [1])], |
|---|
| 96 | [AC_SUBST([DEFAULT_INLIB], [0])]) |
|---|
| 97 | |
|---|
| 98 | ACX_LANG_PACKAGE_INIT([NetCDF], ["$FCMODINC"], [-L]) |
|---|
| 99 | AC_SUBST([DEPGEN_EXTERNAL_MODS], [netcdf]) |
|---|
| 100 | |
|---|
| 101 | dnl Check for NetCDF |
|---|
| 102 | acx_save_FCFLAGS=$FCFLAGS |
|---|
| 103 | NETCDF_FCFLAGS=${NETCDF_FCFLAGS-$acx_fc_NetCDF_inc_search_args} |
|---|
| 104 | FCFLAGS="$NETCDF_FCFLAGS $acx_save_FCFLAGS" |
|---|
| 105 | ACX_FC_MODULE_CHECK([netcdf], |
|---|
| 106 | [ACX_LANG_LIB_SEARCH([NETCDF_FCLIBS], [nf90_open], |
|---|
| 107 | [ASX_PREPEND_LDFLAGS([$acx_fc_NetCDF_lib_search_args], |
|---|
| 108 | [-lnetcdff], [-lnetcdff -lnetcdf])], |
|---|
| 109 | [NETCDF_FCLIBS=$acx_cv_fc_lib_func_NF90_OPEN |
|---|
| 110 | acx_have_netcdf=yes], [], |
|---|
| 111 | [AC_LANG_PROGRAM([], |
|---|
| 112 | [[ use netcdf, only: nf90_open, NF90_NOWRITE |
|---|
| 113 | implicit none |
|---|
| 114 | integer :: status, ncid |
|---|
| 115 | status = nf90_open('conftest.nc', NF90_NOWRITE, ncid)]])])], []) |
|---|
| 116 | FCFLAGS=$acx_save_FCFLAGS |
|---|
| 117 | |
|---|
| 118 | dnl Check for AR and ARFLAGS |
|---|
| 119 | AC_ARG_VAR([AR], [archiver command]) |
|---|
| 120 | AC_ARG_VAR([ARFLAGS], [archiver flags]) |
|---|
| 121 | ARFLAGS=${ARFLAGS-cr} |
|---|
| 122 | ACX_PROG_SEARCH([AR], [ar], |
|---|
| 123 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM], |
|---|
| 124 | [acx_ar_try="$acx_candidate ${ARFLAGS} libconftest.a dnl |
|---|
| 125 | conftest.$ac_objext >&AS_MESSAGE_LOG_FD" |
|---|
| 126 | _AC_DO_VAR([acx_ar_try]) |
|---|
| 127 | rm -f libconftest.a]) |
|---|
| 128 | test "$ac_status" -eq 0 >/dev/null 2>&1], |
|---|
| 129 | [AR=$acx_cv_prog_AR]) |
|---|
| 130 | |
|---|
| 131 | dnl Check for PYTHON |
|---|
| 132 | AC_ARG_VAR([PYTHON], [Python interpreter command])dnl |
|---|
| 133 | ACX_PROG_SEARCH([PYTHON], [python python3], |
|---|
| 134 | [acx_python_try="$acx_candidate $srcdir/mkhelper/depgen.py -h dnl |
|---|
| 135 | >&AS_MESSAGE_LOG_FD" |
|---|
| 136 | _AC_DO_VAR([acx_python_try])], |
|---|
| 137 | [PYTHON=$acx_cv_prog_PYTHON]) |
|---|
| 138 | |
|---|
| 139 | AC_PROG_INSTALL |
|---|
| 140 | AC_PROG_MKDIR_P |
|---|
| 141 | |
|---|
| 142 | AC_CONFIG_FILES([Makefile]) |
|---|
| 143 | |
|---|
| 144 | dnl An additional step to generate dummy dependencies: |
|---|
| 145 | AC_CONFIG_COMMANDS([depfiles], |
|---|
| 146 | [${MAKE-make} dummy-depend >/dev/null 2>&AS_MESSAGE_LOG_FD |
|---|
| 147 | sleep 1 |
|---|
| 148 | touch Makefile]) |
|---|
| 149 | |
|---|
| 150 | AC_OUTPUT |
|---|
| 151 | |
|---|