| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 | 
							- ###########################################################################
 
- #
 
- #  Library:   CTK
 
- #
 
- #  Copyright (c) Kitware Inc.
 
- #
 
- #  Licensed under the Apache License, Version 2.0 (the "License");
 
- #  you may not use this file except in compliance with the License.
 
- #  You may obtain a copy of the License at
 
- #
 
- #      http://www.apache.org/licenses/LICENSE-2.0.txt
 
- #
 
- #  Unless required by applicable law or agreed to in writing, software
 
- #  distributed under the License is distributed on an "AS IS" BASIS,
 
- #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
- #  See the License for the specific language governing permissions and
 
- #  limitations under the License.
 
- #
 
- ###########################################################################
 
- #!
 
- #! Generate a DGrapgh input file expected by DGraph executable.
 
- #!
 
- #! \ingroup CMakeAPI
 
- function(ctkFunctionGenerateDGraphInput dir target_directories)
 
-   if(NOT EXISTS ${dir})
 
-     message(FATAL_ERROR "Directory ${dir} doesn't exist!")
 
-   endif()
 
-   CtkMacroParseArguments(MY
 
-     ""
 
-     "WITH_OPTION;WITH_EXTERNALS"
 
-     ${ARGN}
 
-     )
 
-   set(dgraph_list )
 
-   set(edges)
 
-   set(vertices)
 
-   set(isolated_vertex_candidates)
 
-   
 
-   foreach(target_info ${target_directories})
 
-     # extract target_dir and option_name
 
-     string(REPLACE "^^" "\\;" target_info ${target_info})
 
-     set(target_info_list ${target_info})
 
-     list(GET target_info_list 0 target_dir)
 
-     list(GET target_info_list 1 option_name)
 
-     #message(STATUS target_dir:${target_dir})
 
-     #message(STATUS option_name:${option_name})
 
-     #message(STATUS option_name-value:${${option_name}})
 
-     
 
-     # make sure the directory exists
 
-     if(NOT EXISTS ${target_dir}/CMakeLists.txt)
 
-       message(FATAL_ERROR "Target directory ${target_dir}/CMakeLists.txt doesn't exists !")
 
-     endif()
 
-     set(include_dep 1)
 
-     if(MY_WITH_OPTION)
 
-       set(include_dep ${${option_name}})
 
-     endif()
 
-     if(${include_dep})
 
-       # extract project name from CMakeLists.txt
 
-       file(STRINGS "${target_dir}/CMakeLists.txt" project_string
 
-         REGEX "^ *(P|p)(R|r)(O|o)(J|j)(E|e)(C|c)(T|t)\\("
 
-         LIMIT_COUNT 10)
 
-       string(REGEX MATCH "\\((.*)\\)" target_project_name ${project_string})
 
-       string(REGEX REPLACE "\\(|\\)" "" target_project_name ${target_project_name})
 
-       if(${target_project_name} STREQUAL "")
 
-         message(FATAL_ERROR "Failed to extract project name from ${target_dir}/CMakeLists.txt")
 
-       endif()
 
-       #message(STATUS target_project_name:${target_project_name})
 
-       # Make sure the variable is cleared
 
-       set(dependencies )
 
-       # get dependencies
 
-       ctkFunctionCollectTargetLibraryNames(${target_dir} dependencies)
 
-       if(${target_project_name}_OPTIONAL_DEPENDENCIES)
 
-         list(APPEND dependencies ${${target_project_name}_OPTIONAL_DEPENDENCIES})
 
-       endif()
 
-       # Make sure the variable is cleared
 
-       set(ctk_dependencies)
 
-       if(MY_WITH_EXTERNALS)
 
-         set(ctk_dependencies ${dependencies})
 
-       else()
 
-         # filter dependencies starting with CTK org org_commontk_
 
-         ctkMacroGetAllProjectTargetLibraries("${dependencies}" ctk_dependencies)
 
-       endif()
 
-       if(ctk_dependencies)
 
-         list(APPEND vertices ${target_project_name})
 
-       else()
 
-         # isolated vertex candidate
 
-         list(APPEND isolated_vertex_candidates ${target_project_name})
 
-       endif()
 
-       # Generate XML related to the dependencies
 
-       foreach(dependency_name ${ctk_dependencies})
 
-         list(APPEND edges ${dependency_name})
 
-         set(dgraph_list ${dgraph_list} "${target_project_name} ${dependency_name}\n")
 
-         list(APPEND vertices ${dependency_name})
 
-       endforeach()
 
-     endif()
 
-     
 
-   endforeach()
 
-   foreach(isolated_vertex_candidate ${isolated_vertex_candidates})
 
-     set(_found 0)
 
-     foreach(dgraph_entry ${dgraph_list})
 
-       string(REPLACE "\n" "" dgraph_entry "${dgraph_entry}")
 
-       string(REPLACE " " ";" dgraph_entry "${dgraph_entry}")
 
-       list(FIND dgraph_entry ${isolated_vertex_candidate} _index)
 
-       if(_index GREATER -1)
 
-         set(_found 1)
 
-         break()
 
-       endif()
 
-     endforeach()
 
-     if(NOT _found)
 
-       list(APPEND vertices ${isolated_vertex_candidate})
 
-       set(dgraph_list "${isolated_vertex_candidate}\n" ${dgraph_list})
 
-     endif()
 
-   endforeach()
 
-   if(vertices)
 
-     list(REMOVE_DUPLICATES vertices)
 
-   endif()
 
-   list(LENGTH vertices numberOfVertices)
 
-   list(LENGTH edges numberOfEdges)
 
-   set(dgraph_list "${numberOfVertices} ${numberOfEdges}\n" ${dgraph_list})
 
-   if(MY_WITH_OPTION)
 
-     set(filename "${dir}/DGraphInput.txt")
 
-   elseif(MY_WITH_EXTERNALS)
 
-     set(filename "${dir}/DGraphInput-alldep-withext.txt")
 
-   else()
 
-     set(filename "${dir}/DGraphInput-alldep.txt")
 
-   endif()
 
-   file(WRITE ${filename} ${dgraph_list})
 
-   message(STATUS "Generated: ${filename}")
 
- endfunction()
 
 
  |