| @@ -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 */ | ||||