Skip to content

Commit 45d6aa1

Browse files
committed
cmake: some DaemonCompiler fixes
- do not use space in compiler string definition, it is not compatible with the standalone MinGW for Windows - easier way to check for a compiler - fix PCH - fix Zig build - unify sub-compiler version separator and name with compiler ones - also log compiler sub-command
1 parent 0bdb698 commit 45d6aa1

File tree

3 files changed

+18
-12
lines changed

3 files changed

+18
-12
lines changed

CMakeLists.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -363,9 +363,8 @@ function(ADD_PRECOMPILED_HEADER Target)
363363
set(Header ${COMMON_DIR}/Common.h)
364364

365365
# Compiler-specific PCH support
366-
try_c_cxx_flag(PCH "-pch")
367-
368-
if (PCH)
366+
if ((DAEMON_CXX_COMPILER_GCC_COMPATIBILITY OR DAEMON_CXX_COMPILER_Clang_COMPATIBILITY)
367+
AND NOT DAEMON_CXX_COMPILER_ICC)
369368
# CMAKE_CXX_COMPILER_ARG1 is used with compilers using subcommands.
370369
# For example when doing: cmake -D'CMAKE_CXX_COMPILER'='zig;c++'
371370
# CMAKE_CXX_COMPILER will be "zig",
@@ -381,10 +380,11 @@ function(ADD_PRECOMPILED_HEADER Target)
381380
add_dependencies(${Target} ${Target}-pch)
382381

383382
# PNaCl clang doesn't support -include-pch properly
384-
if (DAEMON_CXX_COMPILER_NAME STREQUAL "PNaCl")
385-
set_property(TARGET ${Target} APPEND PROPERTY COMPILE_OPTIONS "-include;${OBJ_DIR}/${Target}.h;-Winvalid-pch")
386-
else()
383+
if (DAEMON_CXX_COMPILER_Clang_COMPATIBILITY
384+
AND NOT DAEMON_CXX_COMPILER_PNaCl)
387385
set_property(TARGET ${Target} APPEND PROPERTY COMPILE_OPTIONS "-include-pch;${OBJ_DIR}/${Target}.h.gch")
386+
else()
387+
set_property(TARGET ${Target} APPEND PROPERTY COMPILE_OPTIONS "-include;${OBJ_DIR}/${Target}.h;-Winvalid-pch")
388388
endif()
389389
elseif (MSVC)
390390
# /Fp sets the PCH path used by either of the /Yc and /Yu options.

cmake/DaemonCompiler.cmake

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ foreach(lang C;CXX)
194194
if (DAEMON_${lang}_COMPILER_Clang_COMPATIBILITY)
195195
if (NOT DAEMON_${lang}_COMPILER_NAME STREQUAL "Clang")
196196
set(DAEMON_${lang}_COMPILER_EXTENDED_VERSION
197-
"${DAEMON_${lang}_COMPILER_VERSION}/clang-${DAEMON_${lang}_COMPILER_Clang_VERSION}")
197+
"${DAEMON_${lang}_COMPILER_VERSION}/Clang_${DAEMON_${lang}_COMPILER_Clang_VERSION}")
198198
endif()
199199
elseif (DAEMON_${lang}_COMPILER_GCC_COMPATIBILITY)
200200
if (NOT DAEMON_${lang}_COMPILER_NAME STREQUAL "GCC")
@@ -213,7 +213,7 @@ foreach(lang C;CXX)
213213
# GCC we are looking for.
214214
if ("${CUSTOM_${lang}_GCC_OUTPUT}" MATCHES "\ngcc version ")
215215
set(DAEMON_${lang}_COMPILER_EXTENDED_VERSION
216-
"${DAEMON_${lang}_COMPILER_VERSION}/gcc-${DAEMON_${lang}_COMPILER_GCC_VERSION}")
216+
"${DAEMON_${lang}_COMPILER_VERSION}/GCC_${DAEMON_${lang}_COMPILER_GCC_VERSION}")
217217
endif()
218218
endif()
219219
endif()
@@ -225,11 +225,17 @@ foreach(lang C;CXX)
225225
endif()
226226

227227
set(DAEMON_${lang}_COMPILER_STRING
228-
"${DAEMON_${lang}_COMPILER_NAME} ${DAEMON_${lang}_COMPILER_EXTENDED_VERSION} ${DAEMON_${lang}_COMPILER_BASENAME}")
228+
"${DAEMON_${lang}_COMPILER_NAME}_${DAEMON_${lang}_COMPILER_EXTENDED_VERSION}:${DAEMON_${lang}_COMPILER_BASENAME}")
229+
230+
if (CMAKE_CXX_COMPILER_ARG1)
231+
set(DAEMON_${lang}_COMPILER_STRING "${DAEMON_${lang}_COMPILER_STRING}:${CMAKE_CXX_COMPILER_ARG1}")
232+
endif()
229233

230234
message(STATUS "Detected ${${lang}_NAME} compiler: ${DAEMON_${lang}_COMPILER_STRING}")
231235

232-
add_definitions(-DDAEMON_${lang}_COMPILER_${DAEMON_${lang}_COMPILER_NAME}=1)
236+
set(compiler_var_name "DAEMON_${lang}_COMPILER_${DAEMON_${lang}_COMPILER_NAME}")
237+
set(${compiler_var_name} ON)
238+
add_definitions(-D${compiler_var_name}=1)
233239

234240
# Preprocessor definitions containing '#' may not be passed on the compiler
235241
# command line because many compilers do not support it.

cmake/DaemonFlags.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,9 +438,9 @@ elseif (NOT NACL)
438438

439439
if (ARCH STREQUAL "amd64")
440440
# K8 or EM64T minimum: AMD Athlon 64 ClawHammer, Intel Xeon Nocona, Intel Pentium 4 model F (Prescott revision EO), VIA Nano.
441-
if ("${DAEMON_CXX_COMPILER_NAME}" STREQUAL "ICC")
441+
if (DAEMON_CXX_COMPILER_ICC)
442442
set(GCC_GENERIC_ARCH "pentium4")
443-
elseif ("${DAEMON_CXX_COMPILER_NAME}" STREQUAL "Zig")
443+
elseif (DAEMON_CXX_COMPILER_Zig)
444444
set(GCC_GENERIC_ARCH "x86_64")
445445
else()
446446
set(GCC_GENERIC_ARCH "x86-64")

0 commit comments

Comments
 (0)