xref: /reactos/toolchain-msvc.cmake (revision a1fc312a)
1
2# pass variables necessary for the toolchain (needed for try_compile)
3set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES ARCH USE_CLANG_CL)
4
5# the name of the target operating system
6set(CMAKE_SYSTEM_NAME Windows)
7set(CMAKE_SYSTEM_PROCESSOR i686)
8
9# set the generator platform
10if (NOT DEFINED CMAKE_GENERATOR_PLATFORM)
11    if(ARCH STREQUAL "amd64")
12        set(CMAKE_GENERATOR_PLATFORM "x64")
13    elseif(ARCH STREQUAL "arm")
14        set(CMAKE_GENERATOR_PLATFORM "ARM")
15    elseif(ARCH STREQUAL "arm64")
16        set(CMAKE_GENERATOR_PLATFORM "ARM64")
17    else()
18        set(CMAKE_GENERATOR_PLATFORM "Win32")
19    endif()
20endif()
21
22if(USE_CLANG_CL)
23    set(CMAKE_C_COMPILER clang-cl)
24    set(CMAKE_CXX_COMPILER clang-cl)
25    # Clang now defaults to lld-link which we're not compatible with yet
26    set(CMAKE_LINKER link)
27    # Explicitly set target so CMake doesn't get confused
28    if (ARCH STREQUAL "amd64")
29        set(CMAKE_C_COMPILER_TARGET "x86_64-pc-windows-msvc")
30        set(CMAKE_CXX_COMPILER_TARGET "x86_64-pc-windows-msvc")
31    elseif(ARCH STREQUAL "arm")
32        set(CMAKE_C_COMPILER_TARGET "arm-pc-windows-msvc")
33        set(CMAKE_CXX_COMPILER_TARGET "arm-pc-windows-msvc")
34    elseif(ARCH STREQUAL "arm64")
35        set(CMAKE_C_COMPILER_TARGET "arm64-pc-windows-msvc")
36        set(CMAKE_CXX_COMPILER_TARGET "arm64-pc-windows-msvc")
37    else()
38        set(CMAKE_C_COMPILER_TARGET "i686-pc-windows-msvc")
39        set(CMAKE_CXX_COMPILER_TARGET "i686-pc-windows-msvc")
40    endif()
41else()
42    set(CMAKE_C_COMPILER cl)
43    set(CMAKE_CXX_COMPILER cl)
44endif()
45
46set(CMAKE_MC_COMPILER mc)
47set(CMAKE_RC_COMPILER rc)
48if(ARCH STREQUAL "amd64")
49    set(CMAKE_ASM_MASM_COMPILER ml64)
50    set(CMAKE_ASM_MASM_FLAGS_INIT "/Cp")
51elseif(ARCH STREQUAL "arm")
52    set(CMAKE_ASM_MASM_COMPILER armasm)
53elseif(ARCH STREQUAL "arm64")
54    set(CMAKE_ASM_MASM_COMPILER armasm64)
55else()
56    set(CMAKE_ASM_MASM_COMPILER ml)
57    set(CMAKE_ASM_MASM_FLAGS_INIT "/Cp")
58endif()
59
60set(CMAKE_C_STANDARD_LIBRARIES "" CACHE INTERNAL "")
61
62set(CMAKE_USER_MAKE_RULES_OVERRIDE "${CMAKE_CURRENT_LIST_DIR}/overrides-msvc.cmake")
63