⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fortran.m4

📁 autoconf是一个产生可以自动配置源代码包
💻 M4
📖 第 1 页 / 共 3 页
字号:
# _AC_PROG_FC_G# -------------# Check whether -g works, even if F[C]FLAGS is set, in case the package# plays around with F[C]FLAGS (such as to build both debugging and normal# versions of a library), tasteless as that idea is.m4_define([_AC_PROG_FC_G],[_AC_FORTRAN_ASSERT()dnlac_test_FFLAGS=${[]_AC_LANG_PREFIX[]FLAGS+set}ac_save_FFLAGS=$[]_AC_LANG_PREFIX[]FLAGS_AC_LANG_PREFIX[]FLAGS=AC_CACHE_CHECK(whether $[]_AC_FC[] accepts -g, ac_cv_prog_[]_AC_LANG_ABBREV[]_g,[_AC_LANG_PREFIX[]FLAGS=-g_AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],[ac_cv_prog_[]_AC_LANG_ABBREV[]_g=yes],[ac_cv_prog_[]_AC_LANG_ABBREV[]_g=no])])if test "$ac_test_FFLAGS" = set; then  _AC_LANG_PREFIX[]FLAGS=$ac_save_FFLAGSelif test $ac_cv_prog_[]_AC_LANG_ABBREV[]_g = yes; then  if test "x$ac_cv_[]_AC_LANG_ABBREV[]_compiler_gnu" = xyes; then    _AC_LANG_PREFIX[]FLAGS="-g -O2"  else    _AC_LANG_PREFIX[]FLAGS="-g"  fielse  if test "x$ac_cv_[]_AC_LANG_ABBREV[]_compiler_gnu" = xyes; then    _AC_LANG_PREFIX[]FLAGS="-O2"  else    _AC_LANG_PREFIX[]FLAGS=  fifi[]dnl])# _AC_PROG_FC_G# _AC_PROG_FC_C_O# ---------------# Test if the Fortran compiler accepts the options `-c' and `-o'# simultaneously, and define `[F77/FC]_NO_MINUS_C_MINUS_O' if it does not.## The usefulness of this macro is questionable, as I can't really see# why anyone would use it.  The only reason I include it is for# completeness, since a similar test exists for the C compiler.## FIXME: it seems like we could merge the C/C++/Fortran versions of this.AC_DEFUN([_AC_PROG_FC_C_O],[_AC_FORTRAN_ASSERT()dnlAC_CACHE_CHECK([whether $[]_AC_FC[] understands -c and -o together],               [ac_cv_prog_[]_AC_LANG_ABBREV[]_c_o],[AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])# We test twice because some compilers refuse to overwrite an existing# `.o' file with `-o', although they will create one.ac_try='$[]_AC_FC[] $[]_AC_LANG_PREFIX[]FLAGS -c conftest.$ac_ext -o conftest2.$ac_objext >&AS_MESSAGE_LOG_FD'rm -f conftest2.*if _AC_DO_VAR(ac_try) &&     test -f conftest2.$ac_objext &&     _AC_DO_VAR(ac_try); then  ac_cv_prog_[]_AC_LANG_ABBREV[]_c_o=yeselse  ac_cv_prog_[]_AC_LANG_ABBREV[]_c_o=nofirm -f conftest*])if test $ac_cv_prog_[]_AC_LANG_ABBREV[]_c_o = no; then  AC_DEFINE([]_AC_FC[]_NO_MINUS_C_MINUS_O, 1,            [Define to 1 if your Fortran compiler doesn't accept             -c and -o together.])fi])# _AC_PROG_FC_C_O# AC_PROG_F77_C_O# ---------------AC_DEFUN([AC_PROG_F77_C_O],[AC_REQUIRE([AC_PROG_F77])dnlAC_LANG_PUSH(Fortran 77)dnl_AC_PROG_FC_C_OAC_LANG_POP(Fortran 77)dnl])# AC_PROG_F77_C_O# AC_PROG_FC_C_O# ---------------AC_DEFUN([AC_PROG_FC_C_O],[AC_REQUIRE([AC_PROG_FC])dnlAC_LANG_PUSH(Fortran)dnl_AC_PROG_FC_C_OAC_LANG_POP(Fortran)dnl])# AC_PROG_FC_C_O## ------------------------------- #### 4. Compilers' characteristics.  #### ------------------------------- ### ---------------------------------------- ## 4d. Fortran 77 compiler characteristics. ## ---------------------------------------- ## _AC_PROG_FC_V_OUTPUT([FLAG = $ac_cv_prog_{f77/fc}_v])# -------------------------------------------------# Link a trivial Fortran program, compiling with a verbose output FLAG# (whose default value, $ac_cv_prog_{f77/fc}_v, is computed by# _AC_PROG_FC_V), and return the output in $ac_{f77/fc}_v_output.  This# output is processed in the way expected by _AC_FC_LIBRARY_LDFLAGS,# so that any link flags that are echoed by the compiler appear as# space-separated items.AC_DEFUN([_AC_PROG_FC_V_OUTPUT],[_AC_FORTRAN_ASSERT()dnlAC_LANG_CONFTEST([AC_LANG_PROGRAM([])])# Compile and link our simple test program by passing a flag (argument# 1 to this macro) to the Fortran compiler in order to get# "verbose" output that we can then parse for the Fortran linker# flags.ac_save_FFLAGS=$[]_AC_LANG_PREFIX[]FLAGS_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS m4_default([$1], [$ac_cv_prog_[]_AC_LANG_ABBREV[]_v])"eval "set x $ac_link"shift_AS_ECHO_LOG([$[*]])ac_[]_AC_LANG_ABBREV[]_v_output=`eval $ac_link AS_MESSAGE_LOG_FD>&1 2>&1 | grep -v 'Driving:'`echo "$ac_[]_AC_LANG_ABBREV[]_v_output" >&AS_MESSAGE_LOG_FD_AC_LANG_PREFIX[]FLAGS=$ac_save_FFLAGSrm -f conftest*# On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where# /foo, /bar, and /baz are search directories for the Fortran linker.# Here, we change these into -L/foo -L/bar -L/baz (and put it first):ac_[]_AC_LANG_ABBREV[]_v_output="`echo $ac_[]_AC_LANG_ABBREV[]_v_output |	grep 'LPATH is:' |	sed 's,.*LPATH is\(: *[[^ ]]*\).*,\1,;s,: */, -L/,g'` $ac_[]_AC_LANG_ABBREV[]_v_output"# FIXME: we keep getting bitten by quoted arguments; a more general fix#        that detects unbalanced quotes in FLIBS should be implemented#        and (ugh) tested at some point.case $ac_[]_AC_LANG_ABBREV[]_v_output in  # If we are using xlf then replace all the commas with spaces.  *xlfentry*)    ac_[]_AC_LANG_ABBREV[]_v_output=`echo $ac_[]_AC_LANG_ABBREV[]_v_output | sed 's/,/ /g'` ;;  # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted  # $LIBS confuse us, and the libraries appear later in the output anyway).  *mGLOB_options_string*)    ac_[]_AC_LANG_ABBREV[]_v_output=`echo $ac_[]_AC_LANG_ABBREV[]_v_output | sed 's/"-mGLOB[[^"]]*"/ /g'` ;;  # Portland Group compiler has singly- or doubly-quoted -cmdline argument  # Singly-quoted arguments were reported for versions 5.2-4 and 6.0-4.  # Doubly-quoted arguments were reported for "PGF90/x86 Linux/x86 5.0-2".  *-cmdline\ * | *-ignore\ * | *-def\ *)    ac_[]_AC_LANG_ABBREV[]_v_output=`echo $ac_[]_AC_LANG_ABBREV[]_v_output | sed "\        s/-cmdline  *'[[^']]*'/ /g; s/-cmdline  *\"[[^\"]]*\"/ /g        s/-ignore  *'[[^']]*'/ /g; s/-ignore  *\"[[^\"]]*\"/ /g        s/-def  *'[[^']]*'/ /g; s/-def  *\"[[^\"]]*\"/ /g"` ;;  # If we are using Cray Fortran then delete quotes.  *cft90*)    ac_[]_AC_LANG_ABBREV[]_v_output=`echo $ac_[]_AC_LANG_ABBREV[]_v_output | sed 's/"//g'` ;;esac])# _AC_PROG_FC_V_OUTPUT# _AC_PROG_FC_V# --------------## Determine the flag that causes the Fortran compiler to print# information of library and object files (normally -v)# Needed for _AC_FC_LIBRARY_FLAGS# Some compilers don't accept -v (Lahey: -verbose, xlf: -V, Fujitsu: -###)AC_DEFUN([_AC_PROG_FC_V],[_AC_FORTRAN_ASSERT()dnlAC_CACHE_CHECK([how to get verbose linking output from $[]_AC_FC[]],                [ac_cv_prog_[]_AC_LANG_ABBREV[]_v],[AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],[ac_cv_prog_[]_AC_LANG_ABBREV[]_v=# Try some options frequently used verbose outputfor ac_verb in -v -verbose --verbose -V -\#\#\#; do  _AC_PROG_FC_V_OUTPUT($ac_verb)  # look for -l* and *.a constructs in the output  for ac_arg in $ac_[]_AC_LANG_ABBREV[]_v_output; do     case $ac_arg in        [[\\/]]*.a | ?:[[\\/]]*.a | -[[lLRu]]*)          ac_cv_prog_[]_AC_LANG_ABBREV[]_v=$ac_verb          break 2 ;;     esac  donedoneif test -z "$ac_cv_prog_[]_AC_LANG_ABBREV[]_v"; then   AC_MSG_WARN([cannot determine how to obtain linking information from $[]_AC_FC[]])fi],                  [AC_MSG_WARN([compilation failed])])])])# _AC_PROG_FC_V# _AC_FC_LIBRARY_LDFLAGS# ----------------------## Determine the linker flags (e.g. "-L" and "-l") for the Fortran# intrinsic and runtime libraries that are required to successfully# link a Fortran program or shared library.  The output variable# FLIBS/FCLIBS is set to these flags.## This macro is intended to be used in those situations when it is# necessary to mix, e.g. C++ and Fortran, source code into a single# program or shared library.## For example, if object files from a C++ and Fortran compiler must# be linked together, then the C++ compiler/linker must be used for# linking (since special C++-ish things need to happen at link time# like calling global constructors, instantiating templates, enabling# exception support, etc.).## However, the Fortran intrinsic and runtime libraries must be# linked in as well, but the C++ compiler/linker doesn't know how to# add these Fortran libraries.  Hence, the macro# "AC_F77_LIBRARY_LDFLAGS" was created to determine these Fortran# libraries.## This macro was packaged in its current form by Matthew D. Langston.# However, nearly all of this macro came from the "OCTAVE_FLIBS" macro# in "octave-2.0.13/aclocal.m4", and full credit should go to John# W. Eaton for writing this extremely useful macro.  Thank you John.AC_DEFUN([_AC_FC_LIBRARY_LDFLAGS],[_AC_FORTRAN_ASSERT()dnl_AC_PROG_FC_VAC_CACHE_CHECK([for _AC_LANG libraries of $[]_AC_FC[]], ac_cv_[]_AC_LANG_ABBREV[]_libs,[if test "x$[]_AC_LANG_PREFIX[]LIBS" != "x"; then  ac_cv_[]_AC_LANG_ABBREV[]_libs="$[]_AC_LANG_PREFIX[]LIBS" # Let the user override the test.else_AC_PROG_FC_V_OUTPUTac_cv_[]_AC_LANG_ABBREV[]_libs=# Save positional arguments (if any)ac_save_positional="$[@]"set X $ac_[]_AC_LANG_ABBREV[]_v_outputwhile test $[@%:@] != 1; do  shift  ac_arg=$[1]  case $ac_arg in        [[\\/]]*.a | ?:[[\\/]]*.a)          _AC_LIST_MEMBER_IF($ac_arg, $ac_cv_[]_AC_LANG_ABBREV[]_libs, ,              ac_cv_[]_AC_LANG_ABBREV[]_libs="$ac_cv_[]_AC_LANG_ABBREV[]_libs $ac_arg")          ;;        -bI:*)          _AC_LIST_MEMBER_IF($ac_arg, $ac_cv_[]_AC_LANG_ABBREV[]_libs, ,             [_AC_LINKER_OPTION([$ac_arg], ac_cv_[]_AC_LANG_ABBREV[]_libs)])          ;;          # Ignore these flags.        -lang* | -lcrt*.o | -lc | -lgcc | -libmil | -LANG:=* | -LIST:* | -LNO:*)          ;;        -lkernel32)          test x"$CYGWIN" != xyes && ac_cv_[]_AC_LANG_ABBREV[]_libs="$ac_cv_[]_AC_LANG_ABBREV[]_libs $ac_arg"          ;;        -[[LRuYz]])          # These flags, when seen by themselves, take an argument.          # We remove the space between option and argument and re-iterate          # unless we find an empty arg or a new option (starting with -)	  case $[2] in	     "" | -*);;	     *)		ac_arg="$ac_arg$[2]"		shift; shift		set X $ac_arg "$[@]"		;;	  esac          ;;        -YP,*)          for ac_j in `echo $ac_arg | sed -e 's/-YP,/-L/;s/:/ -L/g'`; do            _AC_LIST_MEMBER_IF($ac_j, $ac_cv_[]_AC_LANG_ABBREV[]_libs, ,                               [ac_arg="$ac_arg $ac_j"                               ac_cv_[]_AC_LANG_ABBREV[]_libs="$ac_cv_[]_AC_LANG_ABBREV[]_libs $ac_j"])          done          ;;        -[[lLR]]*)          _AC_LIST_MEMBER_IF($ac_arg, $ac_cv_[]_AC_LANG_ABBREV[]_libs, ,                             ac_cv_[]_AC_LANG_ABBREV[]_libs="$ac_cv_[]_AC_LANG_ABBREV[]_libs $ac_arg")          ;;	-zallextract*| -zdefaultextract)	  ac_cv_[]_AC_LANG_ABBREV[]_libs="$ac_cv_[]_AC_LANG_ABBREV[]_libs $ac_arg"	  ;;          # Ignore everything else.  esacdone# restore positional argumentsset X $ac_save_positional; shift# We only consider "LD_RUN_PATH" on Solaris systems.  If this is seen,# then we insist that the "run path" must be an absolute path (i.e. it# must begin with a "/").case `(uname -sr) 2>/dev/null` in   "SunOS 5"*)      ac_ld_run_path=`echo $ac_[]_AC_LANG_ABBREV[]_v_output |                        sed -n 's,^.*LD_RUN_PATH *= *\(/[[^ ]]*\).*$,-R\1,p'`      test "x$ac_ld_run_path" != x &&        _AC_LINKER_OPTION([$ac_ld_run_path], ac_cv_[]_AC_LANG_ABBREV[]_libs)      ;;esacfi # test "x$[]_AC_LANG_PREFIX[]LIBS" = "x"])[]_AC_LANG_PREFIX[]LIBS="$ac_cv_[]_AC_LANG_ABBREV[]_libs"AC_SUBST([]_AC_LANG_PREFIX[]LIBS)])# _AC_FC_LIBRARY_LDFLAGS# AC_F77_LIBRARY_LDFLAGS# ----------------------AC_DEFUN([AC_F77_LIBRARY_LDFLAGS],[AC_REQUIRE([AC_PROG_F77])dnlAC_LANG_PUSH(Fortran 77)dnl_AC_FC_LIBRARY_LDFLAGSAC_LANG_POP(Fortran 77)dnl])# AC_F77_LIBRARY_LDFLAGS# AC_FC_LIBRARY_LDFLAGS# ----------------------AC_DEFUN([AC_FC_LIBRARY_LDFLAGS],[AC_REQUIRE([AC_PROG_FC])dnlAC_LANG_PUSH(Fortran)dnl_AC_FC_LIBRARY_LDFLAGSAC_LANG_POP(Fortran)dnl])# AC_FC_LIBRARY_LDFLAGS# _AC_FC_DUMMY_MAIN([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])# -----------------------------------------------------------## Detect name of dummy main routine required by the Fortran libraries,# (if any) and define {F77,FC}_DUMMY_MAIN to this name (which should be# used for a dummy declaration, if it is defined).  On some systems,# linking a C program to the Fortran library does not work unless you# supply a dummy function called something like MAIN__.## Execute ACTION-IF-NOT-FOUND if no way of successfully linking a C# program with the {F77,FC} libs is found; default to exiting with an error# message.  Execute ACTION-IF-FOUND if a dummy routine name is needed# and found or if it is not needed (default to defining {F77,FC}_DUMMY_MAIN# when needed).## What is technically happening is that the Fortran libraries provide# their own main() function, which usually initializes Fortran I/O and# similar stuff, and then calls MAIN__, which is the entry point of# your program.  Usually, a C program will override this with its own# main() routine, but the linker sometimes complain if you don't# provide a dummy (never-called) MAIN__ routine anyway.## Of course, programs that want to allow Fortran subroutines to do# I/O, etcetera, should call their main routine MAIN__() (or whatever)# instead of main().  A separate autoconf test (_AC_FC_MAIN) checks# for the routine to use in this case (since the semantics of the test# are slightly different).  To link to e.g. purely numerical# libraries, this is normally not necessary, however, and most C/C++# programs are reluctant to turn over so much control to Fortran.  =)## The name variants we check for are (in order):#   MAIN__ (g77, MAIN__ required on some systems; IRIX, MAIN__ optional)#   MAIN_, __main (SunOS)#   MAIN _MAIN __MAIN main_ main__ _main (we follow DDD and try these too)AC_DEFUN([_AC_FC_DUMMY_MAIN],[_AC_FORTRAN_ASSERT()dnlm4_define(_AC_LANG_PROGRAM_C_[]_AC_FC[]_HOOKS,[#ifdef ]_AC_FC[_DUMMY_MAIN]AC_LANG_CASE([Fortran], [#ifndef FC_DUMMY_MAIN_EQ_F77])[#  ifdef __cplusplus     extern "C"#  endif   int ]_AC_FC[_DUMMY_MAIN() { return 1; }]AC_LANG_CASE([Fortran], [#endif])[#endif])AC_CACHE_CHECK([for dummy main to link with _AC_LANG libraries],               ac_cv_[]_AC_LANG_ABBREV[]_dummy_main,[ac_[]_AC_LANG_ABBREV[]_dm_save_LIBS=$LIBS LIBS="$LIBS $[]_AC_LANG_PREFIX[]LIBS" ac_fortran_dm_var=[]_AC_FC[]_DUMMY_MAIN AC_LANG_PUSH(C)dnl # First, try linking without a dummy main: AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],                [ac_cv_fortran_dummy_main=none],                [ac_cv_fortran_dummy_main=unknown]) if test $ac_cv_fortran_dummy_main = unknown; then   for ac_func in MAIN__ MAIN_ __main MAIN _MAIN __MAIN main_ main__ _main; do     AC_LINK_IFELSE([AC_LANG_PROGRAM([[@%:@define $ac_fortran_dm_var $ac_func]])],                    [ac_cv_fortran_dummy_main=$ac_func; break])   done fi AC_LANG_POP(C)dnl ac_cv_[]_AC_LANG_ABBREV[]_dummy_main=$ac_cv_fortran_dummy_main rm -f conftest* LIBS=$ac_[]_AC_LANG_ABBREV[]_dm_save_LIBS])[]_AC_FC[]_DUMMY_MAIN=$ac_cv_[]_AC_LANG_ABBREV[]_dummy_mainAS_IF([test "$[]_AC_FC[]_DUMMY_MAIN" != unknown],      [m4_default([$1],[if test $[]_AC_FC[]_DUMMY_MAIN != none; then  AC_DEFINE_UNQUOTED([]_AC_FC[]_DUMMY_MAIN, $[]_AC_FC[]_DUMMY_MAIN,                     [Define to dummy `main' function (if any) required to                      link to the Fortran libraries.])  if test "x$ac_cv_fc_dummy_main" = "x$ac_cv_f77_dummy_main"; then	AC_DEFINE([FC_DUMMY_MAIN_EQ_F77], 1,                  [Define if F77 and FC dummy `main' functions are identical.])  fifi])],      [m4_default([$2],

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -