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