Home | History | Annotate | Download | only in autotools
      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