RE: autotools on aix

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> From: autoconf-bounces+jeff.daily=pnl.gov@xxxxxxx [autoconf-bounces+jeff.daily=pnl.gov@xxxxxxx] On Behalf Of Jim Edwards [edwards.jim@xxxxxxxxx]
> Sent: Wednesday, May 11, 2011 4:51 PM
> To: autoconf@xxxxxxx
> Subject: autotools on aix
> 
> I am trying to port a model to AIX.   The model uses cc cxx and fc
> compilers.
> The problem is that the IBM xlf compilers do not recognize the -D
> preprocessor flag and I am at my wits end trying to
> get the tools to do the right thing.
>
> I can handle a conditional edit of the FCFLAGS in configure.in
>
>  FCFLAGS=$(echo $FCFLAGS | sed 's/-D/-WF,-D/g')
> 
> but problems hound me.
> 
> 1.  CPPFLAGS is used in PPFCCOMPILE and LTPPFCCOMPILE  but since CPPFLAGS is
> also used for c and cxx I can't substitute that.
> 2. DEFS= -DHAVE_CONFIG_H is also defined and used in the same places
> 3. libtool defines  pic_flag=' -DPIC'
> 
> Anyone have a good solution?

This is the solution we chose.  We are aware of the IBM xlf compilers as well as the Fujitsu compilers having this kind of behavior.  We test for all three cases, and if it's the more common -D case, we don't change anything.  If it's one of the unusual cases, we change FFLAGS.  YMMV.  I hope this helps.  Hopefully you can copy and past it into an *.m4 of your own.  This comes from our Global Arrays toolkit (http://www.emsl.pnl.gov/docs/global/), hence the GA_* or ga_* prefix on most things.

# GA_F77_CPP_SYMBOL([ACTION-WHEN-FOUND])
# --------------------------------------
# Detect how to pass CPP symbols to preprocessed Fortran 77.
#
# Known:
#  -D       the usual
#  -WF,-D   IBM xlf
#  -Wp,-D   Fujitsu
#
AC_DEFUN([GA_F77_CPP_SYMBOL],
[AC_CACHE_CHECK([how to pass symbols to preprocessed $F77],
[ga_cv_f77_cpp_symbol],
[AC_LANG_PUSH([Fortran 77])
ac_ext=F
for symbol in -D -WF,-D -Wp,-D
do
    ga_save_CPPFLAGS="$CPPFLAGS"
    ga_save_FFLAGS="$FFLAGS"
    CPPFLAGS="$CPPFLAGS ${symbol}GABLAHBLAH"
    FFLAGS="$CPPFLAGS $FFLAGS"
    AC_COMPILE_IFELSE(
[[#ifndef GABLAHBLAH
this is an error
#endif
      end program]],
        [ga_cv_f77_cpp_symbol="$symbol"])
    CPPFLAGS="$ga_save_CPPFLAGS"
    FFLAGS="$ga_save_FFLAGS"
    AS_IF([test "x$ga_cv_f77_cpp_symbol" != x], [break])
done
AC_LANG_POP([Fortran 77])
])
AS_IF([test "x$ga_cv_f77_cpp_symbol" = x],
    [AC_MSG_ERROR([don't know how to pass symbols to preprocessed Fortran])])
m4_default([$1],
    [AS_CASE([$ga_cv_f77_cpp_symbol],
        [-D],   [],
        [FFLAGS="$FFLAGS ${ga_cv_f77_cpp_symbol}HAVE_CONFIG_H"])])
]) # GA_F77_CPP_SYMBOL

_______________________________________________
Autoconf mailing list
Autoconf@xxxxxxx
https://lists.gnu.org/mailman/listinfo/autoconf


[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux