diff options
author | SR_team | 2023-12-12 07:43:33 +0200 |
---|---|---|
committer | SR_team | 2023-12-12 07:43:33 +0200 |
commit | e96fbbdab06f0c2104bcaa9d1dfd3ee0c8080e7b (patch) | |
tree | 9a7201688e33e54d679a3ca0dc891797b0bdcfe7 | |
parent | 02b9b9eae60ec5beb1201affc3cf06ed85e0db74 (diff) | |
download | aur-e96fbbdab06f0c2104bcaa9d1dfd3ee0c8080e7b.tar.gz |
Add clang-cl toolchains
-rw-r--r-- | .SRCINFO | 6 | ||||
-rw-r--r-- | PKGBUILD | 27 | ||||
-rw-r--r-- | toolchain-clang-cl.cmake | 24 |
3 files changed, 47 insertions, 10 deletions
@@ -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 @@ -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) + |