Skip to content
Snippets Groups Projects
Commit 061eff08 authored by Jean-Christophe Fillion-Robin's avatar Jean-Christophe Fillion-Robin Committed by Kitware Robot
Browse files

Merge topic 'improve-external-module-support'


e33b90d0 vtkRenderingOpenVR: Support building the module externally
20629593 ExternalModule: Improve target export to allow build against external module
074d3212 ExternalModule: Ensure module built externally use required VTK flags
300863a7 ExternalModule: Set build types

Acked-by: default avatarKitware Robot <kwrobot@kitware.com>
Merge-request: !3451
parents ae091f14 e33b90d0
No related branches found
No related tags found
No related merge requests found
......@@ -98,16 +98,7 @@ endif()
# Load requested modules.
# List of available VTK modules.
set(VTK_MODULES_ENABLED)
# Determine list of available VTK-modules by scanning the VTK_MODULES_DIR.
file(GLOB config_files RELATIVE "${VTK_MODULES_DIR}" "${VTK_MODULES_DIR}/*.cmake")
foreach (_file ${config_files})
if (NOT "${_file}" MATCHES "[^\\-]+-[a-zA-Z]+\\.cmake")
string(REGEX REPLACE "\\.cmake$" "" _module "${_file}")
list(APPEND VTK_MODULES_ENABLED "${_module}")
endif()
endforeach()
set(VTK_MODULES_ENABLED "@VTK_CONFIG_MODULES_ENABLED@")
# Import VTK targets.
set(VTK_CONFIG_TARGETS_FILE "@VTK_CONFIG_TARGETS_FILE@")
......
......@@ -43,11 +43,35 @@ if(NOT VTK_INSTALL_EXPORT_NAME)
set(VTK_INSTALL_EXPORT_NAME VTKTargets)
endif()
include(${VTK_CMAKE_DIR}/vtkInitializeBuildType.cmake)
# Use VTK's flags.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${VTK_REQUIRED_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${VTK_REQUIRED_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${VTK_REQUIRED_EXE_LINKER_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${VTK_REQUIRED_SHARED_LINKER_FLAGS}")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${VTK_REQUIRED_MODULE_LINKER_FLAGS}")
option(BUILD_SHARED_LIBS "Build VTK module with shared libraries." ${VTK_BUILD_SHARED_LIBS})
if(NOT CMAKE_POSITION_INDEPENDENT_CODE)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
# Add the VTK_MODULES_DIR to the CMAKE_MODULE_PATH and then use the binary
# directory for the project to write out new ones to.
if(VTK_MODULES_DIR)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${VTK_MODULES_DIR})
endif()
set(VTK_MODULES_DIR "${CMAKE_BINARY_DIR}/${VTK_INSTALL_PACKAGE_DIR}/Modules")
set(VTK_MODULES_DIR "${VTK_DIR}/${VTK_INSTALL_PACKAGE_DIR}/Modules")
include(vtkModuleMacros)
include(module.cmake OPTIONAL RESULT_VARIABLE _found)
if(_found)
set(${vtk-module}-targets ${vtk-module}Targets)
set(${vtk-module}-targets-install "\${VTK_INSTALL_PREFIX}/${VTK_INSTALL_PACKAGE_DIR}/Modules/Targets/${vtk-module}Targets.cmake")
set(${vtk-module}_TARGETS_FILE_INSTALL "${${vtk-module}-targets-install}")
set(${vtk-module}-targets-build-directory "${VTK_DIR}/${VTK_INSTALL_PACKAGE_DIR}/Modules/Targets")
file(MAKE_DIRECTORY ${${vtk-module}-targets-build-directory})
set(${vtk-module}-targets-build "${${vtk-module}-targets-build-directory}/${vtk-module}Targets.cmake")
set(${vtk-module}_TARGETS_FILE_BUILD "${${vtk-module}-targets-build}")
file(WRITE "${${vtk-module}_TARGETS_FILE_BUILD}" "") # Clear targets
endif()
# Set a default build type if none was specified
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting build type to 'Debug' as none was specified.")
set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE)
# Set the possible values of build type for cmake-gui
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release"
"MinSizeRel" "RelWithDebInfo")
endif()
......@@ -52,6 +52,13 @@ macro(vtk_module_load mod)
if(NOT ${mod}_LOADED)
message(FATAL_ERROR "No such module: \"${mod}\"")
endif()
# Include the targets file if it has been defined. Targets files other
# than VTKTargets.cmake are created when modules are built externally. Do not
# include the targets file inside the module itself -- which occurs in a module's
# test configuration.
if(EXISTS "${${mod}_TARGETS_FILE}" AND NOT vtk-module STREQUAL mod)
include("${${mod}_TARGETS_FILE}")
endif()
endif()
endmacro()
......@@ -108,9 +115,20 @@ endmacro()
#
# Do not name a module as the namespace.
macro(vtk_module_config ns)
# Determine list of available VTK-modules by scanning the VTK_MODULES_DIR.
set(VTK_MODULES_AVAILABLE)
file(GLOB config_files RELATIVE "${VTK_MODULES_DIR}" "${VTK_MODULES_DIR}/*.cmake")
foreach (_file ${config_files})
if (NOT "${_file}" MATCHES "[^\\-]+-[a-zA-Z]+\\.cmake")
string(REGEX REPLACE "\\.cmake$" "" _module "${_file}")
list(APPEND VTK_MODULES_AVAILABLE "${_module}")
endif()
endforeach()
set(_${ns}_MISSING ${ARGN})
if(_${ns}_MISSING)
list(REMOVE_ITEM _${ns}_MISSING ${VTK_MODULES_ENABLED})
list(REMOVE_ITEM _${ns}_MISSING ${VTK_MODULES_AVAILABLE})
endif()
if(_${ns}_MISSING)
set(msg "")
......
......@@ -6,4 +6,5 @@ set(@vtk-module@_LIBRARY_DIRS "@vtk-module-LIBRARY_DIRS@")
set(@vtk-module@_RUNTIME_LIBRARY_DIRS "@vtk-module-RUNTIME_LIBRARY_DIRS@")
set(@vtk-module@_WRAP_HIERARCHY_FILE "@vtk-module-WRAP_HIERARCHY_FILE@")
set(@vtk-module@_KIT "@vtk-module-KIT@")
set(@vtk-module@_TARGETS_FILE "@vtk-module-TARGETS_FILE@")
@vtk-module-EXPORT_CODE@
......@@ -309,6 +309,14 @@ macro(vtk_module_export_info)
endif()
set(vtk-module-EXPORT_CODE-build "${_code}${${vtk-module}_EXPORT_CODE_BUILD}\n")
set(vtk-module-EXPORT_CODE-install "${_code}${${vtk-module}_EXPORT_CODE_INSTALL}\n")
if(VTK_SOURCE_DIR)
# Uses VTKTargets.cmake
set(vtk-module-TARGETS_FILE-build "")
set(vtk-module-TARGETS_FILE-install "")
else()
set(vtk-module-TARGETS_FILE-build "${${vtk-module}_TARGETS_FILE_BUILD}")
set(vtk-module-TARGETS_FILE-install "${${vtk-module}_TARGETS_FILE_INSTALL}")
endif()
if(${vtk-module}_WRAP_HINTS)
set(vtk-module-EXPORT_CODE-build
......@@ -336,6 +344,7 @@ macro(vtk_module_export_info)
set(vtk-module-RUNTIME_LIBRARY_DIRS "${vtk-module-RUNTIME_LIBRARY_DIRS-build}")
set(vtk-module-INCLUDE_DIRS "${vtk-module-INCLUDE_DIRS-build}")
set(vtk-module-EXPORT_CODE "${vtk-module-EXPORT_CODE-build}")
set(vtk-module-TARGETS_FILE "${vtk-module-TARGETS_FILE-build}")
set(vtk-module-WRAP_HIERARCHY_FILE "${${vtk-module}_WRAP_HIERARCHY_FILE}")
set(vtk-module-KIT "${${vtk-module}_KIT}")
configure_file(${_VTKModuleMacros_DIR}/vtkModuleInfo.cmake.in
......@@ -343,6 +352,7 @@ macro(vtk_module_export_info)
set(vtk-module-INCLUDE_DIRS "${vtk-module-INCLUDE_DIRS-install}")
set(vtk-module-RUNTIME_LIBRARY_DIRS "${vtk-module-RUNTIME_LIBRARY_DIRS-install}")
set(vtk-module-EXPORT_CODE "${vtk-module-EXPORT_CODE-install}")
set(vtk-module-TARGETS_FILE "${vtk-module-TARGETS_FILE-install}")
set(vtk-module-WRAP_HIERARCHY_FILE
"\${CMAKE_CURRENT_LIST_DIR}/${vtk-module}Hierarchy.txt")
configure_file(${_VTKModuleMacros_DIR}/vtkModuleInfo.cmake.in
......@@ -481,7 +491,19 @@ function(vtk_target_name _name)
endfunction()
function(vtk_target_export _name)
set_property(GLOBAL APPEND PROPERTY VTK_TARGETS ${_name})
set(is_insource_module 0)
if(VTK_SOURCE_DIR)
set(is_insource_module 1)
endif()
set(is_local_project 0)
if("${${vtk-module}-targets-build}" STREQUAL "")
set(is_local_project 1) # E.g Examples/Build/vtkMy or Examples/Build/vtkLocal
endif()
if(is_insource_module OR is_local_module )
set_property(GLOBAL APPEND PROPERTY VTK_TARGETS ${_name})
else()
export(TARGETS ${_name} APPEND FILE ${${vtk-module}-targets-build}) # External VTK module
endif()
endfunction()
function(vtk_target_install _name)
......
......@@ -88,14 +88,7 @@ macro(vtk_download_attempt_check _name)
endif()
endmacro()
# Set a default build type if none was specified
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting build type to 'Debug' as none was specified.")
set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE)
# Set the possible values of build type for cmake-gui
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release"
"MinSizeRel" "RelWithDebInfo")
endif()
include(vtkInitializeBuildType)
# Test input data staging directory.
file(RELATIVE_PATH vtk_reldir "${CMAKE_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}")
......
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}")
if(NOT VTK_SOURCE_DIR)
cmake_minimum_required(VERSION 3.3 FATAL_ERROR)
project(vtkRenderingOpenVR)
find_package(VTK REQUIRED)
endif()
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${VTK_CMAKE_DIR}")
if(NOT VTK_SOURCE_DIR)
include(vtkExternalModuleMacros)
endif()
find_package(OpenVR REQUIRED)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment