diff --git a/reactos/CMakeLists.txt b/reactos/CMakeLists.txt index f96d1297b1c..81658b660af 100644 --- a/reactos/CMakeLists.txt +++ b/reactos/CMakeLists.txt @@ -137,6 +137,12 @@ else() elseif(ARCH MATCHES arm) add_definitions(-DUSE_COMPILER_EXCEPTIONS) endif() + + # Activate support for assembly source files + enable_language(ASM) + + # Activate language support for resource files + enable_language(RC) # Compiler specific definitions and macros if(MSVC) @@ -151,12 +157,6 @@ else() # IDL macros for widl/midl include(cmake/idl-support.cmake) - # Activate support for assembly source files - enable_language(ASM) - - # Activate language support for resource files - enable_language(RC) - if(MSVC AND USE_WDK_HEADERS) include_directories( include diff --git a/reactos/cmake/compilerflags.cmake b/reactos/cmake/compilerflags.cmake index 4c56b99f81f..01501d0db0b 100644 --- a/reactos/cmake/compilerflags.cmake +++ b/reactos/cmake/compilerflags.cmake @@ -43,6 +43,7 @@ function(add_compile_flags _flags) # Adds the compiler flag to both CMAKE_C_FLAGS and CMAKE_CXX_FLAGS set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flags}" PARENT_SCOPE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flags}" PARENT_SCOPE) + set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${_flags}" PARENT_SCOPE) endfunction() function(add_target_compile_flags _module _flags) diff --git a/reactos/cmake/gcc.cmake b/reactos/cmake/gcc.cmake index 51558c5cf9d..4149b5dd1a5 100644 --- a/reactos/cmake/gcc.cmake +++ b/reactos/cmake/gcc.cmake @@ -5,6 +5,9 @@ add_compile_flags("-pipe -fms-extensions") # Debugging (Note: DWARF-4 on 4.5.1 when we ship) add_compile_flags("-gdwarf-2 -g2 -femit-struct-debug-detailed=none -feliminate-unused-debug-types") +# For some reason, cmake sets -fPIC, and we don't want it +string(REPLACE "-fPIC" "" CMAKE_SHARED_LIBRARY_ASM_FLAGS ${CMAKE_SHARED_LIBRARY_ASM_FLAGS}) + # Tuning if(ARCH MATCHES i386) add_compile_flags("-march=${OARCH} -mtune=${TUNE}") @@ -13,7 +16,7 @@ else() endif() # Warnings -add_compile_flags("-Wall -Wno-char-subscripts -Wpointer-arith -Wno-multichar -Wno-error=uninitialized -Wno-unused-value -Winvalid-pch") +add_compile_flags("-Wall -Wno-char-subscripts -Wpointer-arith -Wno-multichar -Wno-error=uninitialized -Wno-unused-value") if(ARCH MATCHES amd64) add_compile_flags("-Wno-format") @@ -86,7 +89,7 @@ set(CMAKE_C_CREATE_SHARED_LIBRARY " -o ") set(CMAKE_RC_CREATE_SHARED_LIBRARY " -o ") -set(CMAKE_ASM_COMPILE_OBJECT " -x assembler-with-cpp -o -I${REACTOS_SOURCE_DIR}/include/asm -I${REACTOS_BINARY_DIR}/include/asm ${CMAKE_C_FLAGS} -D__ASM__ -c ") +set(CMAKE_ASM_COMPILE_OBJECT " -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 " -i -I${REACTOS_SOURCE_DIR}/include/psdk -I${REACTOS_BINARY_DIR}/include/psdk -I${REACTOS_SOURCE_DIR}/include/ -I${REACTOS_SOURCE_DIR}/include/reactos -I${REACTOS_BINARY_DIR}/include/reactos -I${REACTOS_SOURCE_DIR}/include/reactos/wine -I${REACTOS_SOURCE_DIR}/include/crt -I${REACTOS_SOURCE_DIR}/include/crt/mingw32 -O coff -o ") @@ -295,12 +298,7 @@ if(PCH) IMPLICIT_DEPENDS ${__lang} ${_header_filename} DEPENDS ${_header_filename} ${ARGN}) get_target_property(_src_files ${_target_name} SOURCES) - foreach(_item in ${_src_files}) - get_source_file_property(__src_lang ${_item} LANGUAGE) - if(__src_lang STREQUAL __lang) - set_source_files_properties(${_item} PROPERTIES COMPILE_FLAGS "-fpch-preprocess" OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_gch_filename}) - endif() - endforeach() + add_target_compile_flags(${_target_name} "-fpch-preprocess -Winvalid-pch -Wno-error=invalid-pch") #set dependency checking : depends on precompiled header only which already depends on deeper header set_target_properties(${_target_name} PROPERTIES IMPLICIT_DEPENDS_INCLUDE_TRANSFORM "\"${_basename}\"=;<${_basename}>=") endmacro()