forked from Slicer/SlicerGitSVNArchive
-
Notifications
You must be signed in to change notification settings - Fork 2
/
External_VTKv5.cmake
154 lines (129 loc) · 4.9 KB
/
External_VTKv5.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
set(proj VTKv5)
# Set dependency list
set(${proj}_DEPENDENCIES "zlib")
if (Slicer_USE_PYTHONQT)
list(APPEND ${proj}_DEPENDENCIES python)
endif()
# Include dependent projects if any
ExternalProject_Include_Dependencies(${proj} PROJECT_VAR proj DEPENDS_VAR ${proj}_DEPENDENCIES)
if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
unset(VTK_DIR CACHE)
unset(VTK_SOURCE_DIR CACHE)
find_package(VTK REQUIRED NO_MODULE)
endif()
# Sanity checks
if(DEFINED VTK_DIR AND NOT EXISTS ${VTK_DIR})
message(FATAL_ERROR "VTK_DIR variable is defined but corresponds to non-existing directory")
endif()
if(DEFINED VTK_SOURCE_DIR AND NOT EXISTS ${VTK_SOURCE_DIR})
message(FATAL_ERROR "VTK_SOURCE_DIR variable is defined but corresponds to non-existing directory")
endif()
if((NOT DEFINED VTK_DIR OR NOT DEFINED VTK_SOURCE_DIR) AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
set(EXTERNAL_PROJECT_OPTIONAL_ARGS)
set(VTK_WRAP_TCL OFF)
set(VTK_WRAP_PYTHON OFF)
if(Slicer_USE_PYTHONQT)
set(VTK_WRAP_PYTHON ON)
endif()
if(Slicer_USE_PYTHONQT)
list(APPEND EXTERNAL_PROJECT_OPTIONAL_ARGS
-DVTK_INSTALL_PYTHON_USING_CMAKE:BOOL=ON
-DPYTHON_EXECUTABLE:PATH=${PYTHON_EXECUTABLE}
-DPYTHON_INCLUDE_DIR:PATH=${PYTHON_INCLUDE_DIR}
-DPYTHON_LIBRARY:FILEPATH=${PYTHON_LIBRARY}
)
endif()
if(NOT APPLE)
list(APPEND EXTERNAL_PROJECT_OPTIONAL_ARGS
#-DDESIRED_QT_VERSION:STRING=4 # Unused
-DVTK_USE_GUISUPPORT:BOOL=ON
-DVTK_USE_QVTK_QTOPENGL:BOOL=ON
-DVTK_USE_QT:BOOL=ON
-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}
)
else()
list(APPEND EXTERNAL_PROJECT_OPTIONAL_ARGS
-DVTK_USE_CARBON:BOOL=OFF
-DVTK_USE_COCOA:BOOL=ON # Default to Cocoa, VTK/CMakeLists.txt will enable Carbon and disable cocoa if needed
-DVTK_USE_X:BOOL=OFF
#-DVTK_USE_RPATH:BOOL=ON # Unused
#-DDESIRED_QT_VERSION:STRING=4 # Unused
-DVTK_USE_GUISUPPORT:BOOL=ON
-DVTK_USE_QVTK_QTOPENGL:BOOL=ON
-DVTK_USE_QT:BOOL=ON
-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}
)
endif()
# Disable Tk when Python wrapping is enabled
if(Slicer_USE_PYTHONQT)
list(APPEND EXTERNAL_PROJECT_OPTIONAL_ARGS -DVTK_USE_TK:BOOL=OFF)
endif()
if(VTK_WRAP_TCL)
list(APPEND EXTERNAL_PROJECT_OPTIONAL_ARGS
-DTCL_INCLUDE_PATH:PATH=${TCL_INCLUDE_PATH}
-DTK_INCLUDE_PATH:PATH=${TK_INCLUDE_PATH}
-DTCL_LIBRARY:FILEPATH=${TCL_LIBRARY}
-DTK_LIBRARY:FILEPATH=${TK_LIBRARY}
-DTCL_TCLSH:FILEPATH=${TCL_TCLSH}
)
endif()
set(${CMAKE_PROJECT_NAME}_${proj}_GIT_REPOSITORY "github.com/Slicer/VTK.git" CACHE STRING "Repository from which to get VTK" FORCE)
set(${CMAKE_PROJECT_NAME}_${proj}_GIT_TAG "d8540e7ee356bbc025cb9917a41b7c7fa0548d4b" CACHE STRING "VTK git tag to use" FORCE)
mark_as_advanced(${CMAKE_PROJECT_NAME}_${proj}_GIT_REPOSITORY ${CMAKE_PROJECT_NAME}_${proj}_GIT_TAG)
if(NOT DEFINED git_protocol)
set(git_protocol "git")
endif()
ExternalProject_Add(${proj}
${${proj}_EP_ARGS}
SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj}
BINARY_DIR ${proj}-build
GIT_REPOSITORY "${git_protocol}://${${CMAKE_PROJECT_NAME}_${proj}_GIT_REPOSITORY}"
GIT_TAG ${${CMAKE_PROJECT_NAME}_${proj}_GIT_TAG}
CMAKE_CACHE_ARGS
-DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}
-DCMAKE_CXX_FLAGS:STRING=${ep_common_cxx_flags}
-DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}
-DCMAKE_C_FLAGS:STRING=${ep_common_c_flags}
-DBUILD_TESTING:BOOL=OFF
-DBUILD_EXAMPLES:BOOL=OFF
-DBUILD_SHARED_LIBS:BOOL=ON
-DVTK_USE_PARALLEL:BOOL=ON
-DVTK_DEBUG_LEAKS:BOOL=${VTK_DEBUG_LEAKS}
-DVTK_LEGACY_REMOVE:BOOL=ON
-DVTK_WRAP_TCL:BOOL=${VTK_WRAP_TCL}
#-DVTK_USE_RPATH:BOOL=ON # Unused
-DVTK_WRAP_PYTHON:BOOL=${VTK_WRAP_PYTHON}
-DVTK_INSTALL_LIB_DIR:PATH=${Slicer_INSTALL_LIB_DIR}
-DVTK_USE_SYSTEM_ZLIB:BOOL=ON
-DZLIB_ROOT:PATH=${ZLIB_ROOT}
-DZLIB_INCLUDE_DIR:PATH=${ZLIB_INCLUDE_DIR}
-DZLIB_LIBRARY:FILEPATH=${ZLIB_LIBRARY}
${EXTERNAL_PROJECT_OPTIONAL_ARGS}
INSTALL_COMMAND ""
DEPENDS
${${proj}_DEPENDENCIES}
)
set(VTK_DIR ${CMAKE_BINARY_DIR}/${proj}-build)
set(VTK_SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj})
set(PNG_INCLUDE_DIR ${VTK_SOURCE_DIR}/Utilities/vtkpng)
set(PNG_LIBRARY_DIR ${VTK_DIR}/bin)
if(CMAKE_CONFIGURATION_TYPES)
set(PNG_LIBRARY_DIR ${PNG_LIBRARY_DIR}/${CMAKE_CFG_INTDIR})
endif()
if(WIN32)
set(PNG_LIBRARY ${PNG_LIBRARY_DIR}/vtkpng.lib)
elseif(APPLE)
set(PNG_LIBRARY ${PNG_LIBRARY_DIR}/libvtkpng.dylib)
else()
set(PNG_LIBRARY ${PNG_LIBRARY_DIR}/libvtkpng.so)
endif()
else()
ExternalProject_Add_Empty(${proj} DEPENDS ${${proj}_DEPENDENCIES})
endif()
mark_as_superbuild(VTK_SOURCE_DIR:PATH)
mark_as_superbuild(
VARS VTK_DIR:PATH
LABELS "FIND_PACKAGE"
)
ExternalProject_Message(${proj} "PNG_INCLUDE_DIR:${PNG_INCLUDE_DIR}")
ExternalProject_Message(${proj} "PNG_LIBRARY:${PNG_LIBRARY}")