]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
New macro AC_FC_PP_DEFINE for the preprocessor define flag.
authorRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Sat, 2 Apr 2011 13:20:48 +0000 (15:20 +0200)
committerRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Sat, 2 Apr 2011 13:37:40 +0000 (15:37 +0200)
* lib/autoconf/fortran.m4 (AC_FC_PP_DEFINE): New macro.
* lib/autom4te.in (Automake-preselections): Preselect it.
* doc/autoconf.texi (Fortran Compiler): Document it.
* tests/local.at (_AT_CHECK_ENV): Do not complain about
FCFLAGS_F nor FC_DEFINE.
* NEWS: Update.

Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
ChangeLog
NEWS
doc/autoconf.texi
lib/autoconf/fortran.m4
lib/autom4te.in
tests/local.at

index 5eb695d202e6878c0de11eda9ba429df8db415e6..19238e4686fa9675a84fdd4a462603a648f41f39 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2011-04-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
+       New macro AC_FC_PP_DEFINE for the preprocessor define flag.
+       * lib/autoconf/fortran.m4 (AC_FC_PP_DEFINE): New macro.
+       * lib/autom4te.in (Automake-preselections): Preselect it.
+       * doc/autoconf.texi (Fortran Compiler): Document it.
+       * tests/local.at (_AT_CHECK_ENV): Do not complain about
+       FCFLAGS_F nor FC_DEFINE.
+       * NEWS: Update.
+
        New macro AC_FC_PP_SRCEXT for preprocessed file extensions.
        * lib/autoconf/fortran.m4 (AC_FC_PP_SRCEXT): New macro.
        * lib/autom4te.in (Automake-preselections): Preselect it.
diff --git a/NEWS b/NEWS
index d09e0f4cd656c3f5e7a2c34d0060ccce1f57a392..c44678d807ec3a5ff92065808ecca52a2678f141 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -20,6 +20,7 @@ GNU Autoconf NEWS - User visible changes.
     AC_FC_MODULE_FLAG for the Fortran 90 module search path flag
     AC_FC_MODULE_OUTPUT_FLAG for the Fortran 90 module output directory flag
     AC_FC_PP_SRCEXT for preprocessed Fortran source files extensions
+    AC_FC_PP_DEFINE for the Fortran preprocessor define flag
 
 * Noteworthy changes in release 2.68 (2010-09-22) [stable]
   Released by Eric Blake, based on git versions 2.67.*.
index 730b590fd0629e92b7100f333f1a4dea593d0d8c..d553f4aa936ae525aac291c77d3d0d1ff71b1afb 100644 (file)
@@ -8262,6 +8262,25 @@ results in @code{ac_cv_fc_srcext_@var{ext}} and
 @code{ac_cv_fc_pp_srcext_@var{ext}} variables, respectively.
 @end defmac
 
+@defmac AC_FC_PP_DEFINE (@ovar{action-if-success}, @dvar{action-if-failure, @
+  AC_MSG_FAILURE})
+@acindex{FC_PP_DEFINE}
+@caindex fc_pp_define
+
+Find a flag to specify defines for preprocessed Fortran.  Not all
+Fortran compilers use @option{-D}.  Substitute @code{FC_DEFINE} with
+the result and call @var{action-if-success} (defaults to nothing) if
+successful, and @var{action-if-failure} (defaults to failing with an
+error message) if not.
+
+This macro calls @code{AC_FC_PP_SRCEXT([F])} in order to learn how to
+to preprocess a @file{conftest.F} file, but restores a previously used
+Fortran source file extension afterwards again.
+
+The result of this test is cached in the @code{ac_cv_fc_pp_define}
+variable.
+@end defmac
+
 @defmac AC_FC_FREEFORM (@ovar{action-if-success}, @dvar{action-if-failure, @
   AC_MSG_FAILURE})
 @acindex{FC_FREEFORM}
index 1c3139263c088f184390b9e658b2f3c66b3576f5..56488a97d5fc4206c6f96ce05c1aa3d5b837b8b8 100644 (file)
@@ -1275,6 +1275,56 @@ AC_LANG_POP(Fortran)dnl
 ])# AC_FC_PP_SRCEXT
 
 
+# AC_FC_PP_DEFINE([ACTION-IF-SUCCESS], [ACTION-IF-FAILURE = FAILURE])
+# -------------------------------------------------------------------
+# Find a flag to specify defines for preprocessed Fortran.  Not all
+# Fortran compilers use -D.  Substitute FC_DEFINE with the result and
+# call ACTION-IF-SUCCESS (defaults to nothing) if successful, and
+# ACTION-IF-FAILURE (defaults to failing with an error message) if not.
+#
+# Known flags:
+# IBM: -WF,-D
+# Lahey/Fujitsu: -Wp,-D     older versions???
+# f2c: -D or -Wc,-D
+# others: -D
+AC_DEFUN([AC_FC_PP_DEFINE],
+[AC_LANG_PUSH([Fortran])dnl
+ac_fc_pp_define_srcext_save=$ac_fc_srcext
+AC_FC_PP_SRCEXT([F])
+AC_CACHE_CHECK([how to define symbols for preprocessed Fortran],
+  [ac_cv_fc_pp_define],
+[ac_fc_pp_define_srcext_save=$ac_fc_srcext
+ac_cv_fc_pp_define=unknown
+ac_fc_pp_define_FCFLAGS_save=$FCFLAGS
+for ac_flag in -D -WF,-D -Wp,-D -Wc,-D
+do
+  FCFLAGS="$ac_fc_pp_define_FCFLAGS_save ${ac_flag}FOOBAR ${ac_flag}ZORK=42"
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
+#ifndef FOOBAR
+      choke me
+#endif
+#if ZORK != 42
+      choke me
+#endif]])],
+    [ac_cv_fc_pp_define=$ac_flag])
+  test x"$ac_cv_fc_pp_define" != xunknown && break
+done
+FCFLAGS=$ac_fc_pp_define_FCFLAGS_save
+])
+ac_fc_srcext=$ac_fc_pp_define_srcext_save
+if test "x$ac_cv_fc_pp_define" = xunknown; then
+  FC_DEFINE=
+  m4_default([$2],
+            [AC_MSG_ERROR([Fortran does not allow to define preprocessor symbols], 77)])
+else
+  FC_DEFINE=$ac_cv_fc_pp_define
+  $1
+fi
+AC_SUBST([FC_DEFINE])dnl
+AC_LANG_POP([Fortran])dnl
+])
+
+
 # AC_FC_FREEFORM([ACTION-IF-SUCCESS], [ACTION-IF-FAILURE = FAILURE])
 # ------------------------------------------------------------------
 # Look for a compiler flag to make the Fortran (FC) compiler accept
index 0f868429b3c45174673ecb7173df8bcade28e1c6..f38c4ad0e0c9feb769bf8f508d4f69e143d8b166 100644 (file)
@@ -44,6 +44,7 @@ args: --preselect AC_CONFIG_LIBOBJ_DIR
 args: --preselect AC_CONFIG_LINKS
 args: --preselect AC_FC_FREEFORM
 args: --preselect AC_FC_SRCEXT
+args: --preselect AC_FC_PP_DEFINE
 args: --preselect AC_FC_PP_SRCEXT
 args: --preselect AC_INIT
 args: --preselect AC_LIBSOURCE
index a2efce342265b1894160c0af5e4aae10c4690c0e..1678c33ca7d7789b48a515c067bd805ef5947d64 100644 (file)
@@ -317,7 +317,7 @@ if test -f state-env.before && test -f state-env.after; then
       [cross_compiling|U],
       [interpval|PATH_SEPARATOR],
       [F77_DUMMY_MAIN|f77_(case|underscore)],
-      [FC(_DUMMY_MAIN|FLAGS|LIBS|FLAGS_f|_MODEXT|_MODINC|_MODOUT)?],
+      [FC(_DUMMY_MAIN|FLAGS|LIBS|FLAGS_[fF]|_MODEXT|_MODINC|_MODOUT|_DEFINE)?],
       [ALLOCA|GETLOADAVG_LIBS|KMEM_GROUP|NEED_SETGID|POW_LIB],
       [AWK|LEX|LEXLIB|LEX_OUTPUT_ROOT|LN_S|M4|MKDIR_P|RANLIB|SET_MAKE|YACC],
       [GREP|[EF]GREP|SED],