1 dnl macros to check for JavaScriptCore and WebKit/Gtk+ dependencies 2 dnl 3 dnl The rationale is so that we can share these macros between 4 dnl WebKit and JavaScriptCore builds. 5 6 # global states 7 m4_define([initialized], [no]) 8 9 AC_DEFUN([INIT_C_CXX_FLAGS], 10 [dnl 11 # If CXXFLAGS and CFLAGS are unset, default to empty. 12 # This is to tell automake not to include '-g' if CXXFLAGS is not set 13 # For more info - http://www.gnu.org/software/automake/manual/autoconf.html#C_002b_002b-Compiler 14 if test -z "$CXXFLAGS"; then 15 CXXFLAGS="" 16 fi 17 if test -z "$CFLAGS"; then 18 CFLAGS="" 19 fi 20 ]) 21 22 AC_DEFUN_ONCE([WEBKIT_INIT], 23 [dnl 24 dnl check if we have the required packages to have successful checks 25 dnl 26 # Make sure CXXFLAGS and CFLAGS are set before expanding AC_PROG_CXX to avoid 27 # building with '-g -O2' on Release builds. 28 AC_REQUIRE([INIT_C_CXX_FLAGS]) 29 30 # check for -fvisibility=hidden compiler support (GCC >= 4) 31 saved_CFLAGS="$CFLAGS" 32 CFLAGS="$CFLAGS -fvisibility=hidden -fvisibility-inlines-hidden" 33 AC_MSG_CHECKING([if ${CXX} supports -fvisibility=hidden -fvisibility-inlines-hidden]) 34 AC_COMPILE_IFELSE([char foo;], 35 [ AC_MSG_RESULT([yes]) 36 SYMBOL_VISIBILITY="-fvisibility=hidden" SYMBOL_VISIBILITY_INLINES="-fvisibility-inlines-hidden" ], 37 AC_MSG_RESULT([no])) 38 CFLAGS="$saved_CFLAGS" 39 AC_SUBST(SYMBOL_VISIBILITY) 40 AC_SUBST(SYMBOL_VISIBILITY_INLINES) 41 42 # check for pkg-config 43 AC_PATH_PROG(PKG_CONFIG, pkg-config, no) 44 if test "$PKG_CONFIG" = "no"; then 45 AC_MSG_ERROR([Cannot find pkg-config, make sure it is installed in your PATH]) 46 fi 47 48 AC_PATH_PROG(PERL, perl) 49 if test -z "$PERL"; then 50 AC_MSG_ERROR([You need 'perl' to compile WebKit]) 51 fi 52 53 AC_PATH_PROG(BISON, bison) 54 if test -z "$BISON"; then 55 AC_MSG_ERROR([You need the 'bison' parser generator to compile WebKit]) 56 fi 57 58 AC_PATH_PROG(MV, mv) 59 if test -z "$MV"; then 60 AC_MSG_ERROR([You need 'mv' to compile WebKit]) 61 fi 62 63 AC_REQUIRE([AC_PROG_CC]) 64 AC_REQUIRE([AC_PROG_CXX]) 65 AM_PROG_CC_STDC 66 AM_PROG_CC_C_O 67 AC_PROG_INSTALL 68 AC_SYS_LARGEFILE 69 70 # Check whether a C++ was found (AC_PROG_CXX sets $CXX to "g++" even when it 71 # doesn't exist) 72 AC_LANG_PUSH([C++]) 73 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],[],[AC_MSG_ERROR([No C++ compiler found])]) 74 AC_LANG_POP([C++]) 75 76 # C/C++ Language Features 77 AC_C_CONST 78 AC_C_INLINE 79 AC_C_VOLATILE 80 81 # C/C++ Headers 82 AC_REQUIRE([AC_HEADER_STDC]) 83 AC_HEADER_STDBOOL 84 85 m4_define([initialized], [yes]) 86 ]) 87 88 AC_DEFUN_ONCE([WEBKIT_CHECK_DEPENDENCIES], 89 [dnl 90 dnl check for module dependencies 91 for module in $1 92 do 93 case $module in 94 glib) _WEBKIT_CHECK_GLIB ;; 95 unicode) _WEBKIT_CHECK_UNICODE ;; 96 *) AC_MSG_ERROR([I don't support that module. Sorry..]) ;; 97 98 esac 99 done 100 ]) 101 102 AC_DEFUN_ONCE([_WEBKIT_CHECK_GLIB], 103 [dnl 104 dnl check for glib 105 # Version requirements 106 GLIB_REQUIRED_VERSION=2.21.3 107 GOBJECT_REQUIRED_VERSION=2.0 108 GTHREAD_REQUIRED_VERSION=2.0 109 110 PKG_CHECK_MODULES([GLIB], 111 [glib-2.0 >= $GLIB_REQUIRED_VERSION 112 gobject-2.0 >= $GOBJECT_REQUIRED_VERSION 113 gthread-2.0 >= $GTHREAD_REQUIRED_VERSION]) 114 AC_SUBST([GLIB_CFLAGS]) 115 AC_SUBST([GLIB_LIBS]) 116 117 # GTK+ port only 118 # Check for glib-genmarshal and glib-mkenums 119 AC_PATH_PROG([GLIB_GENMARSHAL], [glib-genmarshal]) 120 AC_PATH_PROG([GLIB_MKENUMS],[glib-mkenums]) 121 if test -z "$GLIB_GENMARSHAL" || test -z "$GLIB_MKENUMS"; then 122 AC_MSG_ERROR([You need the GLib dev tools in your path]) 123 fi 124 ]) 125 126 AC_DEFUN_ONCE([_WEBKIT_CHECK_UNICODE], 127 [dnl 128 dnl determine the Unicode backend 129 AC_MSG_CHECKING([which Unicode backend to use]) 130 AC_ARG_WITH(unicode_backend, 131 AC_HELP_STRING([--with-unicode-backend=@<:@icu/glib@:>@], 132 [Select Unicode backend (WARNING: the glib-based backend is slow, and incomplete) [default=icu]]), 133 [],[with_unicode_backend="icu"]) 134 135 case "$with_unicode_backend" in 136 icu|glib) ;; 137 *) AC_MSG_ERROR([Invalid Unicode backend: must be icu or glib.]) ;; 138 esac 139 140 AC_MSG_RESULT([$with_unicode_backend]) 141 142 if test "$with_unicode_backend" = "icu"; then 143 case "$host" in 144 *-*-darwin*) 145 UNICODE_CFLAGS="-I$srcdir/JavaScriptCore/icu -I$srcdir/WebCore/icu" 146 UNICODE_LIBS="-licucore" 147 ;; 148 *-*-mingw*) 149 UNICODE_CFLAGS="" 150 UNICODE_LIBS="-licuin -licuuc" 151 ;; 152 *) 153 AC_PATH_PROG(icu_config, icu-config, no) 154 if test "$icu_config" = "no"; then 155 AC_MSG_ERROR([Cannot find icu-config. The ICU library is needed.]) 156 fi 157 158 # We don't use --cflags as this gives us a lot of things that we don't 159 # necessarily want, like debugging and optimization flags 160 # See man (1) icu-config for more info. 161 UNICODE_CFLAGS=`$icu_config --cppflags` 162 UNICODE_LIBS=`$icu_config --ldflags-libsonly` 163 ;; 164 esac 165 fi 166 167 if test "$with_unicode_backend" = "glib"; then 168 PKG_CHECK_MODULES([UNICODE], [glib-2.0 pango >= 1.21.0]) 169 fi 170 171 AC_SUBST([UNICODE_CFLAGS]) 172 AC_SUBST([UNICODE_LIBS]) 173 ]) 174