diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3b61db65ac0..fc5600f9200 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -102,7 +102,9 @@ jobs: runs-on: windows-latest steps: - name: Install packages - run: choco install ninja -y + run: | + choco install ninja -y + choco install --x86 -y llvm - name: Install Flex and Bison run: | curl -O https://svn.reactos.org/storage/vperevertkin/flexbison.7z @@ -121,7 +123,7 @@ jobs: run: | mkdir build cd build - $env:PATH = "$env:VCToolsInstallDir\..\..\Llvm\bin;$env:PATH" + $env:PATH = "${env:PROGRAMFILES(X86)}\llvm\bin;$env:PATH" cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=i386 -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 -DUSE_CLANG_CL:BOOL=1 ${{github.workspace}}\src - name: Build working-directory: ${{github.workspace}}\build diff --git a/toolchain-msvc.cmake b/toolchain-msvc.cmake index f1ff2d77570..e30e075cba0 100644 --- a/toolchain-msvc.cmake +++ b/toolchain-msvc.cmake @@ -13,11 +13,38 @@ endif() set(CMAKE_SYSTEM_NAME Windows) set(CMAKE_SYSTEM_PROCESSOR i686) +# set the generator platform +if (NOT DEFINED CMAKE_GENERATOR_PLATFORM) + if(ARCH STREQUAL "amd64") + set(CMAKE_GENERATOR_PLATFORM "x64") + elseif(ARCH STREQUAL "arm") + set(CMAKE_GENERATOR_PLATFORM "ARM") + elseif(ARCH STREQUAL "arm64") + set(CMAKE_GENERATOR_PLATFORM "ARM64") + else() + set(CMAKE_GENERATOR_PLATFORM "Win32") + endif() +endif() + if(USE_CLANG_CL) set(CMAKE_C_COMPILER clang-cl) set(CMAKE_CXX_COMPILER clang-cl) # Clang now defaults to lld-link which we're not compatible with yet set(CMAKE_LINKER link) + # Explicitly set target so CMake doesn't get confused + if (ARCH STREQUAL "amd64") + set(CMAKE_C_COMPILER_TARGET "x86_64-pc-windows-msvc") + set(CMAKE_CXX_COMPILER_TARGET "x86_64-pc-windows-msvc") + elseif(ARCH STREQUAL "arm") + set(CMAKE_C_COMPILER_TARGET "arm-pc-windows-msvc") + set(CMAKE_CXX_COMPILER_TARGET "arm-pc-windows-msvc") + elseif(ARCH STREQUAL "arm64") + set(CMAKE_C_COMPILER_TARGET "arm64-pc-windows-msvc") + set(CMAKE_CXX_COMPILER_TARGET "arm64-pc-windows-msvc") + else() + set(CMAKE_C_COMPILER_TARGET "i686-pc-windows-msvc") + set(CMAKE_CXX_COMPILER_TARGET "i686-pc-windows-msvc") + endif() else() set(CMAKE_C_COMPILER cl) set(CMAKE_CXX_COMPILER cl) @@ -35,6 +62,7 @@ else() set(CMAKE_ASM_COMPILER ml) endif() + set(CMAKE_C_STANDARD_LIBRARIES "" CACHE INTERNAL "") set(CMAKE_USER_MAKE_RULES_OVERRIDE "${CMAKE_CURRENT_LIST_DIR}/overrides-msvc.cmake")