|
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 ]) |