From 152b92b9288e067d674768be4f3bd9679b76e10f Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sat, 8 Jan 2011 20:44:41 +0000 Subject: [PATCH] [CMAKE] - Improve message headers handling. svn path=/branches/cmake-bringup/; revision=50334 --- CMakeMacros.cmake | 16 ++++++++++ base/applications/rapps/CMakeLists.txt | 43 +++----------------------- gcc.cmake | 4 +++ include/reactos/mc/CMakeLists.txt | 34 ++------------------ msc.cmake | 4 +++ 5 files changed, 31 insertions(+), 70 deletions(-) diff --git a/CMakeMacros.cmake b/CMakeMacros.cmake index a1a754b0711..95fc7be7d0d 100644 --- a/CMakeMacros.cmake +++ b/CMakeMacros.cmake @@ -268,3 +268,19 @@ endmacro() macro(add_dependency_footer) file(APPEND ${REACTOS_BINARY_DIR}/dependencies.graphml " \n\n") endmacro() + +macro(add_message_headers) + foreach(_in_FILE ${ARGN}) + get_filename_component(FILE ${_in_FILE} NAME_WE) + macro_mc(${FILE}) + add_custom_command( + OUTPUT ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.rc ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.h + COMMAND ${COMMAND_MC} + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.mc) + set_source_files_properties( + ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.h ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.rc + PROPERTIES GENERATED TRUE) + add_custom_target(${FILE} ALL DEPENDS ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.h ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.rc) + endforeach() +endmacro() + diff --git a/base/applications/rapps/CMakeLists.txt b/base/applications/rapps/CMakeLists.txt index 3c9974380cc..f49f70d5c15 100644 --- a/base/applications/rapps/CMakeLists.txt +++ b/base/applications/rapps/CMakeLists.txt @@ -19,8 +19,10 @@ list(APPEND SOURCE winmain.c rapps.rc) -include_directories(${CMAKE_CURRENT_BINARY_DIR}) -include_directories(${REACTOS_BINARY_DIR}/include/reactos) +include_directories( + ${CMAKE_CURRENT_BINARY_DIR} + ${REACTOS_BINARY_DIR}/include/reactos) + set_rc_compiler() add_executable(rapps ${SOURCE}) @@ -29,40 +31,5 @@ target_link_libraries(rapps uuid) add_importlibs(rapps advapi32 comctl32 gdi32 urlmon user32 shell32 shlwapi kernel32 msvcrt ntdll) add_dependencies(rapps rappsmsg) - -#FIXME : move this to cmakemacros + gcc/msvc.cmake - -if(MSVC) -MACRO(MACRO_MC FILE) - set (COMMAND_MC mc -r ${REACTOS_BINARY_DIR}/include/reactos -h ${REACTOS_BINARY_DIR}/include/reactos ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.mc) -ENDMACRO() -else() -MACRO(MACRO_MC FILE) - set(COMMAND_MC ${MINGW_PREFIX}windmc -A -b ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.mc -r ${REACTOS_BINARY_DIR}/include/reactos -h ${REACTOS_BINARY_DIR}/include/reactos) -ENDMACRO() -endif() - -MACRO (MACRO_ADD_MESSAGE_HEADERS) - - FOREACH(_in_FILE ${ARGN}) - - get_filename_component(FILE ${_in_FILE} NAME_WE) - MACRO_MC(${FILE}) - add_custom_command( - OUTPUT ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.rc ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.h - COMMAND ${COMMAND_MC} - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.mc - ) - set_source_files_properties( - ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.h ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.rc - PROPERTIES GENERATED TRUE - ) - add_custom_target(${FILE} ALL DEPENDS ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.h ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.rc) - - ENDFOREACH(_in_FILE ${ARGN}) - -ENDMACRO (MACRO_ADD_MESSAGE_HEADERS) - -MACRO_ADD_MESSAGE_HEADERS(rappsmsg.mc) - +add_message_headers(rappsmsg.mc) add_cab_target(rapps 1) diff --git a/gcc.cmake b/gcc.cmake index 06c6c063a22..149cb35738f 100644 --- a/gcc.cmake +++ b/gcc.cmake @@ -273,6 +273,10 @@ macro(spec2def _dllname _spec_file) list(APPEND SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${_file}_stubs.c) endmacro() +macro(macro_mc FILE) + set(COMMAND_MC ${MINGW_PREFIX}windmc -A -b ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.mc -r ${REACTOS_BINARY_DIR}/include/reactos -h ${REACTOS_BINARY_DIR}/include/reactos) +endmacro() + #pseh lib, needed with mingw set(PSEH_LIB "pseh") diff --git a/include/reactos/mc/CMakeLists.txt b/include/reactos/mc/CMakeLists.txt index 2dc31a8317f..ef6bc8e6fef 100644 --- a/include/reactos/mc/CMakeLists.txt +++ b/include/reactos/mc/CMakeLists.txt @@ -1,39 +1,9 @@ -if(MSVC) -macro(MACRO_MC FILE) - set (COMMAND_MC mc -r ${REACTOS_BINARY_DIR}/include/reactos -h ${REACTOS_BINARY_DIR}/include/reactos ${REACTOS_SOURCE_DIR}/include/reactos/mc/${FILE}.mc) -endmacro() -else() -macro(MACRO_MC FILE) - set(COMMAND_MC ${MINGW_PREFIX}windmc -A -b ${REACTOS_SOURCE_DIR}/include/reactos/mc/${FILE}.mc -r ${REACTOS_BINARY_DIR}/include/reactos -h ${REACTOS_BINARY_DIR}/include/reactos) -endmacro() -endif() - -macro (MACRO_ADD_MESSAGE_HEADERS) - - foreach(_in_FILE ${ARGN}) - - get_filename_component(FILE ${_in_FILE} NAME_WE) - MACRO_MC(${FILE}) - add_custom_command( - OUTPUT ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.rc ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.h - COMMAND ${COMMAND_MC} - DEPENDS ${REACTOS_SOURCE_DIR}/include/reactos/mc/${FILE}.mc - ) - set_source_files_properties( - ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.h ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.rc - PROPERTIES GENERATED TRUE - ) - add_custom_target(${FILE} ALL DEPENDS ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.h ${REACTOS_BINARY_DIR}/include/reactos/${FILE}.rc) - - endforeach(_in_FILE ${ARGN}) - -endmacro (MACRO_ADD_MESSAGE_HEADERS) - list(APPEND SOURCE bugcodes.mc errcodes.mc neteventmsg.mc ntstatus.mc pciclass.mc) -MACRO_ADD_MESSAGE_HEADERS(${SOURCE}) + +add_message_headers(${SOURCE}) diff --git a/msc.cmake b/msc.cmake index a419ada11f0..cf122410f9d 100644 --- a/msc.cmake +++ b/msc.cmake @@ -204,6 +204,10 @@ macro(set_export_spec _module _spec_file) spec2def(${_dllname} ${_spec_file}) endmacro() +macro(macro_mc FILE) + set(COMMAND_MC mc -r ${REACTOS_BINARY_DIR}/include/reactos -h ${REACTOS_BINARY_DIR}/include/reactos ${REACTOS_SOURCE_DIR}/include/reactos/mc/${FILE}.mc) +endmacro() + file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/importlibs) #pseh workaround