autotools/webkit.m4
changeset 0 4f2f89ce4247
equal deleted inserted replaced
-1:000000000000 0:4f2f89ce4247
       
     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(PYTHON, python)
       
    54 if test -z "$PYTHON"; then
       
    55    AC_MSG_ERROR([You need 'python' to compile WebKit])
       
    56 fi
       
    57 
       
    58 AC_PATH_PROG(BISON, bison)
       
    59 if test -z "$BISON"; then
       
    60    AC_MSG_ERROR([You need the 'bison' parser generator to compile WebKit])
       
    61 fi
       
    62 
       
    63 AC_PATH_PROG(MV, mv)
       
    64 if test -z "$MV"; then
       
    65    AC_MSG_ERROR([You need 'mv' to compile WebKit])
       
    66 fi
       
    67 
       
    68 AC_REQUIRE([AC_PROG_CC])
       
    69 AC_REQUIRE([AC_PROG_CXX])
       
    70 AM_PROG_CC_STDC
       
    71 AM_PROG_CC_C_O
       
    72 AC_PROG_INSTALL
       
    73 AC_SYS_LARGEFILE
       
    74 
       
    75 # Check whether a C++ was found (AC_PROG_CXX sets $CXX to "g++" even when it
       
    76 # doesn't exist)
       
    77 AC_LANG_PUSH([C++])
       
    78 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],[],[AC_MSG_ERROR([No C++ compiler found])])
       
    79 AC_LANG_POP([C++])
       
    80 
       
    81 # C/C++ Language Features
       
    82 AC_C_CONST
       
    83 AC_C_INLINE
       
    84 AC_C_VOLATILE
       
    85 
       
    86 # C/C++ Headers
       
    87 AC_REQUIRE([AC_HEADER_STDC])
       
    88 AC_HEADER_STDBOOL
       
    89 
       
    90 m4_define([initialized], [yes])
       
    91 ])
       
    92 
       
    93 AC_DEFUN_ONCE([WEBKIT_CHECK_DEPENDENCIES],
       
    94 [dnl
       
    95 dnl check for module dependencies
       
    96 for module in $1
       
    97 do
       
    98     case $module in
       
    99         glib) _WEBKIT_CHECK_GLIB ;;
       
   100         unicode) _WEBKIT_CHECK_UNICODE ;;
       
   101         *) AC_MSG_ERROR([I don't support that module. Sorry..]) ;;
       
   102 
       
   103     esac
       
   104 done
       
   105 ])
       
   106 
       
   107 AC_DEFUN_ONCE([_WEBKIT_CHECK_GLIB],
       
   108 [dnl
       
   109 dnl check for glib
       
   110 # Version requirements
       
   111 GLIB_REQUIRED_VERSION=2.21.3
       
   112 GOBJECT_REQUIRED_VERSION=2.0
       
   113 GTHREAD_REQUIRED_VERSION=2.0
       
   114 
       
   115 PKG_CHECK_MODULES([GLIB],
       
   116                   [glib-2.0 >= $GLIB_REQUIRED_VERSION
       
   117                   gobject-2.0 >= $GOBJECT_REQUIRED_VERSION
       
   118                   gthread-2.0 >= $GTHREAD_REQUIRED_VERSION])
       
   119 AC_SUBST([GLIB_CFLAGS])
       
   120 AC_SUBST([GLIB_LIBS])
       
   121 
       
   122 # GTK+ port only
       
   123 # Check for glib-genmarshal and glib-mkenums
       
   124 AC_PATH_PROG([GLIB_GENMARSHAL], [glib-genmarshal])
       
   125 AC_PATH_PROG([GLIB_MKENUMS],[glib-mkenums])
       
   126 if test -z "$GLIB_GENMARSHAL" || test -z "$GLIB_MKENUMS"; then
       
   127    AC_MSG_ERROR([You need the GLib dev tools in your path])
       
   128 fi
       
   129 ])
       
   130 
       
   131 AC_DEFUN_ONCE([_WEBKIT_CHECK_UNICODE],
       
   132 [dnl
       
   133 dnl determine the Unicode backend
       
   134 AC_MSG_CHECKING([which Unicode backend to use])
       
   135 AC_ARG_WITH(unicode_backend,
       
   136             AC_HELP_STRING([--with-unicode-backend=@<:@icu/glib@:>@],
       
   137                            [Select Unicode backend (WARNING: the glib-based backend is slow, and incomplete) [default=icu]]),
       
   138             [],[with_unicode_backend="icu"])
       
   139 
       
   140 case "$with_unicode_backend" in
       
   141      icu|glib) ;;
       
   142      *) AC_MSG_ERROR([Invalid Unicode backend: must be icu or glib.]) ;;
       
   143 esac
       
   144 
       
   145 AC_MSG_RESULT([$with_unicode_backend])
       
   146 
       
   147 if test "$with_unicode_backend" = "icu"; then
       
   148         case "$host" in
       
   149             *-*-darwin*)
       
   150 		UNICODE_CFLAGS="-I$srcdir/JavaScriptCore/icu -I$srcdir/WebCore/icu"
       
   151 		UNICODE_LIBS="-licucore"
       
   152                 ;;
       
   153             *-*-mingw*)
       
   154 		UNICODE_CFLAGS=""
       
   155 		UNICODE_LIBS="-licuin -licuuc"
       
   156                 ;;
       
   157             *)
       
   158 		AC_PATH_PROG(icu_config, icu-config, no)
       
   159 		if test "$icu_config" = "no"; then
       
   160 			AC_MSG_ERROR([Cannot find icu-config. The ICU library is needed.])
       
   161 		fi
       
   162 
       
   163 		# We don't use --cflags as this gives us a lot of things that we don't
       
   164 		# necessarily want, like debugging and optimization flags
       
   165 		# See man (1) icu-config for more info.
       
   166 		UNICODE_CFLAGS=`$icu_config --cppflags`
       
   167 		UNICODE_LIBS=`$icu_config --ldflags-libsonly`
       
   168                 ;;
       
   169         esac
       
   170 fi
       
   171 
       
   172 if test "$with_unicode_backend" = "glib"; then
       
   173 	PKG_CHECK_MODULES([UNICODE], [glib-2.0 pango >= 1.21.0])
       
   174 fi
       
   175 
       
   176 AC_SUBST([UNICODE_CFLAGS])
       
   177 AC_SUBST([UNICODE_LIBS])
       
   178 ])