[Autotools] Rework the build target selection
[WebKit-https.git] / Source / autotools / CheckSystemAndBasicDependencies.m4
1 AC_CANONICAL_HOST
2
3 os_win32=no
4 os_linux=no
5 os_freebsd=no
6 os_gnu=no
7
8 case "$host_os" in
9     mingw*)
10         os_win32=yes
11         ;;
12     freebsd*)
13         os_freebsd=yes
14         ;;
15     linux*)
16         os_linux=yes
17         os_gnu=yes
18         ;;
19     darwin*)
20         os_darwin=yes
21         ;;
22     gnu*|k*bsd*-gnu*)
23         os_gnu=yes
24         ;;
25 esac
26
27 AC_PATH_PROG(PERL, perl)
28 if test -z "$PERL"; then
29     AC_MSG_ERROR([You need 'perl' to compile WebKit])
30 fi
31
32 AC_PATH_PROG(PYTHON, python)
33 if test -z "$PYTHON"; then
34     AC_MSG_ERROR([You need 'python' to compile WebKit])
35 fi
36
37 AC_PATH_PROG(RUBY, ruby)
38 if test -z "$RUBY"; then
39     AC_MSG_ERROR([You need 'ruby' to compile WebKit])
40 fi
41
42 AC_PATH_PROG(BISON, bison)
43 if test -z "$BISON"; then
44     AC_MSG_ERROR([You need the 'bison' parser generator to compile WebKit])
45 fi
46
47 AC_PATH_PROG(MV, mv)
48 if test -z "$MV"; then
49     AC_MSG_ERROR([You need 'mv' to compile WebKit])
50 fi
51
52 AC_PATH_PROG(GREP, grep)
53 if test -z "$GREP"; then
54     AC_MSG_ERROR([You need 'grep' to compile WebKit])
55 fi
56
57 AC_PATH_PROG(GPERF, gperf)
58 if test -z "$GPERF"; then
59     AC_MSG_ERROR([You need the 'gperf' hash function generator to compile WebKit])
60 fi
61
62 AC_PATH_PROG(FLEX, flex)
63 if test -z "$FLEX"; then
64     AC_MSG_ERROR([You need the 'flex' lexer generator to compile WebKit])
65 else
66     FLEX_VERSION=`$FLEX --version | sed 's,.*\ \([0-9]*\.[0-9]*\.[0-9]*\)$,\1,'`
67     AX_COMPARE_VERSION([2.5.33],[gt],[$FLEX_VERSION],
68         AC_MSG_WARN([You need at least version 2.5.33 of the 'flex' lexer generator to compile WebKit correctly]))
69 fi
70
71 # If CFLAGS and CXXFLAGS are unset, default to empty.
72 # This is to tell automake not to include '-g' if C{XX,}FLAGS is not set.
73 # For more info - http://www.gnu.org/software/automake/manual/autoconf.html#C_002b_002b-Compiler
74 if test -z "$CXXFLAGS"; then
75     CXXFLAGS=""
76 fi
77 if test -z "$CFLAGS"; then
78     CFLAGS=""
79 fi
80
81 AC_PROG_CC
82 AC_PROG_CXX
83 AC_PROG_INSTALL
84 AC_SYS_LARGEFILE
85
86 # Check that an appropriate C compiler is available.
87 c_compiler="unknown"
88 AC_LANG_PUSH([C])
89 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
90 #if !(defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 7)
91 #error Not a supported GCC compiler
92 #endif
93 ])], [c_compiler="gcc"], [])
94 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
95 #if !(defined(__clang__) && __clang_major__ >= 3 && __clang_minor__ >= 2)
96 #error Not a supported Clang compiler
97 #endif
98 ])], [c_compiler="clang"], [])
99 AC_LANG_POP([C])
100
101 if test "$c_compiler" = "unknown"; then
102     AC_MSG_ERROR([Compiler GCC >= 4.7 or Clang >= 3.2 is required for C compilation])
103 fi
104
105 # Check that an appropriate C++ compiler is available.
106 cxx_compiler="unknown"
107 AC_LANG_PUSH([C++])
108 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
109 #if !(defined(__GNUG__) && defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 7)
110 #error Not a supported G++ compiler
111 #endif
112 ])], [cxx_compiler="g++"], [])
113 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
114 #if !(defined(__clang__) && __clang_major__ >= 3 && __clang_minor__ >= 2)
115 #error Not a supported Clang++ compiler
116 #endif
117 ])], [cxx_compiler="clang++"], [])
118 AC_LANG_POP([C++])
119
120 if test "$cxx_compiler" = "unknown"; then
121     AC_MSG_ERROR([Compiler GCC >= 4.7 or Clang >= 3.2 is required for C++ compilation])
122 elif test "$cxx_compiler" = "clang++"; then
123     OLD_CXXFLAGS="$CXXFLAGS"
124     CXXFLAGS="-std=c++11"
125     AC_LANG_PUSH([C++])
126     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
127 #include <type_traits>
128 #if defined(__GLIBCXX__) && __GLIBCXX__ >= 20130531
129 bool libstdcxxTest = std::is_trivially_destructible<bool>::value;
130 #else
131 #error libstdc++ >= 4.8.1 is required
132 #endif
133 ])], [], [AC_MSG_ERROR([libstdc++ >= 4.8.1 is required as the standard library used with the Clang compiler.])])
134     AC_LANG_POP([C++])
135     CXXFLAGS="$OLD_CXXFLAGS"
136 fi
137
138 # C/C++ Language Features
139 AC_C_CONST
140 AC_C_INLINE
141 AC_C_VOLATILE
142
143 # C/C++ Headers
144 AC_HEADER_STDC
145 AC_HEADER_STDBOOL