Browse code

Support building with external LLVM 2.8.

Adds --with-system-llvm=/path/to/llvm-config

Török Edvin authored on 2010/08/04 19:55:30
Showing 2 changed files
... ...
@@ -18,25 +18,28 @@ LLVM_INCLUDES=-I$(top_srcdir)/llvm/include -I$(top_builddir)/llvm/include
18 18
 # keep it like this while I'm testing LLVM
19 19
 # TODO: HP-UX should have -D_REENTRANT -D_HPUX_SOURCE
20 20
 LLVM_DEFS=-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D_DEBUG -D_GNU_SOURCE
21
-AM_CPPFLAGS = -I$(top_srcdir)/../.. -I$(top_srcdir)/.. -I$(top_builddir)/../../ $(LLVM_INCLUDES) $(LLVM_DEFS)
21
+AM_CPPFLAGS = -I$(top_srcdir)/../.. -I$(top_srcdir)/.. -I$(top_builddir)/../../
22
+
22 23
 AM_CXXFLAGS = $(LLVM_CXXFLAGS) -fno-exceptions
23 24
 ACLOCAL_AMFLAGS=-I m4
24
-if DEBUG_BUILD
25
-LLVM_CONFIG=llvm/Debug/bin/llvm-config
26
-else
27
-LLVM_CONFIG=llvm/Release/bin/llvm-config
28
-endif
29 25
 
26
+libclamavcxx_la_SOURCES = bytecode2llvm.cpp\
27
+			  ClamBCRTChecks.cpp\
28
+			  ClamBCModule.h\
29
+			  ClamBCDiagnostics.h\
30
+			  detect.cpp
31
+if BUILD_EXTERNAL_LLVM
30 32
 #$(LLVM_CONFIG): build-llvm
31 33
 # we know this will be built with GNU make, so its safe to use GNU make specific
32 34
 # $(shell ...)
33 35
 #LLVM_DEPS=$(shell $(LLVM_CONFIG) --libfiles jit nativecodegen)
34
-#libclamavcxx_la_CPPFLAGS = $(AM_CPPFLAGS) `$(LLVM_CONFIG) --cppflags`
35
-#libclamavcxx_la_DEPENDENCIES = $(LLVM_DEPS)
36
-#libclamavcxx_la_LDFLAGS = `$(LLVM_CONFIG) --ldflags --libs jit nativecodegen`
37
-#libclamavcxx_la_CPPFLAGS = $(AM_CPPFLAGS) $(LLVM_INCLUDES) $(LLVM_DEFS)
38
-#libclamavcxx_la_DEPENDENCIES = $(LLVM_DEPS)
36
+libclamavcxx_la_CXXFLAGS = $(AM_CPPFLAGS) @LLVMCONFIG_CXXFLAGS@ -fexceptions -DLLVM28
37
+libclamavcxx_la_LDFLAGS = @LLVMCONFIG_LDFLAGS@ @LLVMCONFIG_LIBS@
38
+libclamavcxx_la_DEPENDENCIES = @LLVMCONFIG_LIBFILES@
39
+noinst_LTLIBRARIES = libclamavcxx.la
39 40
 
41
+else
42
+AM_CPPFLAGS += $(LLVM_INCLUDES) $(LLVM_DEFS)
40 43
 noinst_LTLIBRARIES = libclamavcxx.la libllvmsystem.la\
41 44
 		     libllvmcodegen.la libllvmjit.la
42 45
 lli_LDADD=libllvmbitreader.la libllvmfullcodegen.la libllvmjit.la
... ...
@@ -44,11 +47,8 @@ libclamavcxx_la_LIBADD=libllvmjit.la
44 44
 libclamavcxx_la_DEPENDENCIES=libllvmjit.la libllvmcodegen.la libllvmsystem.la
45 45
 libclamavcxx_la_LDFLAGS=-no-undefined
46 46
 libclamavcxx_la_CXXFLAGS = $(LLVM_CXXFLAGS)
47
-libclamavcxx_la_SOURCES = bytecode2llvm.cpp\
48
-			  ClamBCRTChecks.cpp\
49
-			  ClamBCModule.h\
50
-			  ClamBCDiagnostics.h\
51
-			  detect.cpp
47
+
48
+
52 49
 if BUILD_X86
53 50
 libclamavcxx_la_LIBADD+=libllvmx86codegen.la
54 51
 libclamavcxx_la_DEPENDENCIES+=libllvmx86codegen.la
... ...
@@ -916,6 +916,7 @@ libllvmsystem_la_SOURCES += llvm/config.status
916 916
 $(top_builddir)/llvm/config.status: llvm/configure
917 917
 	(cd llvm; ./config.status --recheck; ./config.status)
918 918
 
919
+endif
919 920
 # rm configure generated files
920 921
 dist-hook:
921 922
 	make -C llvm dist-hook
... ...
@@ -46,7 +46,33 @@ fi
46 46
 AC_CHECK_GNU_MAKE
47 47
 GMAKE="$llvm_cv_gnu_make_command"
48 48
 AC_SUBST([GMAKE])
49
-AC_CONFIG_SUBDIRS([llvm])
49
+
50
+llvmconfig=
51
+AC_ARG_WITH([system-llvm], AC_HELP_STRING([-with-system-llvm],
52
+[Use system llvm instead of built-in, requires full path to llvm-config]),
53
+[case "$withval" in
54
+  yes)
55
+    AC_MSG_ERROR([--with-system-llvm needs full path to llvm-config])
56
+    ;;
57
+  no) ;;
58
+  *)
59
+    llvmconfig="$withval"
60
+    llvmver=`$llvmconfig --version`
61
+    if test "$llvmver" != "2.8" -a "$llvmver" != "2.8svn"; then
62
+	AC_MSG_ERROR([LLVM 2.8 or 2.8svn required, but "$llvmver" found])
63
+    fi
64
+    AC_SUBST(LLVMCONFIG_CXXFLAGS, [`$llvmconfig --cxxflags`])
65
+    AC_SUBST(LLVMCONFIG_LDFLAGS, [`$llvmconfig --ldflags`])
66
+    AC_SUBST(LLVMCONFIG_LIBS, [`$llvmconfig --libs jit nativecodegen`])
67
+    AC_SUBST(LLVMCONFIG_LIBFILES, [`$llvmconfig --libfiles jit nativecodegen`])
68
+    ;;
69
+  esac
70
+])
71
+
72
+if test "x$llvmconfig" = "x"; then
73
+    AC_CONFIG_SUBDIRS([llvm])
74
+fi
75
+
50 76
 AC_ARG_ENABLE([llvm],AC_HELP_STRING([-enable-llvm],
51 77
 				    [Enable 'llvm' JIT/verifier support @<:@default=auto@:>@]),
52 78
 				    [enable_llvm=$enableval], [enable_llvm="auto"])
... ...
@@ -191,6 +217,8 @@ CXX_FLAG_CHECK(NO_VARIADIC_MACROS, [-Wno-variadic-macros])
191 191
 CXX_FLAG_CHECK(NO_MISSING_FIELD_INITIALIZERS, [-Wno-missing-field-initializers])
192 192
 AC_MSG_RESULT([$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS])
193 193
 
194
+AM_CONDITIONAL(BUILD_EXTERNAL_LLVM, [test -n "$llvmconfig"])
195
+
194 196
 AC_OUTPUT([
195 197
     Makefile
196 198
 ])