changeset 6540:ff8c281debae

LLVM: Update to version 15.0.5. * src/llvm.mk: Update version and checksum. Download and extract tarball with cmake files. Disable building benchmarks. Use two spaces for indentation. Adjust for library name containing version suffix now.
author Markus Mützel <markus.muetzel@gmx.de>
date Sun, 20 Nov 2022 15:04:15 +0100
parents 6d05e05f9af0
children 88394d81a647
files src/llvm.mk
diffstat 1 files changed, 108 insertions(+), 84 deletions(-) [+]
line wrap: on
line diff
--- a/src/llvm.mk	Sat Nov 19 13:23:33 2022 +0100
+++ b/src/llvm.mk	Sun Nov 20 15:04:15 2022 +0100
@@ -3,8 +3,8 @@
 
 PKG             := llvm
 $(PKG)_IGNORE   :=
-$(PKG)_VERSION  := 12.0.1
-$(PKG)_CHECKSUM := 619fe668e0972d11d0fa2db670a57a42d02fb8ca
+$(PKG)_VERSION  := 15.0.5
+$(PKG)_CHECKSUM := 9958ed0bdf9709833d4beb13ae954cc0fa6d3161
 $(PKG)_SUBDIR   := llvm-$($(PKG)_VERSION).src
 $(PKG)_FILE     := llvm-$($(PKG)_VERSION).src.tar.xz
 $(PKG)_URL      := https://github.com/llvm/llvm-project/releases/download/llvmorg-$($(PKG)_VERSION)/$($(PKG)_FILE)
@@ -18,91 +18,115 @@
 endef
 
 ifeq ($(MXE_NATIVE_BUILD),yes)
-    ifeq ($(MXE_SYSTEM),gnu-linux)
-        define $(PKG)_BUILD
-            mkdir '$(1)/.build' && cd '$(1)/.build' && cmake .. \
-                -GNinja \
-                $($(PKG)_CMAKE_FLAGS) \
-                $(CMAKE_CCACHE_FLAGS) \
-                -DCMAKE_TOOLCHAIN_FILE='$(CMAKE_TOOLCHAIN_FILE)' \
-                -DLLVM_BUILD_LLVM_DYLIB=ON \
-                -DLLVM_LINK_LLVM_DYLIB=ON \
-                -DLLVM_VERSION_SUFFIX= \
-                -DLLVM_TARGETS_TO_BUILD='X86' \
-                -DLLVM_ENABLE_EH=ON \
-                -DLLVM_ENABLE_RTTI=ON \
-                -DLLVM_BUILD_EXAMPLES=OFF \
-                -DLLVM_INCLUDE_EXAMPLES=OFF \
-                -DLLVM_BUILD_TESTS=OFF \
-                -DLLVM_INCLUDE_TESTS=OFF \
-                -DLLVM_INCLUDE_GO_TESTS=OFF \
-                -DLLVM_INCLUDE_DOCS=OFF \
-                -DLLVM_BUILD_DOCS=OFF \
-                -DLLVM_ENABLE_DOXYGEN=OFF \
-                -DLLVM_ENABLE_BACKTRACES=OFF
+  ifeq ($(MXE_SYSTEM),gnu-linux)
+    define $(PKG)_BUILD
+      # download archive with cmake files
+      if [ ! -f $(PKG_DIR)/cmake-$($(PKG)_VERSION).src.tar.xz ]; then \
+        $(WGET) -N https://github.com/llvm/llvm-project/releases/download/llvmorg-$($(PKG)_VERSION)/cmake-$($(PKG)_VERSION).src.tar.xz \
+          -O $(PKG_DIR)/cmake-$($(PKG)_VERSION).src.tar.xz; \
+      fi
+      # extract archive with cmake files
+      cd '$(1)/..' && \
+        xz -dc $(PKG_DIR)/cmake-$($(PKG)_VERSION).src.tar.xz | $(TAR) xf - && \
+        mv cmake-$($(PKG)_VERSION).src cmake
 
-            cd '$(1)/.build' && DESTDIR=$(3) ninja -j $(JOBS) install
-        endef
-    else
-        define $(PKG)_BUILD
-            echo "unsupported LLVM configuration" 1>&2
-            exit 1
-        endef
-    endif
+      mkdir '$(1)/.build' && cd '$(1)/.build' && cmake .. \
+        -GNinja \
+        $($(PKG)_CMAKE_FLAGS) \
+        $(CMAKE_CCACHE_FLAGS) \
+        -DCMAKE_TOOLCHAIN_FILE='$(CMAKE_TOOLCHAIN_FILE)' \
+        -DLLVM_BUILD_LLVM_DYLIB=ON \
+        -DLLVM_LINK_LLVM_DYLIB=ON \
+        -DLLVM_VERSION_SUFFIX= \
+        -DLLVM_TARGETS_TO_BUILD='X86' \
+        -DLLVM_ENABLE_EH=ON \
+        -DLLVM_ENABLE_RTTI=ON \
+        -DLLVM_INCLUDE_BENCHMARKS=OFF \
+        -DLLVM_BUILD_EXAMPLES=OFF \
+        -DLLVM_INCLUDE_EXAMPLES=OFF \
+        -DLLVM_BUILD_TESTS=OFF \
+        -DLLVM_INCLUDE_TESTS=OFF \
+        -DLLVM_INCLUDE_GO_TESTS=OFF \
+        -DLLVM_INCLUDE_DOCS=OFF \
+        -DLLVM_BUILD_DOCS=OFF \
+        -DLLVM_ENABLE_DOXYGEN=OFF \
+        -DLLVM_ENABLE_BACKTRACES=OFF
+
+      cd '$(1)/.build' && DESTDIR=$(3) ninja -j $(JOBS) install
+    endef
+  else
+    define $(PKG)_BUILD
+      echo "unsupported LLVM configuration" 1>&2
+      exit 1
+    endef
+  endif
 else
-    ifeq ($(ENABLE_WINDOWS_64),yes)
-        $(PKG)_SYSDEP_CMAKE_OPTIONS += \
-            -DLLVM_DEFAULT_TARGET_TRIPLE='x86_64-pc-win32'
-    else
-        $(PKG)_SYSDEP_CMAKE_OPTIONS += \
-            -DLLVM_DEFAULT_TARGET_TRIPLE='x86-pc-win32'
-    endif
-    ifeq ($(USE_CCACHE),yes)
-        $(PKG)_CCACHE_OPTIONS += \
-            -DLLVM_CCACHE_BUILD=ON
-    endif
+  ifeq ($(ENABLE_WINDOWS_64),yes)
+    $(PKG)_SYSDEP_CMAKE_OPTIONS += \
+      -DLLVM_DEFAULT_TARGET_TRIPLE='x86_64-pc-win32'
+  else
+    $(PKG)_SYSDEP_CMAKE_OPTIONS += \
+      -DLLVM_DEFAULT_TARGET_TRIPLE='x86-pc-win32'
+  endif
+  ifeq ($(USE_CCACHE),yes)
+    $(PKG)_CCACHE_OPTIONS += \
+      -DLLVM_CCACHE_BUILD=ON
+  endif
 
-    define $(PKG)_BUILD
-        mkdir '$(1)/.build'
-        cd '$(1)/.build' && 'cmake' .. \
-            -GNinja \
-            $($(PKG)_CMAKE_FLAGS) \
-            $(CMAKE_CCACHE_FLAGS) \
-            -DCMAKE_TOOLCHAIN_FILE='$(CMAKE_TOOLCHAIN_FILE)' \
-            -DLLVM_BUILD_TOOLS=OFF \
-            -DLLVM_BUILD_LLVM_DYLIB=ON \
-            -DLLVM_LINK_LLVM_DYLIB=ON \
-            -DLLVM_VERSION_SUFFIX= \
-            -DLLVM_TARGETS_TO_BUILD='X86' \
-            $($(PKG)_SYSDEP_CMAKE_OPTIONS) \
-            -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE='$(CMAKE_NATIVE_TOOLCHAIN_FILE)'" \
-            -DLLVM_ENABLE_EH=ON \
-            -DLLVM_ENABLE_RTTI=ON \
-            -DLLVM_BUILD_EXAMPLES=OFF \
-            -DLLVM_INCLUDE_EXAMPLES=OFF \
-            -DLLVM_BUILD_TESTS=OFF \
-            -DLLVM_INCLUDE_TESTS=OFF \
-            -DLLVM_INCLUDE_GO_TESTS=OFF \
-            -DLLVM_ENABLE_BACKTRACES=OFF \
-            -DLLVM_INCLUDE_DOCS=OFF \
-            -DLLVM_BUILD_DOCS=OFF \
-            -DLLVM_ENABLE_DOXYGEN=OFF \
-            -DLLVM_ENABLE_OCAMLDOC=OFF \
-            -DLLVM_ENABLE_BINDINGS=OFF \
-            -DLLVM_ENABLE_SPHINX=OFF \
-            -DLLVM_BUILD_RUNTIME=OFF \
-            -DLLVM_BUILD_RUNTIMES=OFF \
-            -DLLVM_INCLUDE_RUNTIMES=OFF \
-            $($(PKG)_CCACHE_OPTIONS)
+  define $(PKG)_BUILD
+    # download archive with cmake files
+    if [ ! -f $(PKG_DIR)/cmake-$($(PKG)_VERSION).src.tar.xz ]; then \
+      $(WGET) -N https://github.com/llvm/llvm-project/releases/download/llvmorg-$($(PKG)_VERSION)/cmake-$($(PKG)_VERSION).src.tar.xz \
+        -O $(PKG_DIR)/cmake-$($(PKG)_VERSION).src.tar.xz; \
+    fi
+    # extract archive with cmake files
+    cd '$(1)/..' && \
+      xz -dc $(PKG_DIR)/cmake-$($(PKG)_VERSION).src.tar.xz | $(TAR) xf - && \
+      mv cmake-$($(PKG)_VERSION).src cmake
+
+    # No way to pass this for native llvm-config when cross-compiling. Modify cmake file instead.
+    $(SED) -i 's/\(option(LLVM_INCLUDE_BENCHMARKS.*\)ON/\1OFF/' '$(1)/CMakeLists.txt'
 
-        cd '$(1)/.build' && DESTDIR=$(3) ninja -j $(JOBS) llvm-config
-        cd '$(1)/.build' && DESTDIR=$(3) ninja -j $(JOBS) install
-
-        # create symlink for shared library so that llvm-config can find it
-        cd '$(3)/$(HOST_BINDIR)' && ln -s libLLVM.dll LLVM-$(word 1,$(subst ., ,$($(PKG)_VERSION))).dll
+    mkdir '$(1)/.build'
+    cd '$(1)/.build' && 'cmake' .. \
+      -GNinja \
+      $($(PKG)_CMAKE_FLAGS) \
+      $(CMAKE_CCACHE_FLAGS) \
+      -DCMAKE_TOOLCHAIN_FILE='$(CMAKE_TOOLCHAIN_FILE)' \
+      -DLLVM_BUILD_TOOLS=OFF \
+      -DLLVM_BUILD_LLVM_DYLIB=ON \
+      -DLLVM_LINK_LLVM_DYLIB=ON \
+      -DLLVM_VERSION_SUFFIX= \
+      -DLLVM_TARGETS_TO_BUILD='X86' \
+      $($(PKG)_SYSDEP_CMAKE_OPTIONS) \
+      -DCROSS_TOOLCHAIN_FLAGS_NATIVE='-DCMAKE_TOOLCHAIN_FILE="$(CMAKE_NATIVE_TOOLCHAIN_FILE)"' \
+      -DLLVM_ENABLE_EH=ON \
+      -DLLVM_ENABLE_RTTI=ON \
+      -DLLVM_BUILD_EXAMPLES=OFF \
+      -DLLVM_INCLUDE_EXAMPLES=OFF \
+      -DLLVM_BUILD_TESTS=OFF \
+      -DLLVM_INCLUDE_TESTS=OFF \
+      -DLLVM_INCLUDE_GO_TESTS=OFF \
+      -DLLVM_ENABLE_BACKTRACES=OFF \
+      -DLLVM_INCLUDE_DOCS=OFF \
+      -DLLVM_BUILD_DOCS=OFF \
+      -DLLVM_ENABLE_DOXYGEN=OFF \
+      -DLLVM_ENABLE_OCAMLDOC=OFF \
+      -DLLVM_ENABLE_BINDINGS=OFF \
+      -DLLVM_ENABLE_SPHINX=OFF \
+      -DLLVM_BUILD_RUNTIME=OFF \
+      -DLLVM_BUILD_RUNTIMES=OFF \
+      -DLLVM_INCLUDE_RUNTIMES=OFF \
+      $($(PKG)_CCACHE_OPTIONS)
 
-        # install native llvm-config in HOST_BINDIR because it won't find the libs otherwise
-        $(INSTALL) -d '$(HOST_BINDIR)'
-        $(INSTALL) -m755 '$(1)/.build/NATIVE/bin/llvm-config' '$(HOST_BINDIR)/$(MXE_TOOL_PREFIX)llvm-config'
-    endef
+    cd '$(1)/.build' && DESTDIR=$(3) ninja -j $(JOBS) llvm-config
+    cd '$(1)/.build' && DESTDIR=$(3) ninja -j $(JOBS) install
+
+    # create symlink for shared library so that llvm-config can find it
+    cd '$(3)/$(HOST_BINDIR)' && ln -s libLLVM-$(word 1,$(subst ., ,$($(PKG)_VERSION))).dll LLVM-$(word 1,$(subst ., ,$($(PKG)_VERSION))).dll
+
+    # install native llvm-config in HOST_BINDIR because it won't find the libs otherwise
+    $(INSTALL) -d '$(HOST_BINDIR)'
+    $(INSTALL) -m755 '$(1)/.build/NATIVE/bin/llvm-config' '$(HOST_BINDIR)/$(MXE_TOOL_PREFIX)llvm-config'
+  endef
 endif