mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 19:55:41 +00:00
[CMAKE]
Add generation of a depencency graph for shared libraries. The output is a graphml file. Can be enabled with GENERATE_DEPENDENCY_GRAPH switch. svn path=/branches/cmake-bringup/; revision=50243
This commit is contained in:
parent
6ebba3e6a5
commit
8c14a1744a
4 changed files with 54 additions and 5 deletions
|
@ -79,6 +79,7 @@ if(CMAKE_CROSSCOMPILING)
|
||||||
|
|
||||||
#Some cleanup
|
#Some cleanup
|
||||||
file(REMOVE
|
file(REMOVE
|
||||||
|
${REACTOS_BINARY_DIR}/dependencies.graphml
|
||||||
${REACTOS_BINARY_DIR}/boot/ros_livecd.txt
|
${REACTOS_BINARY_DIR}/boot/ros_livecd.txt
|
||||||
${REACTOS_BINARY_DIR}/boot/ros_livecd_target.txt
|
${REACTOS_BINARY_DIR}/boot/ros_livecd_target.txt
|
||||||
${REACTOS_BINARY_DIR}/boot/ros_minicd.txt
|
${REACTOS_BINARY_DIR}/boot/ros_minicd.txt
|
||||||
|
@ -145,6 +146,8 @@ if(CMAKE_CROSSCOMPILING)
|
||||||
include_directories(include/crt/mingw32)
|
include_directories(include/crt/mingw32)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
add_dependency_header()
|
||||||
|
|
||||||
add_subdirectory(include/psdk)
|
add_subdirectory(include/psdk)
|
||||||
add_subdirectory(include/dxsdk)
|
add_subdirectory(include/dxsdk)
|
||||||
add_subdirectory(include/reactos/idl)
|
add_subdirectory(include/reactos/idl)
|
||||||
|
@ -227,4 +230,6 @@ if(CMAKE_CROSSCOMPILING)
|
||||||
#bootcd and livecd
|
#bootcd and livecd
|
||||||
include(ros_cd.cmake)
|
include(ros_cd.cmake)
|
||||||
|
|
||||||
|
add_dependency_footer()
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -36,7 +36,7 @@ macro(idl_compile_object OBJECT SOURCE)
|
||||||
get_property(FLAGS SOURCE ${SOURCE} PROPERTY COMPILE_FLAGS)
|
get_property(FLAGS SOURCE ${SOURCE} PROPERTY COMPILE_FLAGS)
|
||||||
get_property(DEFINES SOURCE ${SOURCE} PROPERTY COMPILE_DEFINITIONS)
|
get_property(DEFINES SOURCE ${SOURCE} PROPERTY COMPILE_DEFINITIONS)
|
||||||
get_property(INCLUDE_DIRECTORIES DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
|
get_property(INCLUDE_DIRECTORIES DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
|
||||||
|
|
||||||
foreach(DIR ${INCLUDE_DIRECTORIES})
|
foreach(DIR ${INCLUDE_DIRECTORIES})
|
||||||
set(FLAGS "${FLAGS} -I${DIR}")
|
set(FLAGS "${FLAGS} -I${DIR}")
|
||||||
endforeach()
|
endforeach()
|
||||||
|
@ -73,7 +73,7 @@ macro(add_minicd_target _targetname _dir) # optional parameter: _nameoncd
|
||||||
else()
|
else()
|
||||||
set(_nameoncd ${ARGN})
|
set(_nameoncd ${ARGN})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
file(APPEND ${REACTOS_BINARY_DIR}/boot/ros_minicd_target.txt "${_targetname}\t${_dir}\t${_nameoncd}\n")
|
file(APPEND ${REACTOS_BINARY_DIR}/boot/ros_minicd_target.txt "${_targetname}\t${_dir}\t${_nameoncd}\n")
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ macro(add_livecd_target _targetname _dir )# optional parameter : _nameoncd
|
||||||
else()
|
else()
|
||||||
set(_nameoncd ${ARGN})
|
set(_nameoncd ${ARGN})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
file(APPEND ${REACTOS_BINARY_DIR}/boot/ros_livecd_target.txt "${_targetname}\t${_dir}\t${_nameoncd}\n")
|
file(APPEND ${REACTOS_BINARY_DIR}/boot/ros_livecd_target.txt "${_targetname}\t${_dir}\t${_nameoncd}\n")
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
@ -149,7 +149,7 @@ macro(add_cab FILENAME _num)
|
||||||
file(APPEND ${REACTOS_BINARY_DIR}/boot/ros_cab.txt "${FILENAME}\t${_num}\n")
|
file(APPEND ${REACTOS_BINARY_DIR}/boot/ros_cab.txt "${FILENAME}\t${_num}\n")
|
||||||
cab_to_dir(${_num} _dir)
|
cab_to_dir(${_num} _dir)
|
||||||
add_livecd(${FILENAME} ${_dir})
|
add_livecd(${FILENAME} ${_dir})
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
macro(custom_incdefs)
|
macro(custom_incdefs)
|
||||||
if(NOT DEFINED result_incs) #rpc_defines
|
if(NOT DEFINED result_incs) #rpc_defines
|
||||||
|
@ -181,6 +181,13 @@ macro(rpcproxy TARGET)
|
||||||
PROPERTIES GENERATED TRUE)
|
PROPERTIES GENERATED TRUE)
|
||||||
list(APPEND SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_p.c)
|
list(APPEND SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_p.c)
|
||||||
list(APPEND IDLS ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.idl)
|
list(APPEND IDLS ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.idl)
|
||||||
|
<<<<<<< .mine
|
||||||
|
list(APPEND PROXY_DEPENDS ${TARGET}_${FILE}_p)
|
||||||
|
add_custom_target(${TARGET}_${FILE}_p
|
||||||
|
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_p.c)
|
||||||
|
#add_dependencies(${TARGET}_proxy ${TARGET}_${FILE}_p)
|
||||||
|
=======
|
||||||
|
>>>>>>> .r50241
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
|
@ -190,6 +197,12 @@ macro(rpcproxy TARGET)
|
||||||
set_source_files_properties(
|
set_source_files_properties(
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c
|
${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c
|
||||||
PROPERTIES GENERATED TRUE)
|
PROPERTIES GENERATED TRUE)
|
||||||
|
<<<<<<< .mine
|
||||||
|
|
||||||
|
add_library(${TARGET}_proxy ${SOURCE})
|
||||||
|
add_dependencies(${TARGET}_proxy psdk ${PROXY_DEPENDS})
|
||||||
|
=======
|
||||||
|
>>>>>>> .r50241
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
macro(idl_files)
|
macro(idl_files)
|
||||||
|
@ -205,7 +218,7 @@ macro(idl_files)
|
||||||
PROPERTIES GENERATED TRUE)
|
PROPERTIES GENERATED TRUE)
|
||||||
add_library(${FILE}_server ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c)
|
add_library(${FILE}_server ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c)
|
||||||
add_dependencies(${FILE}_server psdk)
|
add_dependencies(${FILE}_server psdk)
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c
|
||||||
COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} ${IDL_HEADER_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${IDL_CLIENT_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.idl
|
COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} ${IDL_HEADER_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${IDL_CLIENT_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.idl
|
||||||
|
@ -241,3 +254,30 @@ macro(add_idl_interface IDL_FILE)
|
||||||
DEPENDS ${IDL_FILE})
|
DEPENDS ${IDL_FILE})
|
||||||
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${FILE}_i.c PROPERTIES GENERATED TRUE)
|
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${FILE}_i.c PROPERTIES GENERATED TRUE)
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
macro(add_dependency_node _node)
|
||||||
|
if(GENERATE_DEPENDENCY_GRAPH)
|
||||||
|
get_target_property(_type ${_node} TYPE)
|
||||||
|
if(_type MATCHES SHARED_LIBRARY)
|
||||||
|
file(APPEND ${REACTOS_BINARY_DIR}/dependencies.graphml " <node id=\"${_node}\"/>\n")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
macro(add_dependency_edge _source _target)
|
||||||
|
if(GENERATE_DEPENDENCY_GRAPH)
|
||||||
|
get_target_property(_type ${_source} TYPE)
|
||||||
|
if(_type MATCHES SHARED_LIBRARY)
|
||||||
|
file(APPEND ${REACTOS_BINARY_DIR}/dependencies.graphml " <edge source=\"${_source}\" target=\"${_target}\"/>\n")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
macro(add_dependency_header)
|
||||||
|
file(APPEND ${REACTOS_BINARY_DIR}/dependencies.graphml "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<graphml>\n <graph id=\"ReactOS dependencies\" edgedefault=\"directed\">\n")
|
||||||
|
add_dependency_node(ntdll)
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
macro(add_dependency_footer)
|
||||||
|
file(APPEND ${REACTOS_BINARY_DIR}/dependencies.graphml " </graph>\n</graphml>\n")
|
||||||
|
endmacro()
|
||||||
|
|
|
@ -47,3 +47,5 @@ This settings is disabled (0) by default.")
|
||||||
set(BUILD_MP TRUE CACHE BOOL
|
set(BUILD_MP TRUE CACHE BOOL
|
||||||
"Whether to compile the multi processor versions for ntoskrnl and hal.")
|
"Whether to compile the multi processor versions for ntoskrnl and hal.")
|
||||||
|
|
||||||
|
set(GENERATE_DEPENDENCY_GRAPH FALSE CACHE BOOL
|
||||||
|
"Whether to create a graphml dependency of dlls.")
|
||||||
|
|
|
@ -218,9 +218,11 @@ set(IDL_PROXY_ARG -p -P)
|
||||||
set(IDL_DLLDATA_ARG --dlldata-only --dlldata=)
|
set(IDL_DLLDATA_ARG --dlldata-only --dlldata=)
|
||||||
|
|
||||||
macro(add_importlibs MODULE)
|
macro(add_importlibs MODULE)
|
||||||
|
add_dependency_node(${MODULE})
|
||||||
foreach(LIB ${ARGN})
|
foreach(LIB ${ARGN})
|
||||||
target_link_libraries(${MODULE} ${CMAKE_BINARY_DIR}/importlibs/lib${LIB}.a)
|
target_link_libraries(${MODULE} ${CMAKE_BINARY_DIR}/importlibs/lib${LIB}.a)
|
||||||
add_dependencies(${MODULE} lib${LIB})
|
add_dependencies(${MODULE} lib${LIB})
|
||||||
|
add_dependency_edge(${MODULE} ${LIB})
|
||||||
endforeach()
|
endforeach()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue