Issue #829: attempt to detect clang-cl.exe and pass MSVC-compatile command line arguments.
This commit is contained in:
@@ -276,7 +276,24 @@ message(STATUS "Wrote ${PROJECT_BINARY_DIR}/config.h")
|
|||||||
configure_file(${PROJECT_SOURCE_DIR}/cmake/json_config.h.in ${PROJECT_BINARY_DIR}/json_config.h)
|
configure_file(${PROJECT_SOURCE_DIR}/cmake/json_config.h.in ${PROJECT_BINARY_DIR}/json_config.h)
|
||||||
message(STATUS "Wrote ${PROJECT_BINARY_DIR}/json_config.h")
|
message(STATUS "Wrote ${PROJECT_BINARY_DIR}/json_config.h")
|
||||||
|
|
||||||
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
|
if (NOT DEFINED CMAKE_C_COMPILER_FRONTEND_VARIANT) # only available in cmake 3.14+
|
||||||
|
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
|
||||||
|
set(CMAKE_C_COMPILER_FRONTEND_VARIANT "MSVC")
|
||||||
|
elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
|
||||||
|
set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
|
||||||
|
elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
|
||||||
|
# Detect clang-cl.exe, it is Clang but with MSVC compatible command line arguments
|
||||||
|
execute_process (COMMAND ${CMAKE_C_COMPILER} -? ERROR_QUIET OUTPUT_QUIET RESULT_VARIABLE _clang_result)
|
||||||
|
if (_clang_result EQUAL 0)
|
||||||
|
set(CMAKE_C_COMPILER_FRONTEND_VARIANT "MSVC")
|
||||||
|
else()
|
||||||
|
set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
|
||||||
|
message(STATUS, "clang result is NOT 0")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if ("${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "GNU" OR "${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "Clang")
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffunction-sections -fdata-sections")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffunction-sections -fdata-sections")
|
||||||
if ("${DISABLE_WERROR}" STREQUAL "OFF")
|
if ("${DISABLE_WERROR}" STREQUAL "OFF")
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
|
||||||
@@ -293,11 +310,11 @@ if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_C_COMPILER_ID}" STREQUAL
|
|||||||
|
|
||||||
add_definitions(-D_GNU_SOURCE)
|
add_definitions(-D_GNU_SOURCE)
|
||||||
|
|
||||||
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
|
if ("${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "Clang")
|
||||||
# Remove this for 1.0 when we can bump the ABI and actually fix these warnings.
|
# Remove this for 1.0 when we can bump the ABI and actually fix these warnings.
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-shorten-64-to-32")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-shorten-64-to-32")
|
||||||
endif()
|
endif()
|
||||||
elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
|
elseif ("${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "MSVC")
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /DEBUG")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /DEBUG")
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4100")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4100")
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4996")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4996")
|
||||||
@@ -308,7 +325,7 @@ elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
|
|||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4701")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4701")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC"))
|
if (NOT ("${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "MSVC"))
|
||||||
check_c_source_compiles(
|
check_c_source_compiles(
|
||||||
"
|
"
|
||||||
/* uClibc toolchains without threading barf when _REENTRANT is defined */
|
/* uClibc toolchains without threading barf when _REENTRANT is defined */
|
||||||
|
|||||||
Reference in New Issue
Block a user