diff --git a/reactos/cmake/gcc.cmake b/reactos/cmake/gcc.cmake index ed2f656f3cb..d8ea5436aa8 100644 --- a/reactos/cmake/gcc.cmake +++ b/reactos/cmake/gcc.cmake @@ -40,13 +40,19 @@ set(REACTOS_SOURCE_DIR_NATIVE ${REACTOS_SOURCE_DIR}) if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") string(REPLACE "/" "\\" REACTOS_SOURCE_DIR_NATIVE ${REACTOS_SOURCE_DIR}) endif() -add_compile_flags("-fdebug-prefix-map=\"${REACTOS_SOURCE_DIR_NATIVE}\"=ReactOS") + +if(NOT CMAKE_C_COMPILER_ID STREQUAL "Clang") + add_compile_flags("-fdebug-prefix-map=\"${REACTOS_SOURCE_DIR_NATIVE}\"=ReactOS") +endif() # Debugging if(SEPARATE_DBG) add_compile_flags("-gdwarf-2 -g2") else() - add_compile_flags("-gdwarf-2 -gstrict-dwarf -femit-struct-debug-detailed=none -feliminate-unused-debug-symbols") + add_compile_flags("-gdwarf-2 -gstrict-dwarf") + if(NOT CMAKE_C_COMPILER_ID STREQUAL "Clang") + add_compile_flags("-femit-struct-debug-detailed=none -feliminate-unused-debug-symbols") + endif() endif() # For some reason, cmake sets -fPIC, and we don't want it @@ -63,8 +69,14 @@ endif() # Warnings, errors add_compile_flags("-Werror -Wall -Wpointer-arith") -add_compile_flags("-Wno-char-subscripts -Wno-multichar -Wno-unused-value -Wno-maybe-uninitialized") -add_compile_flags("-Wno-error=unused-but-set-variable -Wno-error=narrowing") +add_compile_flags("-Wno-char-subscripts -Wno-multichar -Wno-unused-value") + +if(NOT CMAKE_C_COMPILER_ID STREQUAL "Clang") + add_compile_flags("-Wno-maybe-uninitialized") + add_compile_flags("-Wno-error=unused-but-set-variable") +endif() + +add_compile_flags("-Wno-error=narrowing") add_compile_flags("-Wtype-limits -Wno-error=type-limits") if(ARCH STREQUAL "amd64") @@ -96,7 +108,10 @@ if(LTCG) endif() if(ARCH STREQUAL "i386") - add_compile_flags("-mpreferred-stack-boundary=3 -fno-set-stack-executable -fno-optimize-sibling-calls -fno-omit-frame-pointer") + add_compile_flags("-fno-optimize-sibling-calls -fno-omit-frame-pointer") + if(NOT CMAKE_C_COMPILER_ID STREQUAL "Clang") + add_compile_flags("-mpreferred-stack-boundary=3 -fno-set-stack-executable") + endif() # FIXME: this doesn't work. CMAKE_BUILD_TYPE is always "Debug" if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") add_compile_flags("-momit-leaf-frame-pointer") @@ -174,9 +189,13 @@ endif() set(CMAKE_EXE_LINKER_FLAGS "-nostdlib -Wl,--enable-auto-image-base,--disable-auto-import,--disable-stdcall-fixup") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS_INIT} -Wl,--disable-stdcall-fixup") -SET(CMAKE_C_COMPILE_OBJECT "${CCACHE} -Wa,--compress-debug-sections -o -c ") +if(NOT CMAKE_C_COMPILER_ID STREQUAL "Clang") + set(_compress_debug_sections_flag "-Wa,--compress-debug-sections") +endif() + +SET(CMAKE_C_COMPILE_OBJECT "${CCACHE} ${_compress_debug_sections_flag} -o -c ") SET(CMAKE_CXX_COMPILE_OBJECT "${CCACHE} -o -c ") -set(CMAKE_ASM_COMPILE_OBJECT " -Wa,--compress-debug-sections -x assembler-with-cpp -o -I${REACTOS_SOURCE_DIR}/include/asm -I${REACTOS_BINARY_DIR}/include/asm -D__ASM__ -c ") +set(CMAKE_ASM_COMPILE_OBJECT " ${_compress_debug_sections_flag} -x assembler-with-cpp -o -I${REACTOS_SOURCE_DIR}/include/asm -I${REACTOS_BINARY_DIR}/include/asm -D__ASM__ -c ") set(CMAKE_RC_COMPILE_OBJECT " -O coff -DRC_INVOKED -D__WIN32__=1 -D__FLAT__=1 ${I18N_DEFS} ") set(CMAKE_DEPFILE_FLAGS_RC "--preprocessor \"${MINGW_TOOLCHAIN_PREFIX}gcc${MINGW_TOOLCHAIN_SUFFIX} -E -xc-header -MMD -MF -MT \" ")