Index: CMakeLists.txt =================================================================== --- CMakeLists.txt (revision 73198) +++ CMakeLists.txt (working copy) @@ -16,6 +16,11 @@ cmake_policy(SET CMP0051 NEW) endif() +if(POLICY CMP0058) + # Ninja requires custom command byproducts to be explicit + cmake_policy(SET CMP0058 OLD) +endif() + project(REACTOS) # Versioning Index: sdk/cmake/Compiler/GNU.cmake =================================================================== --- sdk/cmake/Compiler/GNU.cmake (revision 73198) +++ sdk/cmake/Compiler/GNU.cmake (working copy) @@ -50,8 +50,13 @@ set(CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "-Os -DNDEBUG") set(CMAKE_${lang}_FLAGS_RELEASE_INIT "") set(CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -DNDEBUG") - set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE " -E > ") - set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE " -S -o ") + if(CMAKE_VERSION VERSION_LESS 3.4.0) + set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE " -E > ") + set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE " -S -o ") + else() + set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE " -E > ") + set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE " -S -o ") + endif() if(NOT APPLE) set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-isystem ") endif() Index: sdk/cmake/gcc.cmake =================================================================== --- sdk/cmake/gcc.cmake (revision 73198) +++ sdk/cmake/gcc.cmake (working copy) @@ -256,12 +256,21 @@ set(_compress_debug_sections_flag "-Wa,--compress-debug-sections") endif() -set(CMAKE_C_COMPILE_OBJECT "${CCACHE} ${_compress_debug_sections_flag} -o -c ") -# FIXME: Once the GCC toolchain bugs are fixed, add _compress_debug_sections_flag to CXX too -set(CMAKE_CXX_COMPILE_OBJECT "${CCACHE} -o -c ") -set(CMAKE_ASM_COMPILE_OBJECT " ${_compress_debug_sections_flag} -x assembler-with-cpp -o -I${REACTOS_SOURCE_DIR}/sdk/include/asm -I${REACTOS_BINARY_DIR}/sdk/include/asm -D__ASM__ -c ") +if(CMAKE_VERSION VERSION_LESS 3.4.0) + set(CMAKE_C_COMPILE_OBJECT "${CCACHE} ${_compress_debug_sections_flag} -o -c ") + # FIXME: Once the GCC toolchain bugs are fixed, add _compress_debug_sections_flag to CXX too + set(CMAKE_CXX_COMPILE_OBJECT "${CCACHE} -o -c ") + set(CMAKE_ASM_COMPILE_OBJECT " ${_compress_debug_sections_flag} -x assembler-with-cpp -o -I${REACTOS_SOURCE_DIR}/sdk/include/asm -I${REACTOS_BINARY_DIR}/sdk/include/asm -D__ASM__ -c ") -set(CMAKE_RC_COMPILE_OBJECT " -O coff -DRC_INVOKED -D__WIN32__=1 -D__FLAT__=1 ${I18N_DEFS} ") + set(CMAKE_RC_COMPILE_OBJECT " -O coff -DRC_INVOKED -D__WIN32__=1 -D__FLAT__=1 ${I18N_DEFS} ") +else() + set(CMAKE_C_COMPILE_OBJECT "${CCACHE} ${_compress_debug_sections_flag} -o -c ") + # FIXME: Once the GCC toolchain bugs are fixed, add _compress_debug_sections_flag to CXX too + set(CMAKE_CXX_COMPILE_OBJECT "${CCACHE} -o -c ") + set(CMAKE_ASM_COMPILE_OBJECT " ${_compress_debug_sections_flag} -x assembler-with-cpp -o -I${REACTOS_SOURCE_DIR}/sdk/include/asm -I${REACTOS_BINARY_DIR}/sdk/include/asm -D__ASM__ -c ") + + set(CMAKE_RC_COMPILE_OBJECT " -O coff -DRC_INVOKED -D__WIN32__=1 -D__FLAT__=1 ${I18N_DEFS} ") +endif() set(CMAKE_DEPFILE_FLAGS_RC "--preprocessor \"${MINGW_TOOLCHAIN_PREFIX}gcc${MINGW_TOOLCHAIN_SUFFIX} -E -xc-header -MMD -MF -MT \" ") # Optional 3rd parameter: stdcall stack bytes Index: sdk/cmake/msvc.cmake =================================================================== --- sdk/cmake/msvc.cmake (revision 73198) +++ sdk/cmake/msvc.cmake (working copy) @@ -140,15 +140,28 @@ else() set(rc_nologo_flag) endif() - set(CMAKE_RC_COMPILE_OBJECT " ${rc_nologo_flag} ${I18N_DEFS} /fo ") - if(ARCH STREQUAL "arm") - set(CMAKE_ASM_COMPILE_OBJECT - "cl ${cl_includes_flag} /nologo /X /I${REACTOS_SOURCE_DIR}/sdk/include/asm /I${REACTOS_BINARY_DIR}/sdk/include/asm /D__ASM__ /D_USE_ML /EP /c > .tmp" - " -nologo -o .tmp") + if(CMAKE_VERSION VERSION_LESS 3.4.0) + set(CMAKE_RC_COMPILE_OBJECT " ${rc_nologo_flag} ${I18N_DEFS} /fo ") + if(ARCH STREQUAL "arm") + set(CMAKE_ASM_COMPILE_OBJECT + "cl ${cl_includes_flag} /nologo /X /I${REACTOS_SOURCE_DIR}/sdk/include/asm /I${REACTOS_BINARY_DIR}/sdk/include/asm /D__ASM__ /D_USE_ML /EP /c > .tmp" + " -nologo -o .tmp") + else() + set(CMAKE_ASM_COMPILE_OBJECT + "cl ${cl_includes_flag} /nologo /X /I${REACTOS_SOURCE_DIR}/sdk/include/asm /I${REACTOS_BINARY_DIR}/sdk/include/asm /D__ASM__ /D_USE_ML /EP /c > .tmp" + " /nologo /Cp /Fo /c /Ta .tmp") + endif() else() - set(CMAKE_ASM_COMPILE_OBJECT - "cl ${cl_includes_flag} /nologo /X /I${REACTOS_SOURCE_DIR}/sdk/include/asm /I${REACTOS_BINARY_DIR}/sdk/include/asm /D__ASM__ /D_USE_ML /EP /c > .tmp" - " /nologo /Cp /Fo /c /Ta .tmp") + set(CMAKE_RC_COMPILE_OBJECT " ${rc_nologo_flag} ${I18N_DEFS} /fo ") + if(ARCH STREQUAL "arm") + set(CMAKE_ASM_COMPILE_OBJECT + "cl ${cl_includes_flag} /nologo /X /I${REACTOS_SOURCE_DIR}/sdk/include/asm /I${REACTOS_BINARY_DIR}/sdk/include/asm /D__ASM__ /D_USE_ML /EP /c > .tmp" + " -nologo -o .tmp") + else() + set(CMAKE_ASM_COMPILE_OBJECT + "cl ${cl_includes_flag} /nologo /X /I${REACTOS_SOURCE_DIR}/sdk/include/asm /I${REACTOS_BINARY_DIR}/sdk/include/asm /D__ASM__ /D_USE_ML /EP /c > .tmp" + " /nologo /Cp /Fo /c /Ta .tmp") + endif() endif() endif() @@ -157,14 +170,25 @@ add_compile_flags("/analyze") elseif(_PREFAST_) message("PREFAST enabled!") - set(CMAKE_C_COMPILE_OBJECT "prefast ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} /Fo -c ${CMAKE_END_TEMP_FILE}" - "prefast LIST") - set(CMAKE_CXX_COMPILE_OBJECT "prefast ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} /TP /Fo -c ${CMAKE_END_TEMP_FILE}" - "prefast LIST") - set(CMAKE_C_LINK_EXECUTABLE - " ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} /Fe -link /implib: /version:. ${CMAKE_END_TEMP_FILE}") - set(CMAKE_CXX_LINK_EXECUTABLE - " ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} /Fe -link /implib: /version:. ${CMAKE_END_TEMP_FILE}") + if(CMAKE_VERSION VERSION_LESS 3.4.0) + set(CMAKE_C_COMPILE_OBJECT "prefast ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} /Fo -c ${CMAKE_END_TEMP_FILE}" + "prefast LIST") + set(CMAKE_CXX_COMPILE_OBJECT "prefast ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} /TP /Fo -c ${CMAKE_END_TEMP_FILE}" + "prefast LIST") + set(CMAKE_C_LINK_EXECUTABLE + " ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} /Fe -link /implib: /version:. ${CMAKE_END_TEMP_FILE}") + set(CMAKE_CXX_LINK_EXECUTABLE + " ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} /Fe -link /implib: /version:. ${CMAKE_END_TEMP_FILE}") + else() + set(CMAKE_C_COMPILE_OBJECT "prefast ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} /Fo -c ${CMAKE_END_TEMP_FILE}" + "prefast LIST") + set(CMAKE_CXX_COMPILE_OBJECT "prefast ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} /TP /Fo -c ${CMAKE_END_TEMP_FILE}" + "prefast LIST") + set(CMAKE_C_LINK_EXECUTABLE + " ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} /Fe -link /implib: /version:. ${CMAKE_END_TEMP_FILE}") + set(CMAKE_CXX_LINK_EXECUTABLE + " ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} /Fe -link /implib: /version:. ${CMAKE_END_TEMP_FILE}") + endif() endif() set(CMAKE_RC_CREATE_SHARED_LIBRARY ${CMAKE_C_CREATE_SHARED_LIBRARY}) Index: sdk/cmake/Platform/Windows-MSVC.cmake =================================================================== --- sdk/cmake/Platform/Windows-MSVC.cmake (revision 73198) +++ sdk/cmake/Platform/Windows-MSVC.cmake (working copy) @@ -59,7 +59,11 @@ # make sure to enable languages after setting configuration types enable_language(RC) -set(CMAKE_COMPILE_RESOURCE "rc /fo ") +if(CMAKE_VERSION VERSION_LESS 3.4.0) + set(CMAKE_COMPILE_RESOURCE "rc /fo ") +else() + set(CMAKE_COMPILE_RESOURCE "rc /fo ") +endif() if("${CMAKE_GENERATOR}" MATCHES "Visual Studio") set(MSVC_IDE 1) @@ -224,12 +228,21 @@ set(CMAKE_${lang}_CREATE_SHARED_MODULE ${CMAKE_${lang}_CREATE_SHARED_LIBRARY}) set(CMAKE_${lang}_CREATE_STATIC_LIBRARY " /lib ${CMAKE_CL_NOLOGO} /out: ") - set(CMAKE_${lang}_COMPILE_OBJECT - " ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} /Fo /Fd/ -c ${CMAKE_END_TEMP_FILE}") - set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE - " > ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} -E ${CMAKE_END_TEMP_FILE}") - set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE - " ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} /FoNUL /FAs /Fa /c ${CMAKE_END_TEMP_FILE}") + if(CMAKE_VERSION VERSION_LESS 3.4.0) + set(CMAKE_${lang}_COMPILE_OBJECT + " ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} /Fo /Fd/ -c ${CMAKE_END_TEMP_FILE}") + set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE + " > ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} -E ${CMAKE_END_TEMP_FILE}") + set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE + " ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} /FoNUL /FAs /Fa /c ${CMAKE_END_TEMP_FILE}") + else() + set(CMAKE_${lang}_COMPILE_OBJECT + " ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} /Fo /Fd/ -c ${CMAKE_END_TEMP_FILE}") + set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE + " > ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} -E ${CMAKE_END_TEMP_FILE}") + set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE + " ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} /FoNUL /FAs /Fa /c ${CMAKE_END_TEMP_FILE}") + endif() set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_OBJECTS 1) set(CMAKE_${lang}_LINK_EXECUTABLE