source: LMDZ6/trunk/libf/phylmd/ecrad-acc/configure.ac

Last change on this file was 6016, checked in by yann meurdesoif, 3 months ago

Add new ecrad version from DWD ported onto OpenACC, closed from original ecrad ECMWF starting point for LMDZ ecrad version.

Modification from ecrad-lmdz version has been included.

YM

  • Property svn:eol-style set to native
File size: 5.2 KB
Line 
1AC_PREREQ([2.69])
2AC_INIT([ecrad], [1.1.0], [], [],
3  [https://confluence.ecmwf.int/display/ECRAD])
4AC_CONFIG_MACRO_DIR([m4])
5m4_pattern_forbid([^A[SC]X_])dnl
6AC_CONFIG_AUX_DIR([config])
7AC_CONFIG_SRCDIR([radiation/radiation_flux.F90])
8
9AC_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
15AC_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
21AC_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
29AC_PROG_FC
30AC_LANG([Fortran])
31ACX_FC_PP_SRCEXT([F90])
32ACX_COMPILER_FC_VENDOR_SIMPLE
33AC_SUBST([FC_VENDOR], [$acx_cv_fc_compiler_vendor])
34
35ACX_FC_LINE_LENGTH([unlimited])
36
37ACX_FC_MODULE_NAMING(
38  [AC_SUBST([FCMODEXT], ["$acx_cv_fc_module_naming_ext"])
39   AC_SUBST([FCMODUC], ["$acx_cv_fc_module_naming_upper"])])
40
41ACX_FC_MODULE_IN_FLAG([AC_SUBST([FCMODINC], ["$acx_cv_fc_module_in_flag"])])
42ACX_FC_MODULE_OUT_FLAG([AC_SUBST([FCMODOUT], ["$acx_cv_fc_module_out_flag"])])
43
44ACX_FC_INCLUDE_FLAG([AC_SUBST([FCINCFLAG], ["$acx_cv_fc_ftn_include_flag"])])
45ACX_FC_INCLUDE_ORDER(
46  [AC_SUBST([FCINCORDER], ["$acx_cv_fc_ftn_include_order"])],
47  [AC_SUBST([FCINCORDER], ['src,flg'])])
48
49ACX_FC_INCLUDE_FLAG_PP(
50  [AC_SUBST([FCINCFLAG_PP], ["$acx_cv_fc_pp_include_flag"])])
51ACX_FC_INCLUDE_ORDER_PP(
52  [AC_SUBST([FCINCORDER_PP], ["$acx_cv_fc_pp_include_order"])],
53  [AC_SUBST([FCINCORDER_PP], ['inc,flg'])])
54
55ACX_LANG_MACRO_FLAG([AC_SUBST([FCDEF_PP], ["$acx_cv_fc_macro_flag"])])
56
57ACX_FC_ENDIANNESS_REAL(
58dnl Kind of the double-precision real variables that are read from the binary
59dnl files (JPRD from ifsaux/parkind1.F90):
60  [SELECTED_REAL_KIND(13,300)],
61  [AS_CASE([$acx_cv_fc_endianness_real],
62dnl Big-endian:
63     [replEhkm], [],
64dnl Little-endian:
65     [mkhElper],
66     [AS_VAR_APPEND([FCFLAGS],
67        [" ${acx_cv_fc_macro_flag}__ECRAD_LITTLE_ENDIAN"])],
68dnl 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
72AS_VAR_IF([enable_silent_rules], [yes],
73  [AC_SUBST([DEFAULT_VERBOSITY], [0])],
74  [AC_SUBST([DEFAULT_VERBOSITY], [1])])
75
76AS_VAR_IF([enable_single_precision], [yes],
77  [AS_VAR_APPEND([FCFLAGS], [" ${acx_cv_fc_macro_flag}SINGLE_PRECISION"])])
78
79AS_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
83is enabled because $FC is recognized as the PGI compiler: disable the dnl
84inlining 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
90enabled but $FC is not recognized as the PGI compiler: it is strongly dnl
91recommended to disable the compiler-specific feature dnl
92(--disable-pgi-inlib)])])])
93
94AS_VAR_IF([enable_pgi_inlib], [yes],
95  [AC_SUBST([DEFAULT_INLIB], [1])],
96  [AC_SUBST([DEFAULT_INLIB], [0])])
97
98ACX_LANG_PACKAGE_INIT([NetCDF], ["$FCMODINC"], [-L])
99AC_SUBST([DEPGEN_EXTERNAL_MODS], [netcdf])
100
101dnl Check for NetCDF
102acx_save_FCFLAGS=$FCFLAGS
103NETCDF_FCFLAGS=${NETCDF_FCFLAGS-$acx_fc_NetCDF_inc_search_args}
104FCFLAGS="$NETCDF_FCFLAGS $acx_save_FCFLAGS"
105ACX_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)]])])], [])
116FCFLAGS=$acx_save_FCFLAGS
117
118dnl Check for AR and ARFLAGS
119AC_ARG_VAR([AR], [archiver command])
120AC_ARG_VAR([ARFLAGS], [archiver flags])
121ARFLAGS=${ARFLAGS-cr}
122ACX_PROG_SEARCH([AR], [ar],
123  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
124     [acx_ar_try="$acx_candidate ${ARFLAGS} libconftest.a dnl
125conftest.$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
131dnl Check for PYTHON
132AC_ARG_VAR([PYTHON], [Python interpreter command])dnl
133ACX_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
139AC_PROG_INSTALL
140AC_PROG_MKDIR_P
141
142AC_CONFIG_FILES([Makefile])
143
144dnl An additional step to generate dummy dependencies:
145AC_CONFIG_COMMANDS([depfiles],
146  [${MAKE-make} dummy-depend >/dev/null 2>&AS_MESSAGE_LOG_FD
147   sleep 1
148   touch Makefile])
149
150AC_OUTPUT
151
Note: See TracBrowser for help on using the repository browser.