# HG changeset patch # User Markus Mützel # Date 1668953055 -3600 # Node ID ff8c281debae4cf64c6e3773dd24bfd2d9121c84 # Parent 6d05e05f9af0896a618f0da9859cd67c1401b3f3 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. diff -r 6d05e05f9af0 -r ff8c281debae src/llvm.mk --- 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