changeset 3140:772d03100c0a

[MSVC] enable LLVM compilation (and upgrade to LLVM-3.1)
author Michael Goffioul <michael.goffioul@gmail.com>
date Mon, 15 Jul 2013 10:09:10 -0400
parents 1d9bbaa43239
children f09683967fcd
files index.html src/llvm-1-fixes.patch src/llvm.mk src/msvc-llvm-1.patch
diffstat 4 files changed, 75 insertions(+), 32 deletions(-) [+]
line wrap: on
line diff
--- a/index.html	Sun Jul 14 16:30:19 2013 -0400
+++ b/index.html	Mon Jul 15 10:09:10 2013 -0400
@@ -1685,7 +1685,7 @@
     </tr>
     <tr>
         <td id="llvm-package">llvm</td>
-        <td id="llvm-version">3.0</td>
+        <td id="llvm-version">3.1</td>
         <td id="llvm-website"><a href="http://llvm.org/">llvm</a></td>
     </tr>
     <tr>
--- a/src/llvm-1-fixes.patch	Sun Jul 14 16:30:19 2013 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-diff -uNr a/lib/ExecutionEngine/JIT/CMakeLists.txt b/lib/ExecutionEngine/JIT/CMakeLists.txt
---- a/lib/ExecutionEngine/JIT/CMakeLists.txt	2011-07-28 20:14:25.000000000 -0400
-+++ b/lib/ExecutionEngine/JIT/CMakeLists.txt	2012-12-27 15:31:36.302394951 -0500
-@@ -12,6 +12,7 @@
-   )
- 
- add_llvm_library_dependencies(LLVMJIT
-+  LLVMCodeGen
-   LLVMCore
-   LLVMExecutionEngine
-   LLVMRuntimeDyld
-diff -uNr a/utils/unittest/CMakeLists.txt b/utils/unittest/CMakeLists.txt
---- a/utils/unittest/CMakeLists.txt	2011-07-27 06:19:32.000000000 -0400
-+++ b/utils/unittest/CMakeLists.txt	2012-12-27 15:57:13.797820822 -0500
-@@ -37,6 +37,14 @@
-   googletest/gtest-typed-test.cc
-   )
- 
-+add_llvm_library_dependencies(gtest
-+  LLVMSupport
-+  )
-+
- add_llvm_library(gtest_main
-   UnitTestMain/TestMain.cpp
-   )
-+
-+add_llvm_library_dependencies(gtest_main
-+  gtest
-+  )
--- a/src/llvm.mk	Sun Jul 14 16:30:19 2013 -0400
+++ b/src/llvm.mk	Mon Jul 15 10:09:10 2013 -0400
@@ -3,11 +3,14 @@
 
 PKG             := llvm
 $(PKG)_IGNORE   :=
-$(PKG)_CHECKSUM := b683e7294fcf69887c0d709025d4640f5dca755b
+$(PKG)_CHECKSUM := 234c96e73ef81aec9a54da92fc2a9024d653b059
 $(PKG)_SUBDIR   := llvm-$($(PKG)_VERSION).src
-$(PKG)_FILE     := llvm-$($(PKG)_VERSION).tar.gz
+$(PKG)_FILE     := llvm-$($(PKG)_VERSION).src.tar.gz
 $(PKG)_URL      := http://llvm.org/releases/$($(PKG)_VERSION)/$($(PKG)_FILE)
 $(PKG)_DEPS     :=
+ifeq ($(MXE_SYSTEM),msvc)
+    $(PKG)_DEPS += libffi
+endif
 
 define $(PKG)_UPDATE
     $(WGET) -q -O- 'http://llvm.org/releases/download.html' | \
@@ -17,6 +20,25 @@
 endef
 
 ifeq ($(MXE_NATIVE_MINGW_BUILD),yes)
+ifeq ($(MXE_SYSTEM),msvc)
+define $(PKG)_BUILD
+    mkdir '$(1)/.build'
+    cd '$(1)/.build' && cmake \
+        -G "NMake Makefiles" \
+        -DCMAKE_BUILD_TYPE="Release" \
+        "-DCMAKE_INSTALL_PREFIX:PATH=$(HOST_PREFIX)" \
+        -DLLVM_ENABLE_FFI:BOOL=ON \
+        "-DFFI_INCLUDE_DIR=$(HOST_LIBDIR)/libffi-$(libffi_VERSION)/include" \
+        ../
+    sed -i '/^	echo "/ {s/echo "/echo /;s/" >>/ >>/;}' \
+        '$(1)/.build/tools/llvm-config/CMakeFiles/llvm-config.dir/build.make'
+    cd '$(1)/.build' && \
+        env -u MAKE -u MAKEFLAGS \
+            LIB="`echo \`cd ../../../usr/i686-pc-mingw32/lib && pwd -W\` | sed -e 's,/,\\\\\\\\,g'`\;$$LIB" \
+            nmake && \
+        env -u MAKE -u MAKEFLAGS nmake install
+endef
+else
 define $(PKG)_BUILD
     mkdir '$(1)/build'
     cd '$(1)/build' && ../configure  \
@@ -31,6 +53,7 @@
     PATH='$(HOST_BINDIR):$(PATH)' $(MAKE) -C '$(1)/build' -j $(JOBS) install
     $(LN_SF) '$(HOST_BINDIR)/llvm-config' '$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)llvm-config'
 endef
+endif
 else
 define $(PKG)_BUILD
     mkdir '$(1)/build'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/msvc-llvm-1.patch	Mon Jul 15 10:09:10 2013 -0400
@@ -0,0 +1,49 @@
+diff -ur llvm-3.1.src-orig/cmake/modules/LLVM-Config.cmake llvm-3.1.src/cmake/modules/LLVM-Config.cmake
+--- llvm-3.1.src-orig/cmake/modules/LLVM-Config.cmake	2011-11-29 01:31:52 +0000
++++ llvm-3.1.src/cmake/modules/LLVM-Config.cmake	2012-08-02 09:05:16 +0100
+@@ -11,6 +11,8 @@
+ 	set(system_libs ${system_libs} pthread)
+       endif()
+     endif( MINGW )
++  else()
++    set(system_libs ${system_libs} ffi shell32)
+   endif( NOT MSVC )
+   set(${return_var} ${system_libs} PARENT_SCOPE)
+ endfunction(get_system_libs)
+diff -ur llvm-3.1.src-orig/include/llvm/Support/DataTypes.h.cmake llvm-3.1.src/include/llvm/Support/DataTypes.h.cmake
+--- llvm-3.1.src-orig/include/llvm/Support/DataTypes.h.cmake	2012-03-11 01:20:23 +0000
++++ llvm-3.1.src/include/llvm/Support/DataTypes.h.cmake	2012-08-02 09:05:41 +0100
+@@ -113,7 +113,9 @@
+ typedef unsigned short uint16_t;
+ typedef signed char int8_t;
+ typedef unsigned char uint8_t;
++#ifndef ssize_t
+ typedef signed int ssize_t;
++#endif
+ #ifndef INT8_MAX
+ # define INT8_MAX 127
+ #endif
+diff -ur llvm-3.1.src-orig/include/llvm/Support/DataTypes.h.in llvm-3.1.src/include/llvm/Support/DataTypes.h.in
+--- llvm-3.1.src-orig/include/llvm/Support/DataTypes.h.in	2011-11-05 09:45:17 +0000
++++ llvm-3.1.src/include/llvm/Support/DataTypes.h.in	2012-08-02 09:05:16 +0100
+@@ -110,7 +110,9 @@
+ typedef unsigned short uint16_t;
+ typedef signed char int8_t;
+ typedef unsigned char uint8_t;
++#ifndef ssize_t
+ typedef signed int ssize_t;
++#endif
+ #ifndef INT8_MAX
+ # define INT8_MAX 127
+ #endif
+diff -ur llvm-3.1.src-orig/tools/CMakeLists.txt llvm-3.1.src/tools/CMakeLists.txt
+--- llvm-3.1.src-orig/tools/CMakeLists.txt	2012-03-01 01:36:50 +0000
++++ llvm-3.1.src/tools/CMakeLists.txt	2012-08-02 09:05:16 +0100
+@@ -15,6 +15,7 @@
+   # on pure Win32.
+   add_subdirectory(llvm-config)
+ endif()
++add_subdirectory(llvm-config)
+ 
+ add_subdirectory(opt)
+ add_subdirectory(llvm-as)