Ticket #1959: AC_TRY_RUN crosscompile break

We have several AC_TRY_RUN's in the configure/m4 stuff,
which obviously breaks crosscompiling.

This changeset contain fixies for S-Lang library. First try to search
library via 'pkg-config slang' and then try to go in old search way.
Macro AC_TRY_RUN() now replaced by AC_RUN_IFELSE()

Also, next changes was made:
 * Removed AC_TRY_RUN() from gmodule checking code.
 * More accuracy in grepping of SLANG_VERSION defined constant
 * avoid autoconf error 'suspicious presence of an AC_DEFINE in the second argument, where no actions should be taken'

Signed-off-by: Slava Zanko <slavazanko@gmail.com>
This commit is contained in:
Slava Zanko 2010-03-30 16:10:44 +03:00
parent 0bad072ae6
commit da583e5739
3 changed files with 77 additions and 65 deletions

View File

@ -21,6 +21,7 @@ AC_CANONICAL_HOST
AC_USE_SYSTEM_EXTENSIONS
AC_PROG_LIBTOOL
PKG_PROG_PKG_CONFIG
AC_ISC_POSIX

View File

@ -4,30 +4,22 @@ dnl on this system. We need to know that at the compile time to
dnl decide whether to link with X11.
dnl
AC_DEFUN([AC_G_MODULE_SUPPORTED], [
AC_CACHE_CHECK([if gmodule functionality is supported], mc_cv_g_module_supported, [
ac_save_CFLAGS="$CFLAGS"
ac_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $GMODULE_CFLAGS"
LIBS="$GMODULE_LIBS $LIBS"
AC_TRY_RUN([
#include <gmodule.h>
int main ()
{
int ret = (g_module_supported () == TRUE) ? 0 : 1;
return ret;
}
],
[mc_cv_g_module_supported=yes],
[mc_cv_g_module_supported=no],
[mc_cv_g_module_supported=no]
)
CFLAGS="$ac_save_CFLAGS"
LIBS="$ac_save_LIBS"
])
if test x"$mc_cv_g_module_supported" = xyes; then
AC_DEFINE(HAVE_GMODULE, 1,
[Define if gmodule functionality is supported])
AC_CACHE_CHECK([if gmodule functionality is supported],
[mc_cv_g_module_supported],
[
mc_cv_g_module_supported=no;
PKG_CHECK_MODULES(GMODULE, [gmodule-2.0 >= 2.8], [found_gmodule=yes], [:])
if test x"$found_gmodule" = "xyes"; then
mc_cv_g_module_supported=yes
fi
])
if test x"$mc_cv_g_module_supported" = "xyes"; then
if test x`$PKG_CONFIG --variable=gmodule_supported gmodule-2.0` = xtrue; then
GLIB_LIBS="$GMODULE_LIBS $GLIB_LIBS"
CFLAGS="$GMODULE_CFLAGS $CFLAGS"
AC_DEFINE([HAVE_GMODULE], [1],
[Defined if gmodule functionality is supported])
fi
fi
])

View File

@ -4,15 +4,15 @@ dnl If not, and $1 is "strict", exit.
dnl
AC_DEFUN([MC_CHECK_SLANG_BY_PATH], [
ac_slang_inc_path=[$1]
ac_slang_lib_path=[$2]
param_slang_inc_path=[$1]
param_slang_lib_path=[$2]
if test x"$ac_slang_inc_path" != x; then
ac_slang_inc_path="-I"$ac_slang_inc_path
if test x"$param_slang_inc_path" != x; then
ac_slang_inc_path="-I"$param_slang_inc_path
fi
if test x"$ac_slang_lib_path" != x; then
ac_slang_lib_path="-L"$ac_slang_lib_path
if test x"$param_slang_lib_path" != x; then
ac_slang_lib_path="-L"$param_slang_lib_path
fi
saved_CFLAGS="$CFLAGS"
@ -57,6 +57,7 @@ AC_DEFUN([MC_CHECK_SLANG_BY_PATH], [
fi
found_slang=yes
AC_DEFINE(HAVE_SLANG_SLANG_H, 1,[Define to use slang.h])
CFLAGS="-DHAVE_SLANG_SLANG_H $CFLAGS"
],
[
AC_MSG_RESULT(no)
@ -66,39 +67,10 @@ AC_DEFUN([MC_CHECK_SLANG_BY_PATH], [
)
],
)
dnl Check if termcap is needed.
dnl This check must be done before anything is linked against S-Lang.
if test x"$found_slang" = x"yes"; then
CFLAGS="$saved_CFLAGS $ac_slang_inc_path $ac_slang_lib_path"
LDFLAGS="$saved_LDFLAGS $ac_slang_lib_path"
CPPFLAGS="$saved_CPPFLAGS $ac_slang_inc_path $ac_slang_lib_path"
MC_SLANG_TERMCAP
if test x"$mc_cv_slang_termcap" = x"yes"; then
ac_slang_lib_path="$ac_slang_lib_path -ltermcap"
CFLAGS="$saved_CFLAGS $ac_slang_inc_path $ac_slang_lib_path"
CPPFLAGS="$saved_CPPFLAGS $ac_slang_inc_path $ac_slang_lib_path"
LDFLAGS="$saved_LDFLAGS $ac_slang_lib_path"
fi
fi
dnl Check the library
if test x"$found_slang" = x"yes"; then
unset ac_cv_lib_slang_SLang_init_tty
AC_CHECK_LIB(
[slang],
[SLang_init_tty],
[:],
[
found_slang=no
error_msg_slang="S-lang library not found"
]
)
fi
dnl check if S-Lang have version 2.0 or newer
if test x"$found_slang" = x"yes"; then
AC_MSG_CHECKING([for S-Lang version 2.0 or newer])
AC_TRY_RUN([
AC_RUN_IFELSE([
#ifdef HAVE_SLANG_SLANG_H
#include <slang/slang.h>
#else
@ -115,7 +87,19 @@ int main (void)
],
[mc_slang_is_valid_version=yes],
[mc_slang_is_valid_version=no],
[mc_slang_is_valid_version=no]
[
if test -f "$param_slang_inc_path/slang/slang.h" ; then
hdr_file="$param_slang_inc_path/slang/slang.h"
else
hdr_file="$param_slang_inc_path/slang.h"
fi
mc_slang_is_valid_version=`grep '^#define SLANG_VERSION[[:space:]]' "$hdr_file"| sed s'/^#define SLANG_VERSION[[:space:]]*//'`
if test "$mc_slang_is_valid_version" -ge "20000"; then
mc_slang_is_valid_version=yes
else
mc_slang_is_valid_version=no
fi
]
)
if test x$mc_slang_is_valid_version = xno; then
found_slang=no
@ -124,6 +108,29 @@ int main (void)
AC_MSG_RESULT($mc_slang_is_valid_version)
fi
dnl Check if termcap is needed.
dnl This check must be done before anything is linked against S-Lang.
if test x"$found_slang" = x"yes"; then
MC_SLANG_TERMCAP
if test x"$mc_cv_slang_termcap" = x"yes"; then
saved_CPPFLAGS="-ltermcap $saved_CPPFLAGS "
saved_LDFLAGS="-ltermcap $saved_LDFLAGS"
fi
dnl Check the library
unset ac_cv_lib_slang_SLang_init_tty
AC_CHECK_LIB(
[slang],
[SLang_init_tty],
[:],
[
found_slang=no
error_msg_slang="S-lang library not found"
]
)
fi
dnl Unless external S-Lang was requested, reject S-Lang with UTF-8 hacks
if test x"$found_slang" = x"yes"; then
unset ac_cv_lib_slang_SLsmg_write_nwchars
@ -145,8 +152,8 @@ int main (void)
AC_DEFINE(HAVE_SLANG, 1,
[Define to use S-Lang library for screen management])
MCLIBS="$MCLIBS $ac_slang_lib_path -lslang"
CFLAGS="$saved_CFLAGS"
MCLIBS="$ac_slang_lib_path -lslang $MCLIBS"
CFLAGS="$ac_slang_inc_path $saved_CFLAGS"
dnl do not reset CPPFLAGS
dnl - if CPPFLAGS are resetted then cpp does not find the specified header
LDFLAGS="$saved_LDFLAGS"
@ -180,15 +187,27 @@ AC_DEFUN([MC_WITH_SLANG], [
[ac_slang_lib_path="$withval"],
[ac_slang_lib_path=""]
)
echo 'checking SLANG-headers in default place ...'
if test x"$ac_slang_lib_path" != x -o x"$ac_slang_inc_path" != x; then
echo 'checking SLANG-headers in specified place ...'
MC_CHECK_SLANG_BY_PATH([$ac_slang_inc_path],[$ac_slang_lib_path])
else
found_slang=no
PKG_CHECK_MODULES(SLANG, [slang >= 2.0], [found_slang=yes], [:])
if test x"$found_slang" = "xyes"; then
MCLIBS="$SLANG_LIBS $MCLIBS"
CFLAGS="$SLANG_CFLAGS $CFLAGS"
fi
fi
if test x"$found_slang" = "xno"; then
found_slang=yes
ac_slang_inc_path="/usr/include"
ac_slang_lib_path="/usr/lib"
echo 'checking SLANG-headers in /usr ...'
MC_CHECK_SLANG_BY_PATH([$ac_slang_inc_path],[$ac_slang_lib_path])
if test x"$found_slang" = "xno"; then
found_slang=yes
ac_slang_inc_path="/usr/local/include"
ac_slang_lib_path="/usr/local/lib"