[CMAKE/WIDL] Add rudimentary dependency tracking in add_rpcproxy_files

CORE-14204
This commit is contained in:
Mark Jansen 2018-01-15 21:04:56 +01:00
parent a34d807311
commit 7e9fb41b9f

View file

@ -45,11 +45,22 @@ function(add_rpcproxy_files)
foreach(FILE ${ARGN})
get_filename_component(NAME ${FILE} NAME_WE)
list(APPEND IDLS ${CMAKE_CURRENT_SOURCE_DIR}/${FILE})
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${NAME}_p.c ${CMAKE_CURRENT_BINARY_DIR}/${NAME}_p.h
COMMAND native-widl ${INCLUDES} ${DEFINES} ${IDL_FLAGS} -p -o ${CMAKE_CURRENT_BINARY_DIR}/${NAME}_p.c -h -H ${NAME}_p.h ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${FILE} native-widl)
# Most proxy idl's have names like <proxyname>_<original>.idl
# We use this to create a dependency from the proxy to the original idl
string(REPLACE "_" ";" SPLIT_FILE ${FILE})
list(LENGTH SPLIT_FILE len)
unset(EXTRA_DEP)
if(len STREQUAL "2")
list(GET SPLIT_FILE 1 SPLIT_FILE)
if(EXISTS "${REACTOS_SOURCE_DIR}/sdk/include/psdk/${SPLIT_FILE}")
set(EXTRA_DEP ${REACTOS_SOURCE_DIR}/sdk/include/psdk/${SPLIT_FILE})
endif()
endif()
list(APPEND IDLS ${CMAKE_CURRENT_SOURCE_DIR}/${FILE})
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${NAME}_p.c ${CMAKE_CURRENT_BINARY_DIR}/${NAME}_p.h
COMMAND native-widl ${INCLUDES} ${DEFINES} ${IDL_FLAGS} -p -o ${CMAKE_CURRENT_BINARY_DIR}/${NAME}_p.c -h -H ${NAME}_p.h ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${FILE} ${EXTRA_DEP} native-widl)
endforeach()
# Extra pass to generate dlldata