diff options
Diffstat (limited to 'Source/autotools/webkit.m4')
-rw-r--r-- | Source/autotools/webkit.m4 | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/Source/autotools/webkit.m4 b/Source/autotools/webkit.m4 new file mode 100644 index 0000000..4d8cf74 --- /dev/null +++ b/Source/autotools/webkit.m4 @@ -0,0 +1,178 @@ +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([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.24 +GOBJECT_REQUIRED_VERSION=2.0 +GTHREAD_REQUIRED_VERSION=2.0 + +PKG_CHECK_MODULES([GLIB], + [glib-2.0 >= $GLIB_REQUIRED_VERSION + gobject-2.0 >= $GOBJECT_REQUIRED_VERSION + gthread-2.0 >= $GTHREAD_REQUIRED_VERSION]) +AC_SUBST([GLIB_CFLAGS]) +AC_SUBST([GLIB_LIBS]) + +# GTK+ port only +# Check for glib-genmarshal and glib-mkenums +AC_PATH_PROG([GLIB_GENMARSHAL], [glib-genmarshal]) +AC_PATH_PROG([GLIB_MKENUMS],[glib-mkenums]) +if test -z "$GLIB_GENMARSHAL" || test -z "$GLIB_MKENUMS"; then + AC_MSG_ERROR([You need the GLib dev tools in your path]) +fi +]) + +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]) +]) |