[CMAKE] Some options are only supported by GCC, don't use them for clang
[reactos.git] / toolchain-clang.cmake
1
2 if(NOT ARCH)
3 set(ARCH i386)
4 endif()
5
6 if(DEFINED ENV{_ROSBE_ROSSCRIPTDIR})
7 set(CMAKE_SYSROOT $ENV{_ROSBE_ROSSCRIPTDIR}/$ENV{ROS_ARCH})
8 endif()
9
10 # The name of the target operating system
11 set(CMAKE_SYSTEM_NAME Windows)
12 # The processor we are targeting
13 if (ARCH STREQUAL "i386")
14 set(CMAKE_SYSTEM_PROCESSOR i686)
15 elseif (ARCH STREQUAL "amd64")
16 set(CMAKE_SYSTEM_PROCESSOR x86_64)
17 elseif(ARCH STREQUAL "arm")
18 set(CMAKE_SYSTEM_PROCESSOR arm)
19 else()
20 message(ERROR "Unsupported ARCH: ${ARCH}")
21 endif()
22
23 if (DEFINED CLANG_VERSION)
24 set(CLANG_SUFFIX "-${CLANG_VERSION}")
25 else()
26 set(CLANG_SUFFIX "")
27 endif()
28
29 # Which tools to use
30 set(triplet ${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32)
31 if (CMAKE_HOST_WIN32)
32 set(GCC_TOOLCHAIN_PREFIX "")
33 else()
34 set(GCC_TOOLCHAIN_PREFIX "${triplet}-")
35 endif()
36
37 set(CMAKE_C_COMPILER clang${CLANG_SUFFIX})
38 set(CMAKE_C_COMPILER_TARGET ${triplet})
39 set(CMAKE_CXX_COMPILER clang++${CLANG_SUFFIX})
40 set(CMAKE_CXX_COMPILER_TARGET ${triplet})
41 set(CMAKE_ASM_COMPILER ${GCC_TOOLCHAIN_PREFIX}gcc)
42 set(CMAKE_ASM_COMPILER_ID GNU)
43 set(CMAKE_MC_COMPILER ${GCC_TOOLCHAIN_PREFIX}windmc)
44 set(CMAKE_RC_COMPILER ${GCC_TOOLCHAIN_PREFIX}windres)
45 # set(CMAKE_AR ${triplet}-ar)
46 # set(CMAKE_DLLTOOL ${triplet}-dlltool)
47
48 # This allows to have CMake test the compiler without linking
49 set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
50
51 set(CMAKE_C_CREATE_STATIC_LIBRARY "<CMAKE_AR> crT <TARGET> <LINK_FLAGS> <OBJECTS>")
52 set(CMAKE_CXX_CREATE_STATIC_LIBRARY ${CMAKE_C_CREATE_STATIC_LIBRARY})
53 set(CMAKE_ASM_CREATE_STATIC_LIBRARY ${CMAKE_C_CREATE_STATIC_LIBRARY})
54
55 set(CMAKE_C_STANDARD_LIBRARIES "-lgcc" CACHE STRING "Standard C Libraries")
56 set(CMAKE_CXX_STANDARD_LIBRARIES "-lgcc" CACHE STRING "Standard C++ Libraries")
57
58 if (DEFINED CMAKE_SYSROOT)
59 set(LD_EXECUTABLE ${CMAKE_SYSROOT}/bin/${GCC_TOOLCHAIN_PREFIX}ld)
60 else()
61 set(LD_EXECUTABLE ${GCC_TOOLCHAIN_PREFIX}ld)
62 endif()
63
64 set(CMAKE_SHARED_LINKER_FLAGS_INIT "-nostdlib -Wl,--enable-auto-image-base,--disable-auto-import -fuse-ld=${LD_EXECUTABLE}")
65 set(CMAKE_MODULE_LINKER_FLAGS_INIT "-nostdlib -Wl,--enable-auto-image-base,--disable-auto-import -fuse-ld=${LD_EXECUTABLE}")
66 set(CMAKE_EXE_LINKER_FLAGS_INIT "-nostdlib -Wl,--enable-auto-image-base,--disable-auto-import -fuse-ld=${LD_EXECUTABLE}")