1
dnl This program is free software; you can redistribute it and/or modify
2
dnl it under the terms of the GNU General Public License as published by
3
dnl the Free Software Foundation; either version 2 of the License, or
4
dnl (at your option) any later version.
6
dnl This program is distributed in the hope that it will be useful,
7
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
8
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9
dnl GNU General Public License for more details.
11
dnl You should have received a copy of the GNU General Public License
12
dnl along with this program; if not, write to the Free Software
13
dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
14
dnl MA 02110-1301, USA.
17
AC_INIT([libclamavc++],[devel],[http://bugs.clamav.net])
18
AC_CONFIG_AUX_DIR([config])
19
AC_CONFIG_SRCDIR([llvm/configure])
20
AC_CONFIG_MACRO_DIR([m4])
21
AC_CONFIG_HEADER([clamavcxx-config.h])
23
AM_INIT_AUTOMAKE([1.9 -Wall -Wportability -Werror foreign no-define color-tests tar-pax])
24
AM_SILENT_RULES([yes])
26
cxxset=${CXXFLAGS+set}
30
if test "$cxxset" != set; then
31
# don't use the default -O2 -g because -g bloats the C++ binaries too much
36
CXXFLAGS="$CXXFLAGS -include llvm/include/llvm/System/Solaris.h"
37
AC_MSG_NOTICE([Building on Solaris])
42
LT_INIT([disable-static])
43
if test "$GXX" != "yes"; then
44
AC_MSG_ERROR([GNU C++ compiler not found, not building LLVM])
48
GMAKE="$llvm_cv_gnu_make_command"
52
AC_ARG_WITH([system-llvm], AC_HELP_STRING([-with-system-llvm],
53
[Use system llvm instead of built-in, requires full path to llvm-config]),
56
AC_MSG_ERROR([--with-system-llvm needs full path to llvm-config])
61
llvmver=`$llvmconfig --version`
62
if test "$llvmver" != "2.9" && test "$llvmver" != "3.0svn" &&
63
test "$llvmver" != "3.0"; then
64
AC_MSG_ERROR([LLVM 2.9 required, but "$llvmver" found])
66
AC_SUBST(LLVMCONFIG_CXXFLAGS, [`$llvmconfig --cxxflags`])
67
AC_SUBST(LLVMCONFIG_LDFLAGS, [`$llvmconfig --ldflags`])
68
AC_SUBST(LLVMCONFIG_LIBS, [`$llvmconfig --libs jit nativecodegen scalaropts ipo`])
69
AC_SUBST(LLVMCONFIG_LIBFILES, [`$llvmconfig --libfiles jit nativecodegen scalaropts ipo`])
70
AC_MSG_NOTICE([Using external LLVM])
71
AC_MSG_NOTICE([CXXFLAGS from llvm-config: $LLVMCONFIG_CXXFLAGS])
72
AC_MSG_NOTICE([LDFLAGS from llvm-config: $LLVMCONFIG_LDFLAGS])
73
AC_MSG_NOTICE([LIBS from llvm-config: $LLVMCONFIG_LIBS])
78
if test "x$llvmconfig" = "x"; then
79
AC_CONFIG_SUBDIRS([llvm])
82
AC_ARG_ENABLE([llvm],AC_HELP_STRING([-enable-llvm],
83
[Enable 'llvm' JIT/verifier support @<:@default=auto@:>@]),
84
[enable_llvm=$enableval], [enable_llvm="auto"])
86
AC_ARG_ENABLE(optimized, AC_HELP_STRING([-enable-optimized],
87
[Compile with optimizations enabled (default is YES)]),
88
enable_optimized=$enableval, enable_optimized=default)
89
AM_CONDITIONAL(DEBUG_BUILD,[test "x$enable_optimized" = "xno"])
91
dnl Set configure args for subdir
92
if test "$enable_optimized" = "default"; then
93
ac_configure_args="$ac_configure_args --enable-optimized"
96
dnl Pretend that GNU make is available for LLVM, we don't use LLVM's buildsystem
97
dnl anyway (except for make check)
98
ac_configure_args="$ac_configure_args llvm_cv_gnu_make_command=make"
99
AC_ARG_ENABLE(all-jit-targets, AC_HELP_STRING([-enable-all-jit-targets],
100
[Build all the targets that support JIT for testing (default NO)]),
101
enable_alltargets=$enableval, enable_alltargets=no)
102
if test "$enable_alltargets" = "yes"; then
103
new_args="$ac_configure_args --enable-targets=x86,powerpc --enable-bindings=none --enable-libffi=no --without-llvmgcc --without-llvmgxx"
105
new_args="$ac_configure_args --enable-targets=host-only --enable-bindings=none --enable-libffi=no --without-llvmgcc --without-llvmgxx"
107
ac_configure_args=`echo $new_args | sed -e 's/-Werror //g'`
109
if test "$enable_llvm" = "auto"; then
110
dnl Do some sanity checks, and don't automatically build on platforms
111
dnl that are not supported or have broken compilers.
112
dnl The user can override this by specifying --enable-llvm=yes.
113
AC_MSG_CHECKING([for supported C++ compiler version])
114
gxx_version=`${CXX} -dumpversion` ||
115
AC_MSG_ERROR([Unable to get GNU C++ compiler version])
116
case "${gxx_version}" in
118
AC_MSG_ERROR([C++ compiler too old (${gxx_version})])
121
AC_MSG_ERROR([C++ compiler is buggy])
124
AC_MSG_RESULT([ok (${gxx_version})])
127
AC_MSG_CHECKING([for supported OS])
128
case "$target_cpu" in
129
i?86|amd64|x86_64|powerpc*)
131
darwin*|freebsd*|openbsd*|netbsd*|dragonfly*|linux*|solaris*|win32*|mingw*)
132
AC_MSG_RESULT([ok ($target_cpu-$target_os)])
135
AC_MSG_ERROR([OS $target_os is not supported, not building LLVM])
140
AC_MSG_ERROR([CPU support is untested, not building LLVM])
143
AC_MSG_ERROR([Unsupported CPU for JIT: $target_cpu, not building LLVM])
148
dnl bb #1971 - doesn't work with older libstdc++ version at link/runtime
149
AC_MSG_CHECKING([for working libstdc++])
156
// this causes an @GLIBCXX_3.4.9 symbol to be linked in -O2 mode
160
])],[AC_MSG_RESULT([yes])],
161
[AC_MSG_FAILURE([failed])],
167
// this causes an @GLIBCXX_3.4.9 symbol to be linked in -O2 mode
171
])], [AC_MSG_RESULT([yes])],
172
[AC_MSG_FAILURE([failed])]
178
case "$target_cpu" in
187
# FreeBSD is only one which needs something else than -pthread,
188
# according to the logic in ClamAV's main configure.in.
191
THREAD_LIBS="-pthread -lc_r"
202
THREAD_LIBS="-pthread"
204
AC_SUBST([THREAD_LIBS])
206
if test "$enable_alltargets" = "yes"; then
210
if test "$ac_cv_c_bigendian" = "universal"; then
211
AC_MSG_NOTICE([Universal build detected])
215
AC_MSG_NOTICE([Building X86 backend: $build_x86])
216
AC_MSG_NOTICE([Building PPC backend: $build_ppc])
217
AM_CONDITIONAL(BUILD_X86, [test "$build_x86" = "yes"])
218
AM_CONDITIONAL(BUILD_PPC, [test "$build_ppc" = "yes"])
220
AC_MSG_CHECKING([optional compiler flags])
221
CXX_FLAG_CHECK(NO_VARIADIC_MACROS, [-Wno-variadic-macros])
222
CXX_FLAG_CHECK(NO_MISSING_FIELD_INITIALIZERS, [-Wno-missing-field-initializers])
223
AC_MSG_RESULT([$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS])
225
AM_CONDITIONAL(BUILD_EXTERNAL_LLVM, [test -n "$llvmconfig"])
226
AM_CONDITIONAL(BUILD_LLVM3, [test -n "$llvmconfig" && test "$llvmver" != "2.9"])