Skip to content

Commit

Permalink
Few fixes for clang package (#6534)
Browse files Browse the repository at this point in the history
  • Loading branch information
mati865 committed May 30, 2020
1 parent 1940c0b commit e071f27
Show file tree
Hide file tree
Showing 4 changed files with 147 additions and 106 deletions.
11 changes: 11 additions & 0 deletions mingw-w64-clang/0008-enable-emutls-for-mingw.patch
@@ -0,0 +1,11 @@
--- llvm-10.0.0.src/include/llvm/ADT/Triple.h.orig 2020-05-15 15:49:40.073000000 +0200
+++ llvm-10.0.0.src/include/llvm/ADT/Triple.h 2020-05-15 20:51:29.844520400 +0200
@@ -748,7 +748,7 @@

/// Tests whether the target uses emulated TLS as default.
bool hasDefaultEmulatedTLS() const {
- return isAndroid() || isOSOpenBSD() || isWindowsCygwinEnvironment();
+ return isAndroid() || isOSOpenBSD() || isOSCygMing();
}

/// @}
96 changes: 0 additions & 96 deletions mingw-w64-clang/0501-mingw-w64-provides-vasprintf.patch

This file was deleted.

121 changes: 121 additions & 0 deletions mingw-w64-clang/0903-Fix-implib-for-MinGW.patch
@@ -0,0 +1,121 @@
From 534c1b47a25f89957d18599a82a9dd5108bdceda Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mateusz=20Miku=C5=82a?= <mati865@gmail.com>
Date: Mon, 25 May 2020 15:12:52 +0200
Subject: [PATCH] Fix implib for MinGW

---
runtime/cmake/LibompExports.cmake | 11 +++++++-
runtime/cmake/LibompMicroTests.cmake | 6 ++++-
runtime/src/CMakeLists.txt | 38 ++++++++++++++++------------
3 files changed, 37 insertions(+), 18 deletions(-)

diff --git a/runtime/cmake/LibompExports.cmake b/runtime/cmake/LibompExports.cmake
index f98de26..e0b20cf 100644
--- a/runtime/cmake/LibompExports.cmake
+++ b/runtime/cmake/LibompExports.cmake
@@ -82,7 +82,7 @@ add_custom_command(TARGET omp POST_BUILD
)

# Copy Windows import library into exports/ directory post build
-if(WIN32)
+if(MSVC)
get_target_property(LIBOMPIMP_OUTPUT_DIRECTORY ompimp ARCHIVE_OUTPUT_DIRECTORY)
if(NOT LIBOMPIMP_OUTPUT_DIRECTORY)
set(LIBOMPIMP_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
@@ -91,4 +91,13 @@ if(WIN32)
COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_LIB_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${LIBOMPIMP_OUTPUT_DIRECTORY}/${LIBOMP_IMP_LIB_FILE} ${LIBOMP_EXPORTS_LIB_DIR}
)
+elseif(WIN32)
+ get_target_property(LIBOMPIMP_OUTPUT_DIRECTORY omp ARCHIVE_OUTPUT_DIRECTORY)
+ if(NOT LIBOMPIMP_OUTPUT_DIRECTORY)
+ set(LIBOMPIMP_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+ endif()
+ add_custom_command(TARGET omp POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_LIB_DIR}
+ COMMAND ${CMAKE_COMMAND} -E copy ${LIBOMPIMP_OUTPUT_DIRECTORY}/${LIBOMP_IMP_LIB_FILE} ${LIBOMP_EXPORTS_LIB_DIR}
+ )
endif()
diff --git a/runtime/cmake/LibompMicroTests.cmake b/runtime/cmake/LibompMicroTests.cmake
index d6e4db2..9eaee06 100644
--- a/runtime/cmake/LibompMicroTests.cmake
+++ b/runtime/cmake/LibompMicroTests.cmake
@@ -40,7 +40,11 @@
# get library location
if(WIN32)
get_target_property(LIBOMP_OUTPUT_DIRECTORY omp RUNTIME_OUTPUT_DIRECTORY)
- get_target_property(LIBOMPIMP_OUTPUT_DIRECTORY ompimp ARCHIVE_OUTPUT_DIRECTORY)
+ if(MSVC)
+ get_target_property(LIBOMPIMP_OUTPUT_DIRECTORY ompimp ARCHIVE_OUTPUT_DIRECTORY)
+ else()
+ get_target_property(LIBOMPIMP_OUTPUT_DIRECTORY omp ARCHIVE_OUTPUT_DIRECTORY)
+ endif()
if(NOT LIBOMPIMP_OUTPUT_DIRECTORY)
set(LIBOMPIMP_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
endif()
diff --git a/runtime/src/CMakeLists.txt b/runtime/src/CMakeLists.txt
index 9f46b4b..e62bd0a 100644
--- a/runtime/src/CMakeLists.txt
+++ b/runtime/src/CMakeLists.txt
@@ -195,28 +195,30 @@ if(WIN32)
# the import library is "re-linked" to include kmp_import.cpp which prevents
# linking of both Visual Studio OpenMP and newly built OpenMP
set_source_files_properties(kmp_import.cpp PROPERTIES COMPILE_FLAGS "${LIBOMP_CONFIGURED_CXXFLAGS}")
- set(LIBOMP_IMP_LIB_FILE ${LIBOMP_LIB_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX})
+ set(LIBOMP_IMP_LIB_FILE ${LIBOMP_LIB_NAME}${CMAKE_IMPORT_LIBRARY_SUFFIX})
set(LIBOMP_GENERATED_IMP_LIB_FILENAME ${LIBOMP_LIB_FILE}${CMAKE_STATIC_LIBRARY_SUFFIX})
set_target_properties(omp PROPERTIES
VERSION ${LIBOMP_VERSION_MAJOR}.${LIBOMP_VERSION_MINOR} # uses /version flag
IMPORT_PREFIX "" IMPORT_SUFFIX "" # control generated import library name when building omp
ARCHIVE_OUTPUT_NAME ${LIBOMP_GENERATED_IMP_LIB_FILENAME}
)
- # Get generated import library from creating omp
- get_target_property(LIBOMP_IMPORT_LIB_DIRECTORY omp ARCHIVE_OUTPUT_DIRECTORY)
- if(LIBOMP_IMPORT_LIB_DIRECTORY)
- set(LIBOMP_GENERATED_IMP_LIB ${LIBOMP_IMPORT_LIB_DIRECTORY}/${LIBOMP_GENERATED_IMP_LIB_FILENAME})
- else()
- set(LIBOMP_GENERATED_IMP_LIB ${CMAKE_CURRENT_BINARY_DIR}/${LIBOMP_GENERATED_IMP_LIB_FILENAME})
+ if(MSVC)
+ # Get generated import library from creating omp
+ get_target_property(LIBOMP_IMPORT_LIB_DIRECTORY omp ARCHIVE_OUTPUT_DIRECTORY)
+ if(LIBOMP_IMPORT_LIB_DIRECTORY)
+ set(LIBOMP_GENERATED_IMP_LIB ${LIBOMP_IMPORT_LIB_DIRECTORY}/${LIBOMP_GENERATED_IMP_LIB_FILENAME})
+ else()
+ set(LIBOMP_GENERATED_IMP_LIB ${CMAKE_CURRENT_BINARY_DIR}/${LIBOMP_GENERATED_IMP_LIB_FILENAME})
+ endif()
+ set_source_files_properties(${LIBOMP_GENERATED_IMP_LIB} PROPERTIES GENERATED TRUE EXTERNAL_OBJECT TRUE)
+ # Create new import library that is just the previously created one + kmp_import.cpp
+ add_library(ompimp STATIC ${LIBOMP_GENERATED_IMP_LIB} kmp_import.cpp)
+ set_target_properties(ompimp PROPERTIES
+ PREFIX "" SUFFIX "" OUTPUT_NAME "${LIBOMP_IMP_LIB_FILE}"
+ LINKER_LANGUAGE C
+ )
+ add_dependencies(ompimp omp) # ensure generated import library is created first
endif()
- set_source_files_properties(${LIBOMP_GENERATED_IMP_LIB} PROPERTIES GENERATED TRUE EXTERNAL_OBJECT TRUE)
- # Create new import library that is just the previously created one + kmp_import.cpp
- add_library(ompimp STATIC ${LIBOMP_GENERATED_IMP_LIB} kmp_import.cpp)
- set_target_properties(ompimp PROPERTIES
- PREFIX "" SUFFIX "" OUTPUT_NAME "${LIBOMP_IMP_LIB_FILE}"
- LINKER_LANGUAGE C
- )
- add_dependencies(ompimp omp) # ensure generated import library is created first

# Create def file to designate exported functions
libomp_get_gdflags(LIBOMP_GDFLAGS) # generate-def.pl flags (Windows only)
@@ -290,7 +292,11 @@ else()
endif()
if(WIN32)
install(TARGETS omp RUNTIME DESTINATION bin)
- install(TARGETS ompimp ARCHIVE DESTINATION "${OPENMP_INSTALL_LIBDIR}")
+ if(MSVC)
+ install(TARGETS ompimp ARCHIVE DESTINATION "${OPENMP_INSTALL_LIBDIR}")
+ else()
+ install(TARGETS omp ARCHIVE DESTINATION "${OPENMP_INSTALL_LIBDIR}")
+ endif()
# Create aliases (regular copies) of the library for backwards compatibility
set(LIBOMP_ALIASES "libiomp5md")
foreach(alias IN LISTS LIBOMP_ALIASES)
--
2.26.2.windows.1

25 changes: 15 additions & 10 deletions mingw-w64-clang/PKGBUILD
Expand Up @@ -32,7 +32,7 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}"
"${MINGW_PACKAGE_PREFIX}-openmp"
"${MINGW_PACKAGE_PREFIX}-polly")
pkgver=10.0.0
pkgrel=1
pkgrel=2
pkgdesc="C language family frontend for LLVM (mingw-w64)"
arch=('any')
url="https://llvm.org/"
Expand Down Expand Up @@ -73,20 +73,21 @@ source=(${_url}/llvm-${pkgver}.src.tar.xz{,.sig}
"0005-add-pthread-as-system-lib-for-mingw.patch"
"0006-add-coff-exported-flag.patch"
"0007-getLoadAddressWithOffset-assertion.patch"
"0008-enable-emutls-for-mingw.patch"
"0009-empty-target-prefix-only-msvc.patch"
"0010-mbig-obj-for-all.patch"
"0012-fix-testplugin-linking.patch"
"0101-Allow-build-static-clang-library-for-mingw.patch"
"0102-fix-libclang-name-for-mingw.patch"
"0104-link-pthread-with-mingw.patch"
"0105-build-libclang-cpp-fix.patch"
"0501-mingw-w64-provides-vasprintf.patch"
"0502-Add-missing-declarations-for-linking-to-psapi.patch"
"0503-lldb-find-mingw-python.patch"
"0504-fix-lldb-library-name-mingw.patch"
"0801-Don-t-build-LLVMPolly-on-WIN32.patch"
"0901-openmp-kpm-lock.patch"
"0902-libomp-weak-mingw.patch")
"0902-libomp-weak-mingw.patch"
"0903-Fix-implib-for-MinGW.patch")
# Some patch notes :)
#0001-0099 -> llvm
#0101-0199 -> clang
Expand Down Expand Up @@ -127,20 +128,21 @@ sha256sums=('df83a44b3a9a71029049ec101fb0077ecbbdf5fe41e395215025779099a98fdf'
'7f0c64cd87b61e894be632f180ae5291e1aa9f1d9d382608f659067eeeda7146'
'2c2431997e664c5b42b359f4134a4773578753e5e25c505ba30de42d357f3057'
'1887ea21fcd591a50dd10559774e872ce1183177e672b028133d9b669e3cac32'
'e1c5f6fa15d6ce9af24dde2b038f0c2fb26a18f2f1200c65405adca6f8d15a6a'
'33400d16d5f6671a8fd60345c3ae44b9777a7d600061957889d14305eb2ad709'
'1c9efccd40a0e7834c3aa9d819aa25cfdd2cec389d1bd3e8a89bc9ff670a0129'
'c486e1d45f6fb2a24823d776d2b47d6930530d423df73cc635f863265210c294'
'b2e5fd29bf666998d495a321690c97fe239bb998abcf0739418ac0ea725fecd6'
'01b029f2a21bd998ce374a90d41d214c891dfbb611dfbd9ca147517cd2c228ea'
'53646dd01af2862473e9719c5223366486268891ccbff86413943a432a8342e9'
'a60f7328d84628a56a9f626e4dc26ffd0c35292c79eeba62ac3d4f25aef2fe5c'
'bb3ab0d55c63b406dfa850c1a882425e76ebe5e2551d7d80ebb0ca2dcb68dab3'
'6ee9d0bd6abe0a3642bb3078fc285b56f945ba6443a9d305d3f54f1c63f0672a'
'd1021748be52cfd447cbfff5f1bfcbb540f7d9e80af7c1bb3f2cc4c0c3a79eab'
'bed7ae642486a8fd0db5afb0b9afcd8a87605de318ad891bf4c9378a2eb09dc2'
'bc394e597f8939b6f6630bd88c990f951738aaadacded2f3be71c658e9608fe7'
'db8dc554f7780609ee4eb4bc9e3817d4a9409b622f6471c8db06c92705805ead'
'f7958638e73273ea6a8df4a4e8726a0904d049fdaea7e84c33db5dec1af08fa8')
'f7958638e73273ea6a8df4a4e8726a0904d049fdaea7e84c33db5dec1af08fa8'
'a633c38149772f90cc34f83b144185746b5a47f7d3d10a97cb060c31d140ab7e')
validpgpkeys=('B6C8F98282B944E3B0D5C2530FC3042E345AD05D' # Hans Wennborg, Google.
'474E22316ABF4785A88C6E8EA2C794A986419D8A') # Tom Stellard
noextract=(clang-${pkgver}.src.tar.xz
Expand Down Expand Up @@ -174,6 +176,7 @@ prepare() {
"0002-Fix-GetHostTriple-for-mingw-w64-in-msys.patch" \
"0004-llvm-config-look-for-unversioned-shared-lib-on-win32.patch" \
"0005-add-pthread-as-system-lib-for-mingw.patch" \
"0008-enable-emutls-for-mingw.patch" \
"0009-empty-target-prefix-only-msvc.patch" \
"0010-mbig-obj-for-all.patch" \
"0012-fix-testplugin-linking.patch"
Expand All @@ -194,10 +197,9 @@ prepare() {

cd "${srcdir}/lldb-${pkgver}.src"
apply_patch_with_msg \
"0501-mingw-w64-provides-vasprintf.patch" \
"0502-Add-missing-declarations-for-linking-to-psapi.patch" \
"0503-lldb-find-mingw-python.patch" \
"0504-fix-lldb-library-name-mingw.patch" \
"0504-fix-lldb-library-name-mingw.patch"

cd "${srcdir}/polly-${pkgver}.src"
# With LLVM_LINK_LLVM_DYLIB=ON it's build before LLVM and fails with undefined references to LLVM functions
Expand All @@ -207,7 +209,8 @@ prepare() {
cd "${srcdir}/openmp-${pkgver}.src"
apply_patch_with_msg \
"0901-openmp-kpm-lock.patch" \
"0902-libomp-weak-mingw.patch"
"0902-libomp-weak-mingw.patch" \
"0903-Fix-implib-for-MinGW.patch"

# At the present, clang must reside inside the LLVM source code tree to build
# See https://bugs.llvm.org/show_bug.cgi?id=4840
Expand Down Expand Up @@ -268,20 +271,23 @@ build() {
-DCLANG_ANALYZER_BUILD_Z3=ON \
-DCMAKE_ASM_MASM_COMPILER="${ASM_COMPILER}" \
-DCMAKE_C_FLAGS="${CFLAGS}" \
-DCMAKE_CXX_FLAGS="${CXXFLAGS} -D_GNU_SOURCE -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS" \
-DCMAKE_CXX_FLAGS="${CXXFLAGS} -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS" \
-DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
-DCMAKE_SYSTEM_IGNORE_PATH=/usr/lib \
-DFFI_INCLUDE_DIR="${FFI_INCLUDE_DIR}" \
-DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON \
-DLIBCLANG_BUILD_STATIC=ON \
-DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF \
-DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF \
-DLIBCXX_ENABLE_SHARED=OFF \
-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \
-DLIBCXX_HAS_WIN32_THREAD_API=ON \
-DLIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS=OFF \
-DLIBCXXABI_ENABLE_SHARED=OFF \
-DLIBOMP_ASMFLAGS="${ASM_COMPILER_FLAGS}" \
-DLIBOMP_FORTRAN_MODULES=ON \
-DLIBUNWIND_ENABLE_SHARED=ON \
-DLIBUNWIND_USE_COMPILER_RT=ON \
-DLLDB_ENABLE_LIBEDIT=OFF \
-DLLDB_RELOCATABLE_PYTHON=ON \
-DLLDB_USE_SYSTEM_SIX=ON \
Expand Down Expand Up @@ -561,7 +567,6 @@ package_mingw-w64-x86_64-openmp(){
package_openmp
}


package_mingw-w64-x86_64-lld(){
package_lld
}
Expand Down

0 comments on commit e071f27

Please sign in to comment.