Skip to content

Commit

Permalink
Remove external download CMake commands.
Browse files Browse the repository at this point in the history
  • Loading branch information
ktbolt committed Feb 18, 2025
1 parent e0ff754 commit 280662a
Show file tree
Hide file tree
Showing 29 changed files with 828 additions and 380 deletions.
72 changes: 43 additions & 29 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,34 +36,23 @@
# 2. ExternalProject_Add(SimVascular ---> Builds SimVascular
#-----------------------------------------------------------------------------

#-----------------------------------------------------------------------------
cmake_minimum_required(VERSION 3.10.0)
#-----------------------------------------------------------------------------

#-----------------------------------------------------------------------------
Project(SV_TOP)
#-----------------------------------------------------------------------------

#-----------------------------------------------------------------------------
# CMake module path inside of true simvascular source
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Code/CMake"
"${CMAKE_MODULE_PATH}")
#-----------------------------------------------------------------------------
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Code/CMake" "${CMAKE_MODULE_PATH}")

#-----------------------------------------------------------------------------
# CMake Includes
include(CheckLibraryExists)
include(GetPrerequisites)
include(GenerateExportHeader)
include(ExternalProject)
#-----------------------------------------------------------------------------

#-----------------------------------------------------------------------------
# SimVascular Includes
include(SimVascularMacros)
include(SimVascularSystemSetup)
include(SimVascularFunctionCheckCompilerFlags)
#-----------------------------------------------------------------------------

#-----------------------------------------------------------------------------
# RPATH handling
Expand All @@ -78,22 +67,29 @@ option(SV_USE_ONEDSOLVER "Enable building the 1D solver plugin" ON)

# Optionally build the MITK segmentation plugin
option(SV_USE_MITK_SEGMENTATION "Enable building the MITK segmentation plugin" ON)
#-----------------------------------------------------------------------------
# Externals!

# Define varaibles storing external paths.
#
# These will be set manually during the build.
#
# Note that these names must match those given in Code/CMake/Externals/*.cmake files.
#
set(SV_EXTERNALS_DIR "" CACHE STRING "SimVascular externals directory")
mark_as_advanced(SV_EXTERNALS_DIR)

set(SV_FREETYPE_DIR "" CACHE PATH "FREETYPE install directory containing a configuration file")
set(SV_GDCM_DIR "" CACHE PATH "GDCM install directory containing a configuration file")
set(SV_HDF5_DIR "" CACHE PATH "hdf5 install directory containing a configuration file")
set(SV_ITK_DIR "" CACHE PATH "ITK install directory containing a configuration file")
set(SV_ML_DIR "" CACHE PATH "ML install directory containing a configuration file")
set(SV_MMG_DIR "" CACHE PATH "MMG install directory containing a configuration file")
set(SV_OPEN_CASCADE_DIR "" CACHE PATH "OpenCASCADE install directory containing a configuration file")
set(SV_OpenCASCADE_DIR "" CACHE PATH "OpenCASCADE install directory containing a configuration file")
set(SV_PYTHON_DIR"" CACHE PATH "PYTHON install directory containing a configuration file")
set(SV_QT_DIR "" CACHE PATH "Qt install directory containing a configuration file")
set(SV_Qt6_DIR "" CACHE PATH "Qt6 install directory containing a configuration file")
set(SV_TINYXML2_DIR "" CACHE PATH "TINYXML2 install directory containing a configuration file")
set(SV_VTK_DIR "" CACHE PATH "VTK install directory containing a configuration file")

set(SV_EXTERNALS_VERSION_NUMBER "2022.10" CACHE STRING "SimVascular Externals Release Version")
set(SV_EXTERNALS_VERSION_NUMBER "2024.05" CACHE STRING "SimVascular Externals Release Version")
mark_as_advanced(SV_EXTERNALS_VERSION_NUMBER)

# Distribution
Expand Down Expand Up @@ -138,11 +134,12 @@ endif()
#mark_as_advanced(SV_EXTERNALS_USE_PREBUILT_QT)
#mark_as_advanced(SV_EXTERNALS_PREBUILT_QT_PATH)

set(SV_EXTERNALS_TOPLEVEL_BIN_DIR "${CMAKE_BINARY_DIR}/Externals-build/svExternals/bin")
set(SV_EXTERNALS_ADDITIONAL_CMAKE_ARGS "" CACHE STRING "If more options want to be provided to the sv_externals build, they can be with this string")
#set(SV_EXTERNALS_TOPLEVEL_BIN_DIR "${CMAKE_BINARY_DIR}/Externals-build/svExternals/bin")
#set(SV_EXTERNALS_ADDITIONAL_CMAKE_ARGS "" CACHE STRING "If more options want to be provided to the sv_externals build, they can be with this string")

# Note: only download mitk if needed, but need to download Qt
# because of VTK dependence regardless
#
set(SV_CMAKE_DOWLOAD_MITK_EXTERNAL "ON" CACHE BOOL "Force ON" FORCE)
if(DEFINED SV_USE_SV4_GUI)
if(NOT SV_USE_SV4_GUI)
Expand All @@ -151,9 +148,13 @@ if(DEFINED SV_USE_SV4_GUI)
endif()

message(STATUS "[root] ")
message(STATUS "[root] ++++ ExternalProject_Add(Externals ... ")
message(STATUS "[root] SV_QT_DIR: ${SV_QT_DIR}")
message(STATUS "[root] ++++ Add Externals project ... ")
message(STATUS "[root] SV_EXTERNALS_DIR: ${SV_EXTERNALS_DIR}")
message(STATUS "[root] SV_EXTERNALS_VERSION_NUMBER: ${SV_EXTERNALS_VERSION_NUMBER}")
message(STATUS "[root] DSV_FREETYPE_DIR: ${DSV_FREETYPE_DIR}")
message(STATUS "[root] SV_GDCM_DIR: ${SV_GDCM_DIR}")
message(STATUS "[root] SV_PYTHON_DIR: ${SV_PYTHON_DIR}")
message(STATUS "[root] SV_Qt6_DIR: ${SV_Qt6_DIR}")

ExternalProject_Add(Externals
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Externals
Expand Down Expand Up @@ -181,10 +182,10 @@ ExternalProject_Add(Externals
-DSV_MMG_DIR:PATH=${SV_MMG_DIR}
-DSV_MITK_DIR:PATH=${SV_MITK_DIR}
-DSV_ML_DIR:PATH=${SV_ML_DIR}
-DSV_OPEN_CASCADE_DIR:PATH=${SV_OPEN_CASCADE_DIR}
-DSV_OpenCASCADE_DIR:PATH=${SV_OpenCASCADE_DIR}
-DSV_PYTHON_DIR:PATH=${SV_PYTHON_DIR}
-DSV_TINYXML2_DIR:PATH=${SV_TINYXML2_DIR}
-DSV_QT_DIR:PATH=${SV_QT_DIR}
-DSV_Qt6_DIR:PATH=${SV_Qt6_DIR}
-DSV_VTK_DIR:PATH=${SV_VTK_DIR}
#
-DSV_EXTERNALS_USE_PREBUILT_QT:BOOL=${SV_EXTERNALS_USE_PREBUILT_QT}
Expand All @@ -194,12 +195,13 @@ ExternalProject_Add(Externals
${SV_EXTERNALS_ADDITIONAL_CMAKE_ARGS}
)

message(STATUS "[root] ---- Done ExternalProject_Add(Externals ")
message(STATUS "[root] ---- Done add Externals project ... ")

#-----------------------------------------------------------------------------

#-----------------------------------------------------------------------------
# SimVascular!
# Create SimVascular external project ?
#
message(STATUS "[root] ")
message(STATUS "[root] ++++ Add SimVascular external project ... ")
message(STATUS "[root] SV_EXTERNALS_DIR: ${SV_EXTERNALS_DIR}")

if(WIN32)
set(freetype_shared_option "-DSV_USE_FREETYPE_SHARED:BOOL=OFF")
Expand Down Expand Up @@ -232,17 +234,27 @@ ExternalProject_Add(SimVascular
-DSV_EXTERNALS_VERSION_NUMBER:STRING=${SV_EXTERNALS_VERSION_NUMBER}
-DSV_ENABLE_DISTRIBUTION:BOOL=${SV_ENABLE_DISTRIBUTION}
-DSV_USE_FREETYPE:BOOL=ON
-DSV_FREETYPE_DIR:PATH=${SV_FREETYPE_DIR}
${freetype_shared_option}
-DSV_USE_GDCM:BOOL=ON
-DSV_GDCM_DIR:PATH=${SV_GDCM_DIR}
-DSV_HDF5_DIR:PATH=${SV_HDF5_DIR}
-DSV_USE_ITK:BOOL=ON
-DSV_ITK_DIR:PATH=${SV_ITK_DIR}
-DSV_USE_MITK:BOOL=ON
-DSV_USE_MITK_CONFIG:BOOL=OFF
-DSV_MITK_DIR:PATH=${SV_MITK_DIR}
-DSV_USE_MMG:BOOL=ON
-DSV_MMG_DIR:PATH=${SV_MMG_DIR}
-DSV_USE_MPICH2:BOOL=OFF
-DSV_USE_OpenCASCADE:BOOL=ON
-DSV_OpenCASCADE_DIR:PATH=${SV_OpenCASCADE_DIR}
-DSV_USE_PYTHON:BOOL=ON
-DSV_USE_Qt6:BOOL=ON
-DSV_USE_QT:BOOL=ON
-DSV_PYTHON_DIR:PATH=${SV_PYTHON_DIR}
-DSV_Qt6_DIR:PATH=${SV_Qt6_DIR}
-DSV_VTK_DIR:PATH=${SV_VTK_DIR}
-DSV_USE_SV4_GUI:BOOL=${SV_USE_SV4_GUI}
-DSV_USE_MITK_SEGMENTATION:BOOL=${SV_USE_MITK_SEGMENTATION}
-DSV_USE_SOLVERIO:BOOL=ON
Expand All @@ -257,4 +269,6 @@ ExternalProject_Add(SimVascular
-DQt6_DIR:PATH=${SV_EXTERNALS_PREBUILT_QT_PATH}
${SV_ADDITIONAL_CMAKE_ARGS}
)
#-----------------------------------------------------------------------------

message(STATUS "[root] ---- Done add SimVascular external project ... ")

24 changes: 18 additions & 6 deletions Code/CMake/Externals/FREETYPE.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,28 @@
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#-----------------------------------------------------------------------------
# FREETYPE
set(proj FREETYPE)

set(msg "[Code/CMake/Externals/FREETYPE.cmake]")
message(STATUS "${msg} =============== Code/CMake/Externals FREETYPE.cmake ===============")
message(STATUS "${msg} proj: ${proj}")
message(STATUS "${msg} SV_USE_FREETYPE: ${SV_USE_FREETYPE}")
message(STATUS "${msg} SV_FREETYPE_DIR: ${SV_FREETYPE_DIR}")
message(STATUS "${msg} FREETYPE_VERISON: ${${proj}_VERSION}")
message(STATUS "${msg} SV_EXTERNALS_USE_TOPLEVEL_BIN_DIR: ${SV_EXTERNALS_USE_TOPLEVEL_BIN_DIR}")

if(SV_USE_${proj})

# If using toplevel dir, force FREETYPE_DIR to be the SV_FREETYPE_DIR set by the
# simvascular_add_new_external macro
if(SV_EXTERNALS_USE_TOPLEVEL_BIN_DIR)
set(${proj}_DIR ${SV_${proj}_DIR} CACHE PATH "Force ${proj} dir to externals" FORCE)
endif()
#
# [davep] always set this ?
#
#if(SV_EXTERNALS_USE_TOPLEVEL_BIN_DIR)
# set(${proj}_DIR ${SV_${proj}_DIR} CACHE PATH "Force ${proj} dir to externals" FORCE)
#endif()

set(${proj}_DIR ${SV_${proj}_DIR} CACHE PATH "Force ${proj} dir to externals" FORCE)

# Find Freetype
simvascular_external(${proj}
Expand All @@ -47,7 +59,7 @@ if(SV_USE_${proj})
)

# Set SV_FREETYPE_DIR to the directory that was found to contain FREETYPE
set(SV_${proj}_DIR ${${proj}_DIR})
#set(SV_${proj}_DIR ${${proj}_DIR})

link_directories(${${proj}_LIBRARY_DIR})

Expand Down
12 changes: 10 additions & 2 deletions Code/CMake/Externals/GDCM.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,17 @@
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#-----------------------------------------------------------------------------
# GDCM
set(proj GDCM)

set(msg "[Code/CMake/Externals/GDCM.cmake]")
message(STATUS "${msg} =============== Code/CMake/Externals GDCM.cmake ===============")
message(STATUS "${msg} proj: ${proj}")
message(STATUS "${msg} SV_USE_GDCM: ${SV_USE_GDCM}")
message(STATUS "${msg} SV_GDCM_DIR: ${SV_GDCM_DIR}")
message(STATUS "${msg} GDCM_VERISON: ${${proj}_VERSION}")
message(STATUS "${msg} SV_EXTERNALS_USE_TOPLEVEL_BIN_DIR: ${SV_EXTERNALS_USE_TOPLEVEL_BIN_DIR}")
message(STATUS "${msg} PYTHON_LIBRARY: ${PYTHON_LIBRARY}")

if(SV_USE_${proj})

# If using toplevel dir, foce GDCM_DIR to be the SV_GDCM_DIR set by the
Expand Down
19 changes: 15 additions & 4 deletions Code/CMake/Externals/HDF5.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,20 @@
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#-----------------------------------------------------------------------------
# HDF5
set(proj HDF5)

set(msg "[Code/CMake/Externals/HDF5.cmake] ")
message(STATUS "${msg} =============== Code/CMake/Externals HDF5.cmake ===============")
message(STATUS "${msg} proj: ${proj}")
message(STATUS "${msg} SV_HDF5_DIR: ${SV_HDF5_DIR}")
message(STATUS "${msg} HDF5_DIR: ${HDF5_DIR}")
message(STATUS "${msg} SV_EXTERNALS_USE_TOPLEVEL_BIN_DIR: ${SV_EXTERNALS_USE_TOPLEVEL_BIN_DIR}")

if(SV_USE_${proj})

# If using toplevel dir, foce HDF5_DIR to be the SV_HDF5_DIR set by the
# simvascular_add_new_external macro
#
if(SV_EXTERNALS_USE_TOPLEVEL_BIN_DIR)
if(WIN32)
set(${proj}_DIR ${SV_${proj}_DIR}/cmake CACHE PATH "Force ${proj} dir to externals" FORCE)
Expand All @@ -48,18 +55,22 @@ if(SV_USE_${proj})

# For itk which manually sets HDF5 dir and we need to override
set(CMAKE_PREFIX_PATH "${HDF5_DIR};${CMAKE_PREFIX_PATH}" CACHE PATH "" FORCE)
message(STATUS "${msg} Find HDF5 ... ")

# Find HDF5
simvascular_external(${proj}
SHARED_LIB ${SV_USE_${proj}_SHARED}
VERSION ${${proj}_VERSION}
REQUIRED
)
message(STATUS "${msg} --- Done find HDF5 ")
message(STATUS "${msg} HDF5_DIR: ${HDF5_DIR}")

# Set SV_HDF5_DIR to the directory that was found to contain HDF5
#if(NOT LINUX)
# set(SV_${proj}_DIR ${${proj}_DIR})
#endif()

endif()
#-----------------------------------------------------------------------------

message(STATUS "${msg} ----- Done Code/CMake/Externals HDF5.cmake ")
26 changes: 23 additions & 3 deletions Code/CMake/Externals/ITK.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -28,27 +28,47 @@
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#-----------------------------------------------------------------------------
# ITK
set(proj ITK)

set(msg "[Code/CMake/Externals/ITK.cmake]")
message(STATUS "${msg} =============== Code/CMake/Externals ITK.cmake ===============")
message(STATUS "${msg} proj: ${proj}")
message(STATUS "${msg} SV_USE_ITK: ${SV_USE_ITK}")
message(STATUS "${msg} SV_ITK_DIR: ${SV_ITK_DIR}")
message(STATUS "${msg} ITK_VERISON: ${${proj}_VERSION}")
message(STATUS "${msg} SV_EXTERNALS_USE_TOPLEVEL_BIN_DIR: ${SV_EXTERNALS_USE_TOPLEVEL_BIN_DIR}")
message(STATUS "${msg} PYTHON_LIBRARY: ${PYTHON_LIBRARY}")
message(STATUS "${msg} SV_VTK_DIR: ${SV_VTK_DIR}")
message(STATUS "${msg} VTK_LIBRARIES: ${VTK_LIBRARIES}")
message(STATUS "${msg} HDF5_DIR: ${HDF5_DIR}")
message(STATUS "${msg} HDF5_LIB_DIR: ${HDF5_LIB_DIR}")

if(SV_USE_${proj})

# ITK resets the vtk dir and variables (very annoying), must set temp vars
# vtk dir to reset at the end
#
set(TEMP_VTK_DIR ${VTK_DIR})
set(TEMP_VTK_LIBRARIES ${VTK_LIBRARIES})

# If using toplevel dir, foce ITK_DIR to be the SV_ITK_DIR set by the
# simvascular_add_new_external macro
#
if(SV_EXTERNALS_USE_TOPLEVEL_BIN_DIR)
set(${proj}_DIR ${SV_${proj}_DIR}/lib/cmake/${proj}-${${proj}_MAJOR_VERSION}.${ITK_MINOR_VERSION} CACHE PATH "Force ${proj} dir to externals" FORCE)
if(WIN32)
set(${proj}_DLL_PATH "${SV_${proj}_DIR}/bin" CACHE PATH "Force ITK DLL Path")
endif()
endif()

message(STATUS "${msg} ITK_DIR: ${ITK_DIR}")

# Find ITK
list(APPEND CMAKE_PREFIX_PATH ${GDCM_DIR})
#
list(APPEND CMAKE_PREFIX_PATH ${ITK_DIR})

#find_package(ITK REQUIRED PATHS ${SV_ITK_DIR}/lib/cmake NO_DEFAULT_PATH)

simvascular_external(${proj}
SHARED_LIB ${SV_USE_${proj}_SHARED}
VERSION ${${proj}_VERSION}
Expand Down
23 changes: 20 additions & 3 deletions Code/CMake/Externals/MITK.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,25 @@
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#-----------------------------------------------------------------------------
# MITK
set(proj MITK)

set(msg "[Code/CMake/Externals/MITK.cmake] ")
message(STATUS "${msg} =============== Code/CMake/Externals MITK.cmake ===============")
message(STATUS "${msg} proj: ${proj}")
message(STATUS "${msg} SV_MITK_DIR: ${SV_MITK_DIR}")
message(STATUS "${msg} MITK_DIR: ${MITK_DIR}")
message(STATUS "${msg} SV_USE_MITK_CONFIG: ${SV_USE_MITK_CONFIG}")
message(STATUS "${msg} SV_EXTERNALS_USE_TOPLEVEL_BIN_DIR: ${SV_EXTERNALS_USE_TOPLEVEL_BIN_DIR}")

if(SV_USE_${proj})

# If using toplevel dir, foce MITK_DIR to be the SV_MITK_DIR set by the
# simvascular_add_new_external macro
#
if(SV_EXTERNALS_USE_TOPLEVEL_BIN_DIR)
set(${proj}_DIR ${SV_${proj}_DIR} CACHE PATH "Force ${proj} dir to externals" FORCE)
endif()
message(STATUS "${msg} MITK_DIR: ${MITK_DIR}")

if(SV_USE_${proj}_CONFIG)

Expand Down Expand Up @@ -65,19 +74,27 @@ if(SV_USE_${proj})

else()

message(STATUS "${msg} Don't use MITK config")

message(STATUS "${msg} Find MITK ... ")

simvascular_external(${proj}
SHARED_LIB ${SV_USE_${proj}_SHARED}
VERSION ${${proj}_VERSION}
REQUIRED
)

message(STATUS "${msg} ----- Done find MITK ")

# Copy of necessary resource files are in SV CMake dir. usResourceCompiler
# is in mitk bin directory
find_package(CppMicroServices)

# Set SV_MITK_DIR to the toplevel MITK if it exists
get_filename_component(SV_${proj}_DIR ${${proj}_INCLUDE_DIR} DIRECTORY)

endif()

endif()
#-----------------------------------------------------------------------------

message(STATUS "${msg} ----- Done Code/CMake/Externals MITK.cmake ")
Loading

0 comments on commit 280662a

Please sign in to comment.