Get rid of Source/autotools/webkit.m4

https://bugs.webkit.org/show_bug.cgi?id=77833

Patch by Priit Laes <plaes@plaes.org> on 2012-02-07
Reviewed by Martin Robinson.

Move checks from webkit.m4 to configure.ac and modernize macros:
  . Check for visibility flags after CXX has been defined
  . Use PKG_PROG_PKG_CONFIG for pkg-config lookup
  . Drop unused LIBFFTW_REQUIRED_VERSION
  . Update ICU libs for mingw (bug 77837).
  . Require Pango 1.21.0 (as per unicode backend)
  . Bump minimum glib version due to g_thread_init changes

* Source/autotools/webkit.m4: Removed.
* configure.ac:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@107016 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 74b0108a
2012-02-07 Priit Laes <plaes@plaes.org>
Get rid of Source/autotools/webkit.m4
https://bugs.webkit.org/show_bug.cgi?id=77833
Reviewed by Martin Robinson.
Move checks from webkit.m4 to configure.ac and modernize macros:
. Check for visibility flags after CXX has been defined
. Use PKG_PROG_PKG_CONFIG for pkg-config lookup
. Drop unused LIBFFTW_REQUIRED_VERSION
. Update ICU libs for mingw (bug 77837).
. Require Pango 1.21.0 (as per unicode backend)
. Bump minimum glib version due to g_thread_init changes
* Source/autotools/webkit.m4: Removed.
* configure.ac:
2012-02-07 Ryosuke Niwa <rniwa@webkit.org>
Dashboard on perf-o-matic should be sorted
......
dnl macros to check for JavaScriptCore and WebKit/Gtk+ dependencies
dnl
dnl The rationale is so that we can share these macros between
dnl WebKit and JavaScriptCore builds.
# global states
m4_define([initialized], [no])
AC_DEFUN([INIT_C_CXX_FLAGS],
[dnl
# If CXXFLAGS and CFLAGS are unset, default to empty.
# This is to tell automake not to include '-g' if CXXFLAGS is not set
# For more info - http://www.gnu.org/software/automake/manual/autoconf.html#C_002b_002b-Compiler
if test -z "$CXXFLAGS"; then
CXXFLAGS=""
fi
if test -z "$CFLAGS"; then
CFLAGS=""
fi
])
AC_DEFUN_ONCE([WEBKIT_INIT],
[dnl
dnl check if we have the required packages to have successful checks
dnl
# Make sure CXXFLAGS and CFLAGS are set before expanding AC_PROG_CXX to avoid
# building with '-g -O2' on Release builds.
AC_REQUIRE([INIT_C_CXX_FLAGS])
# check for -fvisibility=hidden compiler support (GCC >= 4)
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fvisibility=hidden -fvisibility-inlines-hidden"
AC_MSG_CHECKING([if ${CXX} supports -fvisibility=hidden -fvisibility-inlines-hidden])
AC_COMPILE_IFELSE([AC_LANG_SOURCE([char foo;])],
[ AC_MSG_RESULT([yes])
SYMBOL_VISIBILITY="-fvisibility=hidden" SYMBOL_VISIBILITY_INLINES="-fvisibility-inlines-hidden" ],
AC_MSG_RESULT([no]))
CFLAGS="$saved_CFLAGS"
AC_SUBST(SYMBOL_VISIBILITY)
AC_SUBST(SYMBOL_VISIBILITY_INLINES)
# check for pkg-config
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
if test "$PKG_CONFIG" = "no"; then
AC_MSG_ERROR([Cannot find pkg-config, make sure it is installed in your PATH])
fi
AC_PATH_PROG(PERL, perl)
if test -z "$PERL"; then
AC_MSG_ERROR([You need 'perl' to compile WebKit])
fi
AC_PATH_PROG(PYTHON, python)
if test -z "$PYTHON"; then
AC_MSG_ERROR([You need 'python' to compile WebKit])
fi
AC_PATH_PROG(BISON, bison)
if test -z "$BISON"; then
AC_MSG_ERROR([You need the 'bison' parser generator to compile WebKit])
fi
AC_PATH_PROG(MV, mv)
if test -z "$MV"; then
AC_MSG_ERROR([You need 'mv' to compile WebKit])
fi
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([AC_PROG_CXX])
AM_PROG_CC_STDC
AM_PROG_CC_C_O
AC_PROG_INSTALL
AC_SYS_LARGEFILE
# Check whether a C++ was found (AC_PROG_CXX sets $CXX to "g++" even when it
# doesn't exist)
AC_LANG_PUSH([C++])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],[],[AC_MSG_ERROR([No C++ compiler found])])
AC_LANG_POP([C++])
# C/C++ Language Features
AC_C_CONST
AC_C_INLINE
AC_C_VOLATILE
# C/C++ Headers
AC_REQUIRE([AC_HEADER_STDC])
AC_HEADER_STDBOOL
m4_define([initialized], [yes])
])
AC_DEFUN_ONCE([WEBKIT_CHECK_DEPENDENCIES],
[dnl
dnl check for module dependencies
for module in $1
do
case $module in
glib) _WEBKIT_CHECK_GLIB ;;
unicode) _WEBKIT_CHECK_UNICODE ;;
*) AC_MSG_ERROR([I don't support that module. Sorry..]) ;;
esac
done
])
AC_DEFUN_ONCE([_WEBKIT_CHECK_GLIB],
[dnl
dnl check for glib
# Version requirements
GLIB_REQUIRED_VERSION=2.27.90
AM_PATH_GLIB_2_0($GLIB_REQUIRED_VERSION)
if test -z "$GLIB_GENMARSHAL" || test -z "$GLIB_MKENUMS"; then
AC_MSG_ERROR([You need the GLib dev tools in your path])
fi
GLIB_GSETTINGS
])
AC_DEFUN_ONCE([_WEBKIT_CHECK_UNICODE],
[dnl
dnl determine the Unicode backend
AC_MSG_CHECKING([which Unicode backend to use])
AC_ARG_WITH(unicode_backend,
AC_HELP_STRING([--with-unicode-backend=@<:@icu/glib@:>@],
[Select Unicode backend (WARNING: the glib-based backend is slow, and incomplete) [default=icu]]),
[],[with_unicode_backend="icu"])
case "$with_unicode_backend" in
icu|glib) ;;
*) AC_MSG_ERROR([Invalid Unicode backend: must be icu or glib.]) ;;
esac
AC_MSG_RESULT([$with_unicode_backend])
if test "$with_unicode_backend" = "icu"; then
case "$host" in
*-*-darwin*)
UNICODE_CFLAGS="-I$srcdir/Source/JavaScriptCore/icu -I$srcdir/Source/WebCore/icu"
UNICODE_LIBS="-licucore"
;;
*-*-mingw*)
UNICODE_CFLAGS=""
UNICODE_LIBS="-licuin -licuuc"
;;
*)
AC_PATH_PROG(icu_config, icu-config, no)
if test "$icu_config" = "no"; then
AC_MSG_ERROR([Cannot find icu-config. The ICU library is needed.])
fi
# We don't use --cflags as this gives us a lot of things that we don't
# necessarily want, like debugging and optimization flags
# See man (1) icu-config for more info.
UNICODE_CFLAGS=`$icu_config --cppflags`
UNICODE_LIBS=`$icu_config --ldflags-libsonly`
;;
esac
fi
if test "$with_unicode_backend" = "glib"; then
PKG_CHECK_MODULES([UNICODE], [glib-2.0 pango >= 1.21.0])
fi
AC_SUBST([UNICODE_CFLAGS])
AC_SUBST([UNICODE_LIBS])
PKG_CHECK_MODULES([ZLIB], [zlib])
AC_SUBST([ZLIB_CFLAGS])
AC_SUBST([ZLIB_LIBS])
])
......@@ -77,8 +77,61 @@ case "$host_os" in
;;
esac
# initialize webkit options
WEBKIT_INIT
# If CFLAGS and CXXFLAGS are unset, default to empty.
# This is to tell automake not to include '-g' if C{XX,}FLAGS is not set
# For more info - http://www.gnu.org/software/automake/manual/autoconf.html#C_002b_002b-Compiler
if test -z "$CXXFLAGS"; then
CXXFLAGS=""
fi
if test -z "$CFLAGS"; then
CFLAGS=""
fi
PKG_PROG_PKG_CONFIG
AC_PATH_PROG(PERL, perl)
if test -z "$PERL"; then
AC_MSG_ERROR([You need 'perl' to compile WebKit])
fi
AC_PATH_PROG(PYTHON, python)
if test -z "$PYTHON"; then
AC_MSG_ERROR([You need 'python' to compile WebKit])
fi
AC_PATH_PROG(BISON, bison)
if test -z "$BISON"; then
AC_MSG_ERROR([You need the 'bison' parser generator to compile WebKit])
fi
AC_PATH_PROG(MV, mv)
if test -z "$MV"; then
AC_MSG_ERROR([You need 'mv' to compile WebKit])
fi
AC_PROG_CC
AC_PROG_CXX
AM_PROG_CC_STDC
AM_PROG_CC_C_O
AC_PROG_INSTALL
AC_SYS_LARGEFILE
# Check whether a C++ was found (AC_PROG_CXX sets $CXX to "g++" even when it
# doesn't exist)
AC_LANG_PUSH([C++])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],[],[AC_MSG_ERROR([No C++ compiler found])])
AC_LANG_POP([C++])
# C/C++ Language Features
AC_C_CONST
AC_C_INLINE
AC_C_VOLATILE
# C/C++ Headers
AC_HEADER_STDC
AC_HEADER_STDBOOL
# Linker
AC_DISABLE_STATIC
AC_LIBTOOL_WIN32_DLL
AC_PROG_LIBTOOL
......@@ -99,6 +152,18 @@ if test -z "$GPERF"; then
AC_MSG_ERROR([You need the 'gperf' hash function generator to compile WebKit])
fi
# check for -fvisibility=hidden compiler support (GCC >= 4)
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fvisibility=hidden -fvisibility-inlines-hidden"
AC_MSG_CHECKING([if ${CXX} supports -fvisibility=hidden -fvisibility-inlines-hidden])
AC_COMPILE_IFELSE([AC_LANG_SOURCE([char foo;])],
[ AC_MSG_RESULT([yes])
SYMBOL_VISIBILITY="-fvisibility=hidden" SYMBOL_VISIBILITY_INLINES="-fvisibility-inlines-hidden" ],
AC_MSG_RESULT([no]))
CFLAGS="$saved_CFLAGS"
AC_SUBST(SYMBOL_VISIBILITY)
AC_SUBST(SYMBOL_VISIBILITY_INLINES)
# Disable C++0x compat warnings for GCC >= 4.6.0 until we build
# cleanly with that.
AC_LANG_PUSH(C++)
......@@ -309,31 +374,79 @@ AC_DEFINE([GST_API_VERSION_1],[1], [Using GStreamer 0.11])
fi
# minimum base dependencies
LIBSOUP_REQUIRED_VERSION=2.37.2.1
CAIRO_REQUIRED_VERSION=1.10
FONTCONFIG_REQUIRED_VERSION=2.4
FREETYPE2_REQUIRED_VERSION=9.0
GLIB_REQUIRED_VERSION=2.31.2
LIBSOUP_REQUIRED_VERSION=2.37.2.1
LIBXML_REQUIRED_VERSION=2.6
# minimum GTK+ base dependencies
PANGO_REQUIRED_VERSION=1.12
PANGO_REQUIRED_VERSION=1.21.0
# optional modules
LIBXSLT_REQUIRED_VERSION=1.1.7
SQLITE_REQUIRED_VERSION=3.0
ENCHANT_REQUIRED_VERSION=0.22
LIBFFTW_REQUIRED_VERSION=3.2.2
CLUTTER_REQUIRED_VERSION=1.8.2
CLUTTER_GTK_REQUIRED_VERSION=1.0.2
ATSPI2_REQUIRED_VERSION=2.2.1
# Available modules
#
# glib - glib and includes gthread
# unicode - check and identify which unicode backend to use
#
# todo: webcore gtk
WEBKIT_CHECK_DEPENDENCIES([glib unicode])
# Check for glib and required utilities
AM_PATH_GLIB_2_0($GLIB_REQUIRED_VERSION, :, :, gmodule gobject gthread gio)
if test -z "$GLIB_GENMARSHAL" || test -z "$GLIB_MKENUMS"; then
AC_MSG_ERROR([You need the GLib dev tools in your path])
fi
GLIB_GSETTINGS
# Check and identify which unicode backend to use
AC_MSG_CHECKING([which Unicode backend to use])
AC_ARG_WITH(unicode_backend,
AC_HELP_STRING([--with-unicode-backend=@<:@icu/glib@:>@],
[Select Unicode backend (WARNING: the glib-based backend is slow, and incomplete) [default=icu]]),
[],[with_unicode_backend="icu"])
case "$with_unicode_backend" in
icu|glib) ;;
*) AC_MSG_ERROR([Invalid Unicode backend: must be icu or glib.]) ;;
esac
AC_MSG_RESULT([$with_unicode_backend])
if test "$with_unicode_backend" = "icu"; then
# TODO: use pkg-config (after CFLAGS in their .pc files are cleaned up)
case "$host" in
*-*-darwin*)
UNICODE_CFLAGS="-I$srcdir/Source/JavaScriptCore/icu -I$srcdir/Source/WebCore/icu"
UNICODE_LIBS="-licucore"
;;
*-*-mingw*)
UNICODE_CFLAGS=""
UNICODE_LIBS="-licui18n -licuuc"
;;
*)
AC_PATH_PROG(icu_config, icu-config, no)
if test "$icu_config" = "no"; then
AC_MSG_ERROR([Cannot find icu-config. The ICU library is needed.])
fi
# We don't use --cflags as this gives us a lot of things that we don't
# necessarily want, like debugging and optimization flags
# See man (1) icu-config for more info.
UNICODE_CFLAGS=`$icu_config --cppflags`
UNICODE_LIBS=`$icu_config --ldflags-libsonly`
;;
esac
fi
if test "$with_unicode_backend" = "glib"; then
PKG_CHECK_MODULES([UNICODE], [glib-2.0 pango >= $PANGO_REQUIRED_VERSION])
fi
AC_SUBST([UNICODE_CFLAGS])
AC_SUBST([UNICODE_LIBS])
PKG_CHECK_MODULES([ZLIB], [zlib])
AC_SUBST([ZLIB_CFLAGS])
AC_SUBST([ZLIB_LIBS])
GETTEXT_PACKAGE=$PACKAGE-$GTK_API_VERSION
AC_SUBST(GETTEXT_PACKAGE)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment