summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorSR_team2023-12-12 07:43:33 +0200
committerSR_team2023-12-12 07:43:33 +0200
commite96fbbdab06f0c2104bcaa9d1dfd3ee0c8080e7b (patch)
tree9a7201688e33e54d679a3ca0dc891797b0bdcfe7
parent02b9b9eae60ec5beb1201affc3cf06ed85e0db74 (diff)
downloadaur-e96fbbdab06f0c2104bcaa9d1dfd3ee0c8080e7b.tar.gz
Add clang-cl toolchains
-rw-r--r--.SRCINFO6
-rw-r--r--PKGBUILD27
-rw-r--r--toolchain-clang-cl.cmake24
3 files changed, 47 insertions, 10 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 70ff7ee8ecee..9d81e3ad3e96 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = msvc-wine-git
pkgdesc = MSVC compiler with CMake toolchains. Compiler work in Wine64
- pkgver = 17.7.r4
- pkgrel = 2
+ pkgver = 17.8.r3
+ pkgrel = 1
url = https://github.com/mstorsjo/msvc-wine
arch = x86_64
license = EULA
@@ -29,8 +29,10 @@ pkgbase = msvc-wine-git
source = git+https://github.com/mstorsjo/msvc-wine.git
source = msvc-cmake.sh
source = toolchain-msvc.cmake
+ source = toolchain-clang-cl.cmake
sha256sums = SKIP
sha256sums = f6e7660c2ecf32fedd16dbe7a8765ce902bdad21d7329fa57870b979ad682dd7
sha256sums = ea2bda01685600ecf044c5685558cb3fea9f20025deb288ba5270b5bb715d97f
+ sha256sums = d87c390b77b99e82dce650fbb9397b2c64af976eb0581eddb94e7874a11afaa5
pkgname = msvc-wine-git
diff --git a/PKGBUILD b/PKGBUILD
index cca858e72cf5..4978c51e83cd 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,6 +1,6 @@
pkgname=msvc-wine-git
-pkgver=17.7.r4
-pkgrel=2
+pkgver=17.8.r3
+pkgrel=1
pkgdesc='MSVC compiler with CMake toolchains. Compiler work in Wine64'
arch=('x86_64')
url='https://github.com/mstorsjo/msvc-wine'
@@ -14,10 +14,12 @@ provides=(msvc-x86-cmake msvc-x64-cmake msvc-arm-cmake msvc-arm64-cmake)
conflicts=(msvc-wine msvc-wine-git)
source=('git+https://github.com/mstorsjo/msvc-wine.git'
'msvc-cmake.sh'
- 'toolchain-msvc.cmake')
+ 'toolchain-msvc.cmake'
+ 'toolchain-clang-cl.cmake')
sha256sums=('SKIP'
'f6e7660c2ecf32fedd16dbe7a8765ce902bdad21d7329fa57870b979ad682dd7'
- 'ea2bda01685600ecf044c5685558cb3fea9f20025deb288ba5270b5bb715d97f')
+ 'ea2bda01685600ecf044c5685558cb3fea9f20025deb288ba5270b5bb715d97f'
+ 'd87c390b77b99e82dce650fbb9397b2c64af976eb0581eddb94e7874a11afaa5')
options=('!strip' 'libtool' 'staticlibs' 'emptydirs')
_architectures="x86 x64 arm arm64"
@@ -35,9 +37,11 @@ prepare() {
_cmake_architectures["arm64"]="aarch64"
for _arch in ${_architectures}; do
- sed "s|@PROCESSOR@|${_arch}|g" toolchain-msvc.cmake > toolchain-${_arch}.cmake
sed "s|@PROCESSOR@|${_arch}|g" msvc-cmake.sh > msvc-${_arch}-cmake
+ sed "s|@PROCESSOR@|${_arch}|g" toolchain-msvc.cmake > toolchain-${_arch}.cmake
sed "s|@CMAKE_PROCESSOR@|${_cmake_architectures[$_arch]}|g" -i toolchain-${_arch}.cmake
+ sed "s|@PROCESSOR@|${_arch}|g" toolchain-clang-cl.cmake > toolchain-${_arch}-clang.cmake
+ sed "s|@CMAKE_PROCESSOR@|${_cmake_architectures[$_arch]}|g" -i toolchain-${_arch}-clang.cmake
done
}
@@ -55,13 +59,19 @@ package() {
cat "${srcdir}/msvc/bin/${_arch}/msvcenv.sh.patched" | sed 's/BASE_UNIX=.*/BASE_UNIX='\\/opt\\/msvc/ > "${srcdir}/msvc/bin/${_arch}/msvcenv.sh"
rm "${srcdir}/msvc/bin/${_arch}/msvcenv.sh.patched"
- # Create toolchains for IDE's to resolve include dirs in VSCode, QtCreator, etc
- # NOTE: For correct clangd works it also required flag `-fms-compatibility-version=19.37` (or newer) in .clangd config or compile_commands.json
MSVCVER=`grep MSVCVER= "${srcdir}/msvc/bin/${_arch}/msvcenv.sh"`
SDKVER=`grep SDKVER= "${srcdir}/msvc/bin/${_arch}/msvcenv.sh"`
SDK_UNIX=`grep SDK_UNIX= "${srcdir}/msvc/bin/${_arch}/msvcenv.sh"`
+ INCLUDE_DIRS="include_directories (BEFORE SYSTEM /opt/msvc/vc/tools/msvc/${MSVCVER:8}/include /opt/msvc/${SDK_UNIX:9}/include/${SDKVER:7}/shared /opt/msvc/${SDK_UNIX:9}/include/${SDKVER:7}/ucrt /opt/msvc/${SDK_UNIX:9}/include/${SDKVER:7}/um /opt/msvc/${SDK_UNIX:9}/include/${SDKVER:7}/winrt /opt/msvc/${SDK_UNIX:9}/include/${SDKVER:7}/cppwinrt/winrt)"
+
+ # Create toolchains for IDE's to resolve include dirs in VSCode, QtCreator, etc
+ # NOTE: For correct clangd works it also required flag `-fms-compatibility-version=19.37` (or newer) in .clangd config or compile_commands.json
echo "include (/opt/msvc/cmake/toolchain-${_arch}.cmake)" > toolchain-${_arch}-ide.cmake
- echo "include_directories (BEFORE SYSTEM /opt/msvc/vc/tools/msvc/${MSVCVER:8}/include /opt/msvc/${SDK_UNIX:9}/include/${SDKVER:7}/shared /opt/msvc/${SDK_UNIX:9}/include/${SDKVER:7}/ucrt /opt/msvc/${SDK_UNIX:9}/include/${SDKVER:7}/um /opt/msvc/${SDK_UNIX:9}/include/${SDKVER:7}/winrt /opt/msvc/${SDK_UNIX:9}/include/${SDKVER:7}/cppwinrt/winrt)" >> toolchain-${_arch}-ide.cmake
+ echo "$INCLUDE_DIRS" >> toolchain-${_arch}-ide.cmake
+
+ # Create toolchains for clang-cl
+ echo "$INCLUDE_DIRS" >> toolchain-${_arch}-clang.cmake
+ echo "link_directories (BEFORE /opt/msvc/vc/tools/msvc/${MSVCVER:8}/lib/${_arch} /opt/msvc/${SDK_UNIX:9}/lib/${SDKVER:7}/ucrt/${_arch} /opt/msvc/${SDK_UNIX:9}/lib/${SDKVER:7}/um/${_arch})" >> toolchain-${_arch}-clang.cmake
done
mkdir -p "${pkgdir}/opt/msvc"
@@ -73,6 +83,7 @@ package() {
for _arch in ${_architectures}; do
mkdir -p "${pkgdir}/opt/msvc/cmake/find_root/${_arch}"
mv "${srcdir}/toolchain-${_arch}.cmake" "${pkgdir}/opt/msvc/cmake/toolchain-${_arch}.cmake"
+ mv "${srcdir}/toolchain-${_arch}-clang.cmake" "${pkgdir}/opt/msvc/cmake/toolchain-${_arch}-clang.cmake"
mv "${srcdir}/toolchain-${_arch}-ide.cmake" "${pkgdir}/opt/msvc/cmake/ide/toolchain-${_arch}.cmake"
mv "${srcdir}/msvc-${_arch}-cmake" "${pkgdir}/usr/bin/msvc-${_arch}-cmake"
chmod 755 "${pkgdir}/usr/bin/msvc-${_arch}-cmake"
diff --git a/toolchain-clang-cl.cmake b/toolchain-clang-cl.cmake
new file mode 100644
index 000000000000..85b38046891f
--- /dev/null
+++ b/toolchain-clang-cl.cmake
@@ -0,0 +1,24 @@
+set (CMAKE_SYSTEM_NAME Windows)
+set (CMAKE_SYSTEM_PROCESSOR @CMAKE_PROCESSOR@)
+
+# specify the cross compiler
+set (CMAKE_C_COMPILER clang-cl)
+set (CMAKE_CXX_COMPILER clang-cl)
+
+add_compile_options (--target=@CMAKE_PROCESSOR@-windows-msvc -fuse-ld=lld)
+add_link_options (/machine:@PROCESSOR@)
+
+# where is the target environment
+set (CMAKE_FIND_ROOT_PATH /opt/msvc/cmake/find_root/@PROCESSOR@)
+
+# search for programs in the build host directories
+set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+# for libraries and headers in the target directories
+set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+set (CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
+
+# set the resource compiler
+set (CMAKE_RC_COMPILER llvm-rc)
+set (CMAKE_MT llvm-mt)
+