# HG changeset patch # User Markus Mützel # Date 1593975470 -7200 # Node ID 0e70b5b31362e60ab95509f3dd2bb4d1dba1d7e8 # Parent 005f1b76cbab5967bd98a2d3d293ee43daac1ea7 Update LLVM to v7.0.0 (bug #58689). * src/llvm.mk: Update version, checksum and download url. Update build rule. Install (native) llvm-config. * src/mingw-llvm-1-config.patch: Patch llvm-config so also the native version returns the settings that are needed for a cross build. * dist-files.mk: Add new patch to list. diff -r 005f1b76cbab -r 0e70b5b31362 dist-files.mk --- a/dist-files.mk Sat Jul 11 10:57:25 2020 +0200 +++ b/dist-files.mk Sun Jul 05 20:57:50 2020 +0200 @@ -335,6 +335,7 @@ mingw-lapack-1-xerbla.patch \ mingw-libgcrypt-1-fixes.patch \ mingw-libmng-1-noundefines.patch \ + mingw-llvm-1-config.patch \ mingw-openblas-1-xerbla.patch \ mingw-portaudio-1-pkgconfig.patch \ mingw-s2tc-1-fixes.patch \ diff -r 005f1b76cbab -r 0e70b5b31362 src/llvm.mk --- a/src/llvm.mk Sat Jul 11 10:57:25 2020 +0200 +++ b/src/llvm.mk Sun Jul 05 20:57:50 2020 +0200 @@ -3,11 +3,11 @@ PKG := llvm $(PKG)_IGNORE := -$(PKG)_VERSION := 6.0.1 -$(PKG)_CHECKSUM := 09a6316c5225cab255ba12391e7abe5ff4d28935 +$(PKG)_VERSION := 7.0.0 +$(PKG)_CHECKSUM := 27503a22614626e935a05b609ab4211be72cd78b $(PKG)_SUBDIR := llvm-$($(PKG)_VERSION).src $(PKG)_FILE := llvm-$($(PKG)_VERSION).src.tar.xz -$(PKG)_URL := http://releases.llvm.org/$($(PKG)_VERSION)/$($(PKG)_FILE) +$(PKG)_URL := https://releases.llvm.org/$($(PKG)_VERSION)/$($(PKG)_FILE) $(PKG)_DEPS := define $(PKG)_UPDATE @@ -60,7 +60,7 @@ $(PKG)_CCACHE_OPTIONS += \ -DLLVM_CCACHE_BUILD=On endif - # build cross-compiler + define $(PKG)_BUILD mkdir '$(1)/.build' cd '$(1)/.build' && 'cmake' .. \ @@ -88,7 +88,18 @@ -DLLVM_BUILD_RUNTIMES=OFF \ -DLLVM_INCLUDE_RUNTIMES=OFF \ $($(PKG)_CCACHE_OPTIONS) - $(MAKE) -C '$(1)/.build' -j $(JOBS) llvm-tblgen + + $(MAKE) -C '$(1)/.build' -j $(JOBS) LLVMSupport + $(MAKE) -C '$(1)/.build' -j $(JOBS) llvm-config $(MAKE) -C '$(1)/.build' -j $(JOBS) install DESTDIR='$(3)' + + # create symlink for shared library so that llvm-config can find it + cd '$(3)/$(HOST_BINDIR)' && ln -s LLVM.dll LLVM-$(word 1,$(subst ., ,$($(PKG)_VERSION))).dll + + # install native llvm-config in HOST_BINDIR because it won't find the libs otherwise + # FIXME: Some of the configuration flags are hard coded into llvm-config with a patch. + # If the configuration flags are changed, the patch might have to be adapted. + $(INSTALL) -d '$(HOST_BINDIR)' + $(INSTALL) -m755 '$(1)/.build/NATIVE/bin/llvm-config' '$(HOST_BINDIR)/$(MXE_TOOL_PREFIX)llvm-config' endef endif diff -r 005f1b76cbab -r 0e70b5b31362 src/mingw-llvm-1-config.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/mingw-llvm-1-config.patch Sun Jul 05 20:57:50 2020 +0200 @@ -0,0 +1,64 @@ +diff --git "a/tools/llvm-config/llvm-config.cpp" "b/tools/llvm-config/llvm-config.cpp" +index 08b096a..a35422e 100644 +--- "a/tools/llvm-config/llvm-config.cpp" ++++ "b/tools/llvm-config/llvm-config.cpp" +@@ -352,14 +352,16 @@ int main(int argc, char **argv) { + StringRef SharedExt, SharedVersionedExt, SharedDir, SharedPrefix, StaticExt, + StaticPrefix, StaticDir = "lib", DirSep = "/"; + const Triple HostTriple(Triple::normalize(LLVM_HOST_TRIPLE)); +- if (HostTriple.isOSWindows()) { ++ const Triple TargetTriple(Triple::normalize(LLVM_DEFAULT_TARGET_TRIPLE)); ++ if (TargetTriple.isOSWindows()) { + SharedExt = "dll"; + SharedVersionedExt = LLVM_DYLIB_VERSION ".dll"; +- if (HostTriple.isOSCygMing()) { ++ if (TargetTriple.isOSCygMing()) { + StaticExt = "a"; + StaticPrefix = "lib"; + } else { + StaticExt = "lib"; ++ if (HostTriple.isOSWindows()) { + DirSep = "\\"; + std::replace(ActiveObjRoot.begin(), ActiveObjRoot.end(), '/', '\\'); + std::replace(ActivePrefix.begin(), ActivePrefix.end(), '/', '\\'); +@@ -368,10 +370,11 @@ int main(int argc, char **argv) { + std::replace(ActiveCMakeDir.begin(), ActiveCMakeDir.end(), '/', '\\'); + std::replace(ActiveIncludeOption.begin(), ActiveIncludeOption.end(), '/', + '\\'); ++ } + } + SharedDir = ActiveBinDir; + StaticDir = ActiveLibDir; +- } else if (HostTriple.isOSDarwin()) { ++ } else if (TargetTriple.isOSDarwin()) { + SharedExt = "dylib"; + SharedVersionedExt = LLVM_DYLIB_VERSION ".dylib"; + StaticExt = "a"; +@@ -386,7 +389,7 @@ int main(int argc, char **argv) { + StaticPrefix = SharedPrefix = "lib"; + } + +- const bool BuiltDyLib = !!LLVM_ENABLE_DYLIB; ++ const bool BuiltDyLib = true; + + /// CMake style shared libs, ie each component is in a shared library. + const bool BuiltSharedLibs = !!LLVM_ENABLE_SHARED; +@@ -398,7 +401,7 @@ int main(int argc, char **argv) { + // If LLVM_LINK_DYLIB is ON, the single shared library will be returned + // for "--libs", etc, if they exist. This behaviour can be overridden with + // --link-static or --link-shared. +- bool LinkDyLib = !!LLVM_LINK_DYLIB; ++ bool LinkDyLib = true; + + if (BuiltDyLib) { + std::string path((SharedDir + DirSep + DyLibName).str()); +@@ -670,7 +673,7 @@ int main(int argc, char **argv) { + } else if (PrintLibs) { + // On Windows, output full path to library without parameters. + // Elsewhere, if this is a typical library name, include it using -l. +- if (HostTriple.isWindowsMSVCEnvironment()) { ++ if (TargetTriple.isWindowsMSVCEnvironment()) { + OS << GetComponentLibraryPath(Lib, Shared); + } else { + StringRef LibName; +