mirror of
https://github.com/reactos/reactos.git
synced 2024-08-03 01:50:57 +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
|
@ -79,6 +79,7 @@ if(CMAKE_CROSSCOMPILING)
|
|||
|
||||
#Some cleanup
|
||||
file(REMOVE
|
||||
${REACTOS_BINARY_DIR}/dependencies.graphml
|
||||
${REACTOS_BINARY_DIR}/boot/ros_livecd.txt
|
||||
${REACTOS_BINARY_DIR}/boot/ros_livecd_target.txt
|
||||
${REACTOS_BINARY_DIR}/boot/ros_minicd.txt
|
||||
|
@ -145,6 +146,8 @@ if(CMAKE_CROSSCOMPILING)
|
|||
include_directories(include/crt/mingw32)
|
||||
endif()
|
||||
|
||||
add_dependency_header()
|
||||
|
||||
add_subdirectory(include/psdk)
|
||||
add_subdirectory(include/dxsdk)
|
||||
add_subdirectory(include/reactos/idl)
|
||||
|
@ -227,4 +230,6 @@ if(CMAKE_CROSSCOMPILING)
|
|||
#bootcd and livecd
|
||||
include(ros_cd.cmake)
|
||||
|
||||
add_dependency_footer()
|
||||
|
||||
endif()
|
||||
|
|
|
@ -36,7 +36,7 @@ macro(idl_compile_object OBJECT SOURCE)
|
|||
get_property(FLAGS SOURCE ${SOURCE} PROPERTY COMPILE_FLAGS)
|
||||
get_property(DEFINES SOURCE ${SOURCE} PROPERTY COMPILE_DEFINITIONS)
|
||||
get_property(INCLUDE_DIRECTORIES DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
|
||||
|
||||
|
||||
foreach(DIR ${INCLUDE_DIRECTORIES})
|
||||
set(FLAGS "${FLAGS} -I${DIR}")
|
||||
endforeach()
|
||||
|
@ -73,7 +73,7 @@ macro(add_minicd_target _targetname _dir) # optional parameter: _nameoncd
|
|||
else()
|
||||
set(_nameoncd ${ARGN})
|
||||
endif()
|
||||
|
||||
|
||||
file(APPEND ${REACTOS_BINARY_DIR}/boot/ros_minicd_target.txt "${_targetname}\t${_dir}\t${_nameoncd}\n")
|
||||
endmacro()
|
||||
|
||||
|
@ -96,7 +96,7 @@ macro(add_livecd_target _targetname _dir )# optional parameter : _nameoncd
|
|||
else()
|
||||
set(_nameoncd ${ARGN})
|
||||
endif()
|
||||
|
||||
|
||||
file(APPEND ${REACTOS_BINARY_DIR}/boot/ros_livecd_target.txt "${_targetname}\t${_dir}\t${_nameoncd}\n")
|
||||
endmacro()
|
||||
|
||||
|
@ -149,7 +149,7 @@ macro(add_cab FILENAME _num)
|
|||
file(APPEND ${REACTOS_BINARY_DIR}/boot/ros_cab.txt "${FILENAME}\t${_num}\n")
|
||||
cab_to_dir(${_num} _dir)
|
||||
add_livecd(${FILENAME} ${_dir})
|
||||
endmacro()
|
||||
endmacro()
|
||||
|
||||
macro(custom_incdefs)
|
||||
if(NOT DEFINED result_incs) #rpc_defines
|
||||
|
@ -181,6 +181,13 @@ macro(rpcproxy TARGET)
|
|||
PROPERTIES GENERATED TRUE)
|
||||
list(APPEND SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_p.c)
|
||||
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()
|
||||
|
||||
add_custom_command(
|
||||
|
@ -190,6 +197,12 @@ macro(rpcproxy TARGET)
|
|||
set_source_files_properties(
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c
|
||||
PROPERTIES GENERATED TRUE)
|
||||
<<<<<<< .mine
|
||||
|
||||
add_library(${TARGET}_proxy ${SOURCE})
|
||||
add_dependencies(${TARGET}_proxy psdk ${PROXY_DEPENDS})
|
||||
=======
|
||||
>>>>>>> .r50241
|
||||
endmacro()
|
||||
|
||||
macro(idl_files)
|
||||
|
@ -205,7 +218,7 @@ macro(idl_files)
|
|||
PROPERTIES GENERATED TRUE)
|
||||
add_library(${FILE}_server ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c)
|
||||
add_dependencies(${FILE}_server psdk)
|
||||
|
||||
|
||||
add_custom_command(
|
||||
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
|
||||
|
@ -241,3 +254,30 @@ macro(add_idl_interface IDL_FILE)
|
|||
DEPENDS ${IDL_FILE})
|
||||
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${FILE}_i.c PROPERTIES GENERATED TRUE)
|
||||
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
|
||||
"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=)
|
||||
|
||||
macro(add_importlibs MODULE)
|
||||
add_dependency_node(${MODULE})
|
||||
foreach(LIB ${ARGN})
|
||||
target_link_libraries(${MODULE} ${CMAKE_BINARY_DIR}/importlibs/lib${LIB}.a)
|
||||
add_dependencies(${MODULE} lib${LIB})
|
||||
add_dependency_edge(${MODULE} ${LIB})
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
|
|
Loading…
Reference in a new issue