b3d13ea7fc2dcc6c563015cd4989cc672c7d1bb1
[WebKit-https.git] / Source / autotools / CheckSystemAndBasicDependencies.m4
1 AC_CANONICAL_HOST
2 AC_MSG_CHECKING([for native Win32])
3 case "$host" in
4      *-*-mingw*)
5        os_win32=yes
6        ;;
7      *)
8        os_win32=no
9        ;;
10 esac
11 AC_MSG_RESULT([$os_win32])
12
13 case "$host" in
14      *-*-linux*)
15        os_linux=yes
16        ;;
17      *-*-freebsd*)
18        os_freebsd=yes
19        ;;
20      *-*-darwin*)
21        os_darwin=yes
22        ;;
23 esac
24
25 case "$host_os" in
26      gnu* | linux* | k*bsd*-gnu)
27        os_gnu=yes
28        ;;
29      *)
30        os_gnu=no
31        ;;
32 esac
33
34 AC_PATH_PROG(PERL, perl)
35 if test -z "$PERL"; then
36     AC_MSG_ERROR([You need 'perl' to compile WebKit])
37 fi
38
39 AC_PATH_PROG(PYTHON, python)
40 if test -z "$PYTHON"; then
41     AC_MSG_ERROR([You need 'python' to compile WebKit])
42 fi
43
44 AC_PATH_PROG(RUBY, ruby)
45 if test -z "$RUBY"; then
46     AC_MSG_ERROR([You need 'ruby' to compile WebKit])
47 fi
48
49 AC_PATH_PROG(BISON, bison)
50 if test -z "$BISON"; then
51     AC_MSG_ERROR([You need the 'bison' parser generator to compile WebKit])
52 fi
53
54 AC_PATH_PROG(MV, mv)
55 if test -z "$MV"; then
56     AC_MSG_ERROR([You need 'mv' to compile WebKit])
57 fi
58
59 AC_PATH_PROG(GPERF, gperf)
60 if test -z "$GPERF"; then
61     AC_MSG_ERROR([You need the 'gperf' hash function generator to compile WebKit])
62 fi
63
64 AC_PATH_PROG(FLEX, flex)
65 if test -z "$FLEX"; then
66     AC_MSG_ERROR([You need the 'flex' lexer generator to compile WebKit])
67 else
68     FLEX_VERSION=`$FLEX --version | sed 's,.*\ \([0-9]*\.[0-9]*\.[0-9]*\)$,\1,'`
69     AX_COMPARE_VERSION([2.5.33],[gt],[$FLEX_VERSION],
70         AC_MSG_WARN([You need at least version 2.5.33 of the 'flex' lexer generator to compile WebKit correctly]))
71 fi
72
73 # If CFLAGS and CXXFLAGS are unset, default to empty.
74 # This is to tell automake not to include '-g' if C{XX,}FLAGS is not set.
75 # For more info - http://www.gnu.org/software/automake/manual/autoconf.html#C_002b_002b-Compiler
76 if test -z "$CXXFLAGS"; then
77     CXXFLAGS=""
78 fi
79 if test -z "$CFLAGS"; then
80     CFLAGS=""
81 fi
82
83 AC_PROG_CC
84 AC_PROG_CXX
85 AC_PROG_INSTALL
86 AC_SYS_LARGEFILE
87
88 # Check whether a C++ was found (AC_PROG_CXX sets $CXX to "g++" even when it doesn't exist).
89 AC_LANG_PUSH([C++])
90 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],[],[AC_MSG_ERROR([No C++ compiler found])])
91 AC_LANG_POP([C++])
92
93 # C/C++ Language Features
94 AC_C_CONST
95 AC_C_INLINE
96 AC_C_VOLATILE
97
98 # C/C++ Headers
99 AC_HEADER_STDC
100 AC_HEADER_STDBOOL
101
102 # Check for -fvisibility=hidden compiler support (GCC >= 4).
103 saved_CFLAGS="$CFLAGS"
104 CFLAGS="$CFLAGS -fvisibility=hidden -fvisibility-inlines-hidden"
105 AC_MSG_CHECKING([if ${CXX} supports -fvisibility=hidden -fvisibility-inlines-hidden])
106 AC_COMPILE_IFELSE([AC_LANG_SOURCE([char foo;])], [AC_MSG_RESULT([yes])
107     SYMBOL_VISIBILITY="-fvisibility=hidden" SYMBOL_VISIBILITY_INLINES="-fvisibility-inlines-hidden"], [AC_MSG_RESULT([no])])
108 CFLAGS="$saved_CFLAGS"
109 AC_SUBST(SYMBOL_VISIBILITY)
110 AC_SUBST(SYMBOL_VISIBILITY_INLINES)
111
112 # Disable C++0x compat warnings for GCC >= 4.6.0 until we build cleanly with that.
113 AC_LANG_PUSH(C++)
114 TMPCXXFLAGS=$CXXFLAGS
115 CXXFLAGS="-Wall -Werror"
116 AC_MSG_CHECKING([if we have to disable C++0x compat warnings for GCC >= 4.6.0])
117 AC_TRY_COMPILE([
118 namespace std {
119     class nullptr_t { };
120 }
121 extern std::nullptr_t nullptr;
122 ], [return 0;], disable_cxx0x_compat=no, disable_cxx0x_compat=yes)
123 AC_MSG_RESULT($disable_cxx0x_compat)
124 if test "$disable_cxx0x_compat" = yes; then
125     CXXFLAGS="$TMPCXXFLAGS -Wno-c++0x-compat"
126 else
127     CXXFLAGS="$TMPCXXFLAGS"
128 fi
129 AC_LANG_POP(C++)
130