AC-Archive
Autoconf Macro Archive

ac-archive.sf.net: - Project CVS - Download
Macro Index
- AM Support
- C++ Support
- C Support
- Fortran Support
- Java Support
- Cross Compilation
- Installed Packages
- Miscellaneous
- LaTeX Support
- Uncategorized
- archive macros
- adl's macros
- bkorb's macros
- guidod's macros
- latex's macros
- other's macros
- rleigh's macros
- obsoleted macros
- released macros
- search index

Documentation
- Contribute!
- History
- acincludedir m4
- acinclude (tool)
- macro howto
- ax tricks
- maintainers
- License
- Topics

generated...
2007-08-05

(C) 2007 guidod
Download the M4 Source.

acx_f77_cmain_fflags

Back to the Main Page.

Synopsis
ACX_F77_CMAIN_FFLAGS([ACTION-IF-SUCCEED], [ACTION-IF-FAIL])
, 
Version

2003-03-27

Author

Steven G. Johnson <stevenj@alum.mit.edu>

License

GPLWithACException
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. As a special exception, the respective Autoconf Macro's copyright owner gives unlimited permission to copy, distribute and modify the configure scripts that are the output of Autoconf when processing the Macro. You need not follow the terms of the GNU General Public License when using or distributing such scripts

Category

cryp.to ac-archive's Miscellaneous (released)

Documentation

This macro figures out if extra Fortran compiler flags are required in order to use the Fortran linker to link programs where the main() function is defined via C (or other language). On some systems, notably the Alpha with Compaq compilers, the Fortran libraries have their own main() function which must be disabled.

Runs ACTION-IF-SUCCEED if successful, and ACTION-IF-FAIL if not. Defines the output variable F77_CMAIN_FFLAGS to any discovered flags. (If ACTION-IF-FAIL is not specified, defaults to halting with an error.)

This macro is especially useful in conjunction with automake, since by default automake uses $F77 to link programs mixing C and Fortran, leading to a link error on some systems. In this case, you should set the FFLAGS for that program to include F77_CMAIN_FFLAGS.

M4 Source Code
AC_DEFUN([ACX_F77_CMAIN_FFLAGS],
[AC_CACHE_CHECK([for f77 flags to use C main function], acx_cv_f77_cmain_fflags,
[acx_cv_f77_cmain_fflags="unknown"
AC_LANG_PUSH(C)
AC_COMPILE_IFELSE([[int main(void) { return 0; }]],
		  [mv conftest.$ac_objext conftest_cmain.$ac_objext],
		  [acx_cv_f77_cmain_fflags=error])
AC_LANG_POP(C)
if test "x$acx_cv_f77_cmain_fflags" != xerror; then
    AC_LANG_PUSH(Fortran 77)
    acx_save_LIBS=$LIBS
    LIBS="conftest_cmain.$ac_objext $LIBS"
    acx_save_FFLAGS=$FFLAGS
    for acx_flag in none -nofor_main; do
	case $acx_flag in
	    none) FFLAGS=$acx_save_FFLAGS ;;
	    *)    FFLAGS="$acx_save_FFLAGS $acx_flag" ;;
	esac
	AC_LINK_IFELSE([
      subroutine foobar()
      return
      end
], [acx_cv_f77_cmain_fflags=$acx_flag; break]);
    done
    FFLAGS=$acx_save_FFLAGS
    LIBS=$acx_save_LIBS
    AC_LANG_POP(Fortran 77)
fi])
    case $acx_cv_f77_cmain_fflags in
	error|unknown)
	    F77_CMAIN_FFLAGS=""
	    ifelse([$2],,[AC_MSG_ERROR([cannot link C main with Fortran])],[$2])
	    ;;
	*)
	    if test "x$acx_cv_f77_cmain_fflags" = xnone; then
		F77_CMAIN_FFLAGS=""
	    else
		F77_CMAIN_FFLAGS="$acx_cv_f77_cmain_fflags"
	    fi
	    $1
	    ;;
    esac
    AC_SUBST(F77_CMAIN_FFLAGS)
])