- Improve message headers handling.

svn path=/branches/cmake-bringup/; revision=50334
This commit is contained in:
Amine Khaldi 2011-01-08 20:44:41 +00:00
parent 9d64a217d5
commit 152b92b928
5 changed files with 31 additions and 70 deletions

View file

@ -268,3 +268,19 @@ endmacro()
macro(add_dependency_footer)
file(APPEND ${REACTOS_BINARY_DIR}/dependencies.graphml " </graph>\n</graphml>\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()

View file

@ -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)

View file

@ -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")

View file

@ -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})

View file

@ -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