Commit d9483142 authored by Aaron Bray's avatar Aaron Bray
Browse files

Merge branch '3.x' into feature/ventilator_validation

# Conflicts:
#	src/cpp/cpm/controller/Controller.cpp
parents 19a59f83 4d9f64c1
......@@ -77,7 +77,7 @@ if(${PROJECT_NAME}_SUPERBUILD)
option(USE_SYSTEM_${extProj} "Exclude ${extProj} from superbuild and use an existing build." OFF)
mark_as_advanced(USE_SYSTEM_${extProj})
endmacro()
define_dependency(Eigen3)
if(WIN32)
# *nix systems have this already
......@@ -92,7 +92,7 @@ if(${PROJECT_NAME}_SUPERBUILD)
message(FATAL_ERROR "Unable to support Python API, cannot find Python3")
endif()
endif()
if(${PROJECT_NAME}_DEPENDENCIES)
if(MSVC OR XCode)
if(NOT ${PROJECT_NAME}_SLAVE_BUILD)
......@@ -122,7 +122,7 @@ endif()
# INNERBUILD
#-----------------------------------------------------------------------------
if(MSVC)
if(MSVC)
# Using MD as that seems to be what I run into alot, you could change these to /MT and /MTd if you want...
set(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG /MDd /Zi /Ob2 /Oi /Od /RTC1 /MP /EHsc" CACHE STRING INTERNAL FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "/MD /MP /EHsc" CACHE STRING INTERNAL FORCE)
......@@ -153,19 +153,29 @@ if(WIN32)
# *nix systems have this already
find_package(Dirent REQUIRED)
endif()
# Use the config written by protobuf
set(protobuf_MODULE_COMPATIBLE ON CACHE BOOL "" FORCE)
find_package(protobuf REQUIRED NO_DEFAULT_PATH)
# Tell protobuf-config.cmake to try to be compatible with FindProtobuf.cmake;
# this makes it easier for us to work with either one
set(protobuf_MODULE_COMPATIBLE ON CACHE BOOL "CMake built-in FindProtobuf.cmake module compatible" FORCE)
mark_as_advanced(protobuf_MODULE_COMPATIBLE)
# Try to use the config written by protobuf
find_package(protobuf QUIET CONFIG NO_DEFAULT_PATH)
if(protobuf_DIR AND protobuf_FOUND)
# Success; set flag so we will reexport protobuf for our users
set(Pulse_USING_PROTOBUF_DIR ON)
elseif(NOT protobuf_FOUND)
# Nope; fall back on FindProtobuf.cmake
find_package(Protobuf REQUIRED)
endif()
# Ensure protobuf exported target exists
get_target_property(PROTOBUF_LIBRARY_RELEASE protobuf::libprotobuf LOCATION_RELEASE)
get_target_property(PROTOBUF_LIBRARY_DEBUG protobuf::libprotobuf LOCATION_DEBUG)
#message(STATUS "PROTOBUF_LIBRARY_RELEASE ${PROTOBUF_LIBRARY_RELEASE}")
#message(STATUS "PROTOBUF_LIBRARY_DEBUG ${PROTOBUF_LIBRARY_DEBUG}")
install(FILES ${PROTOBUF_LIBRARY_RELEASE} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib OPTIONAL)
install(FILES ${PROTOBUF_LIBRARY_DEBUG} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib OPTIONAL)
get_filename_component(PROTOBUF_LIBRARY_DEBUG ${PROTOBUF_LIBRARY_DEBUG} NAME)
get_filename_component(PROTOBUF_LIBRARY_RELEASE ${PROTOBUF_LIBRARY_RELEASE} NAME)
#message(STATUS "PROTOBUF_LIBRARY_RELEASE ${PROTOBUF_LIBRARY_RELEASE}")
#message(STATUS "PROTOBUF_LIBRARY_DEBUG ${PROTOBUF_LIBRARY_DEBUG}")
set(SCHEMA_SRC "${CMAKE_SOURCE_DIR}/schema")
set(SCHEMA_DST "${CMAKE_SOURCE_DIR}/schema/bind")
......@@ -228,7 +238,7 @@ export(
# Configure '${PROJECT_NAME}Config.cmake' for a build tree
set(build_config ${CMAKE_BINARY_DIR}/${PROJECT_NAME}Config.cmake)
configure_package_config_file(
cmake/${PROJECT_NAME}Config.cmake.in
cmake/${PROJECT_NAME}ConfigBuild.cmake.in
${build_config}
INSTALL_DESTINATION "${PROJECT_BINARY_DIR}"
)
......@@ -244,7 +254,7 @@ install(
set(install_config ${PROJECT_BINARY_DIR}/CMakeFiles/${PROJECT_NAME}Config.cmake)
configure_package_config_file(
cmake/${PROJECT_NAME}Config.cmake.in
cmake/${PROJECT_NAME}ConfigInstall.cmake.in
${install_config}
INSTALL_DESTINATION ${${PROJECT_NAME}_INSTALL_CONFIG_DIR}
)
......
......@@ -107,7 +107,7 @@ Visual Studio users, our <a href="https://gitlab.kitware.com/physiology/engine/w
Here is the quickest way to pull and build via a bash shell:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~bash
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~bash
$ mkdir Pulse
$ cd Pulse
$ git clone https://gitlab.kitware.com/physiology/engine
......@@ -119,9 +119,9 @@ $ cd builds
# Note you need to provide cmake the source directory at the end (relative or absolute)
# Run CMake (it will use the system default compiler if you don't provide options or use the CMake GUI)
$ cmake -DCMAKE_BUILD_TYPE:STRING=Release ../engine
# If you want the build to pull the Verification and Validation (V&V) scenarios and baselines run this (or check the PULSE_DOWNLOAD_BASELINES option in the CMake GUI)
# If you want the build to pull the Verification and Validation (V&V) scenarios and baselines run this (or check the Pulse_DOWNLOAD_BASELINES option in the CMake GUI)
# You can always pull these later if you want (See Running and Testing)
$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DPULSE_DOWNLOAD_BASELINES:BOOL=ON ../engine
$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DPulse_DOWNLOAD_BASELINES:BOOL=ON ../engine
#
# Build the install target/project
# On Linux/OSX/MinGW
......@@ -146,14 +146,12 @@ Kitware provides Pulse containers on [dockerhub](https://hub.docker.com/r/kitwar
Here is an example of building a docker container and pushing it to an organization repository in dockerhub:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~bash
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~bash
# From the Pulse source directory
$ docker build -t kitware/pulse:3.0.0 .
$ docker push kitware/pulse:3.0.0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
### Single Board Computers Support
Note that on small boards, like the Beagle Board Black and DragonBoard 410c, you may need to allocate a <a href="https://www.cyberciti.biz/faq/linux-add-a-swap-file-howto/">temporary swap</a> file if your build runs out of memory
......@@ -165,9 +163,71 @@ su - root
fallocate -l 1G tmpswap
mkswap tmpswap
swapon tmpswap
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Read the article if you want to make this change permanent, it contains some valuable hints regarding permissions and fstab.
### Cross Compiling
CMake provides the ability to easily cross compile.
In general, when we cross compile, we are doing so to get out a PulseC library.
The PulseC library provides an interface used by our C#/Unity and Python API's to access and control the C++ based engine.
Unity is C# based and any C# managed libraries built on any platform, will automatically run on other platforms.
But the PulseC library is a native library and a specific platform version must be provided for the platform Pulse is being run on.
The following sections will highlight specific build instructions for cross compiling for these target platforms.
#### Native Platform Build
The first thing you will want to do is build Pulse on the host system. I use Visual Studio when building natively.
During the Pulse build, it will build and run the Protobuf protoc compiler to generate C++ classes needed for I/O.
These files are needed to build, but when you cross compile, you will build a protoc executable for your target platform, and it will not run on the native host system.
Doing a native build will ensure these files are generated. The cross compile build will see the files exist and not run the non native protoc compiler.
Once you have a native build, create a new empty build directory for your cross compile build.
#### Dockcross
To generate Pulse libraries for android, linux, and web assembly, we use docker containers provided by [dockcross](https://hub.docker.com/u/dockcross). Dockcross provides both a build environment and a cmake toolchain file that simplifies the cross platform build process.
Simply pull the target docker container, run cmake, and build.
I am using docker on windows via the WSL 2 based engine, from an [Ubuntu 20](https://www.microsoft.com/en-us/p/ubuntu-2004-lts/9n6svws3rx71?activetab=pivot:overviewtab) terminal.
Here is an example bulding Pulse for Android armv8a.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~bash
# Run this command from a directory that contains both your sourc and your build directories
$ docker run --rm dockcross/android-arm64 > ./armv8a
# This creates a file we will use to invoke our container
# Next, set execution permissions
$ chmod +x ./armv8a
# Run CMake
# -B is the relative path to my build directory
# -H is the relative path to my Pulse source directory
$ ./armv8a cmake -DPulse_JAVA_API:BOOL=OFF -B./Builds/pulse-engine-armv8a -H./Pulse/engine -GNinja
# Use ninja to build (provided in the docker)
$ ./armv8a ninja -C./Builds/pulse-engine-armv8a
# The PulseC.so for the target platform will be in the pulse-engine-armv8a/install/bin directory
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#### Magic Leap
Magic Leap provides a Lumin SDK for use in compiling native C++ code for use on the Magic Leap platform.
You will need to download and install this SDK.
In this example we are building on a windows machine, using the Lumin SDK v0.24.1.
Please follow the [Lumin instructions on generating a cmake toolchain file](https://developer.magicleap.com/en-us/learn/guides/sdk-mabu-ref-build-and-link-libraries#build-libraries-with-cmake) needed for cross compiling.
I had to modify the toolchain file, adding '-llog' for protobuf's use of the android log methods, as well as '-g -std=c++11 -Wall -pedantic' to add C++11 support.
Here is a copy of the [modified toolchain file](https://data.kitware.com/api/v1/file/5f29b9489014a6d84e57067a/download)
To generate a Makefile and build, run :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~bash
# Where -H specifies the Pulse source, and -B is the build directory
cmake -DPulse_JAVA_API:BOOL=OFF -DCMAKE_TOOLCHAIN_FILE:FILEPATH=C:/Programming/magicleap.0.24.1.toolchain.cmake -BC:/Programming/Builds/pulse-engine-lumin -HC:/Programming/Pulse/engine -G "Unix Makefiles"
# Run make from within your build directory
N:/Tools/MagicLeap/dev/mlsdk/v0.24.1/tools/mabu/tools/MinGW/bin/mingw32-make.exe
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This will provide a PulseC.so in the build/install/bin that works on the Magic Leap platform!
## Updating Pulse
......
:: Refer to the Running and Testing Section in the ReadMe.md for %1 options
cmake -DTYPE:STRING=%1 -DARG1:STRING=%2 -P run.cmake
\ No newline at end of file
cmake -DTYPE:STRING=%1 -DARG1:STRING=%2 -DARG2:STRING=%3 -P run.cmake
\ No newline at end of file
......@@ -98,9 +98,9 @@ elseif(TYPE STREQUAL "protoc")
-DPulse_PYTHON_API:BOOL=@Pulse_PYTHON_API@
-P "@CMAKE_SOURCE_DIR@/src/schema/GenerateBindings.cmake")
elseif(TYPE STREQUAL "updateBaselines")
execute_process(COMMAND ${CMAKE_COMMAND} --build "@CMAKE_CURRENT_BINARY_DIR@" --target UpdateVerification)
execute_process(COMMAND ${CMAKE_COMMAND} --build "@CMAKE_CURRENT_BINARY_DIR@/data" --target UpdateVerification)
elseif(TYPE STREQUAL "jar")
execute_process(COMMAND ${CMAKE_COMMAND} --build "@CMAKE_CURRENT_BINARY_DIR@" --target PulseJava)
execute_process(COMMAND ${CMAKE_COMMAND} --build "@CMAKE_CURRENT_BINARY_DIR@/src/java" --target PulseJava)
elseif(TYPE STREQUAL "rebase")
# find Git and if available set GIT_HASH variable
find_package(Git QUIET)
......@@ -119,8 +119,25 @@ elseif(TYPE STREQUAL "FullReport")
execute_process(COMMAND "${Java_JAVA_EXECUTABLE}" -classpath "${JAVA_CLASSPATH}" com.kitware.pulse.cdm.testing.SEReportResults)
elseif(TYPE STREQUAL "plotter")
execute_process(COMMAND "${Java_JAVA_EXECUTABLE}" -classpath "${JAVA_CLASSPATH}" com.kitware.pulse.utilities.csv.plots.CSVPlotTool ${ARG1})
elseif(${TYPE} MATCHES "compare")
# If ARG2 is empty, assume ARG1 is a directory with 2 csv files
if(NOT ARG2)
file(GLOB _csv_files "${ARG1}/*.csv")
list(LENGTH _csv_files _num_csv_files)
if(_num_csv_files EQUAL 2)
list(GET _csv_files 0 _csv_0)
list(GET _csv_files 1 _csv_1)
message(STATUS "CSV 0 : ${_csv_0}")
message(STATUS "CSV 1 : ${_csv_1}")
execute_process(COMMAND "${Java_JAVA_EXECUTABLE}" -classpath "${JAVA_CLASSPATH}" com.kitware.pulse.utilities.csv.plots.CSVComparePlotter ${_csv_0} ${_csv_1})
else()
message(FATAL_ERROR "Could not find 2 csv files in provided directory ${ARG1}")
endif()
else()
execute_process(COMMAND "${Java_JAVA_EXECUTABLE}" -classpath "${JAVA_CLASSPATH}" com.kitware.pulse.utilities.csv.plots.CSVComparePlotter ${ARG1} ${ARG2})
endif()
else()
if(${TYPE} MATCHES "Plot")
if(${TYPE} MATCHES "plot")
execute_process(COMMAND "${Java_JAVA_EXECUTABLE}" -classpath "${JAVA_CLASSPATH}" com.kitware.pulse.utilities.csv.plots.PlotDriver ${TYPE}.config)
else()
execute_process(COMMAND "${Java_JAVA_EXECUTABLE}" -classpath "${JAVA_CLASSPATH}" com.kitware.pulse.cdm.testing.SETestDriver ${TYPE}.config)
......
# Refer to the Running and Testing Section in the ReadMe.md for %1 options
cmake -DTYPE:STRING=$1 -P run.cmake
cmake -DTYPE:STRING=$1 -DARG1:STRING=$2 -DARG2:STRING=$3 -P run.cmake
@PACKAGE_INIT@
set(export_config_name "@export_config_name@")
set_and_check(${export_config_name}Targets "${CMAKE_CURRENT_LIST_DIR}/${export_config_name}Targets.cmake")
include(${${export_config_name}Targets})
set(Pulse_ROOT ${PACKAGE_PREFIX_DIR})
if(@Pulse_USING_PROTOBUF_DIR@)
set(protobuf_DIR "@protobuf_DIR@")
find_package(protobuf REQUIRED CONFIG NO_DEFAULT_PATH)
else()
find_package(protobuf QUIET CONFIG NO_DEFAULT_PATH)
if(NOT protobuf_FOUND)
find_package(Protobuf REQUIRED)
endif()
endif()
......@@ -10,8 +10,8 @@ include(${${export_config_name}Targets})
set(Pulse_ROOT ${PACKAGE_PREFIX_DIR})
# Pulse uses protobuf, but only distributes/needs its libraries
if (NOT protobuf::libprotobuf_FOUND)
add_library(protobuf::libprotobuf INTERFACE IMPORTED)
target_link_libraries(protobuf::libprotobuf INTERFACE debug ${PACKAGE_PREFIX_DIR}/lib/@PROTOBUF_LIBRARY_DEBUG@)
target_link_libraries(protobuf::libprotobuf INTERFACE optimized ${PACKAGE_PREFIX_DIR}/lib/@PROTOBUF_LIBRARY_RELEASE@)
endif()
\ No newline at end of file
if (NOT TARGET protobuf::libprotobuf)
add_library(protobuf::libprotobuf INTERFACE IMPORTED)
target_link_libraries(protobuf::libprotobuf INTERFACE debug ${PACKAGE_PREFIX_DIR}/lib/@PROTOBUF_LIBRARY_DEBUG@)
target_link_libraries(protobuf::libprotobuf INTERFACE optimized ${PACKAGE_PREFIX_DIR}/lib/@PROTOBUF_LIBRARY_RELEASE@)
endif()
......@@ -20,6 +20,20 @@ if(MSVC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP${${PROJECT_NAME}_NUM_BUILD_PROCESSES}" CACHE STRING INTERNAL FORCE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP${${PROJECT_NAME}_NUM_BUILD_PROCESSES}" CACHE STRING INTERNAL FORCE)
endif()
#elseif(ANDROID)
# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -llog" CACHE INTERNAL "" FORCE)
# set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -llog" CACHE INTERNAL "" FORCE)
# set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -llog" CACHE INTERNAL "" FORCE)
# set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} -llog" CACHE INTERNAL "" FORCE)
# message(STATUS "Hello ANDROID")
endif()
if(CMAKE_TOOLCHAIN_FILE)
message(STATUS "Passing toolchain file : ${CMAKE_TOOLCHAIN_FILE}")
set(COMPILER CMAKE_TOOLCHAIN_FILE)
else()
set(COMPILER CMAKE_C_COMPILER
CMAKE_CXX_COMPILER)
endif()
mark_as_superbuild(
......@@ -29,12 +43,13 @@ mark_as_superbuild(
CMAKE_INSTALL_PREFIX
#CMAKE_MODULE_PATH # Paths used in include(), find_package()
#CMAKE_PREFIX_PATH # Path prefixes to be searched, in find_xxx functions
CMAKE_C_COMPILER
CMAKE_CXX_COMPILER
${COMPILER}
CMAKE_C_FLAGS
CMAKE_CXX_FLAGS
CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS
CMAKE_CXX_STANDARD
CMAKE_CXX_STANDARD_REQUIRED
THREADS_PREFER_PTHREAD_FLAG
......@@ -85,6 +100,8 @@ ExternalProject_Add( ${PROJECT_NAME}
BINARY_DIR ${CMAKE_BINARY_DIR}/Innerbuild
${COMMON_CMAKE_EP_ARGS}
CMAKE_ARGS
-DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE}
CMAKE_CACHE_ARGS
-D${PROJECT_NAME}_SUPERBUILD:BOOL=OFF
-D${PROJECT_NAME}_JAVA_API:BOOL=${${PROJECT_NAME}_JAVA_API}
-D${PROJECT_NAME}_PYTHON_API:BOOL=${${PROJECT_NAME}_PYTHON_API}
......@@ -104,7 +121,8 @@ if (${PROJECT_NAME}_JAVA_API)
add_dependencies(PulseData Pulse)
add_custom_command(TARGET PulseData POST_BUILD
COMMAND ${CMAKE_COMMAND} -DTYPE:STRING=genData -P run.cmake
WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/bin)
WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/bin
BYPRODUCTS "${CMAKE_INSTALL_PREFIX}/bin/patients/StandardMale.json")
# Don't genStates if in Debug, takes way too long
string(APPEND _genStates
"$<IF:$<CONFIG:Debug>,"
......@@ -114,11 +132,12 @@ if (${PROJECT_NAME}_JAVA_API)
add_custom_command(TARGET PulseData POST_BUILD
COMMAND "${_genStates}"
COMMAND_EXPAND_LISTS
WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/bin)
WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/bin
BYPRODUCTS "${CMAKE_INSTALL_PREFIX}/bin/states/StandardMale@0s.json")
set_target_properties (PulseData PROPERTIES FOLDER ${PROJECT_NAME})
else()
message(WARNING "Without Java Utils, this build will not generate required data files needed for Pulse to execute")
message(WARNING "You will need to get these required data files from another build/source")
message(STATUS "!!! Without Java Utils, this build will not generate required data files needed for Pulse to execute !!!")
message(STATUS "!!! You will need to get these required data files from another build/source !!!")
endif()
if(${PROJECT_NAME}_DOWNLOAD_BASELINES)
......@@ -128,5 +147,5 @@ if(${PROJECT_NAME}_DOWNLOAD_BASELINES)
WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/bin)
set_target_properties (PulseData PROPERTIES FOLDER ${PROJECT_NAME})
else()
message(STATUS "NOT pulling the latest Pulse Baselines!")
message(STATUS "!!! NOT pulling the latest Pulse Baselines !!!")
endif()
......@@ -4,10 +4,10 @@
include(AddExternalProject)
define_external_dirs_ex( Dirent )
add_external_project_ex( Dirent
URL "https://github.com/tronkko/dirent/archive/1.22.zip"
URL_HASH MD5=cf5b4499d163604732f4dc91654056be
URL "https://github.com/tronkko/dirent/archive/1.23.2.zip"
URL_HASH MD5=43514791ab73ef5ac7c490afc7c3bab2
CMAKE_CACHE_ARGS
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
-DDIRENT_BUILD_TESTS:BOOL=OFF
RELATIVE_INCLUDE_PATH ""
DEPENDENCIES ""
#VERBOSE
......
......@@ -6,9 +6,8 @@ define_external_dirs_ex( Eigen3 )
add_external_project_ex( Eigen3
URL "https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz"
URL_HASH MD5=9e30f67e8531477de4117506fe44669b
CMAKE_CACHE_ARGS
-DBUILD_TESTING:BOOL=OFF
-DCMAKE_INSTALL_PREFIX:PATH=${Eigen3_PREFIX}/install
CMAKE_CACHE_ARGS
-DBUILD_TESTING:BOOL=OFF
RELATIVE_INCLUDE_PATH ""
DEPENDENCIES ""
#VERBOSE
......
......@@ -38,5 +38,5 @@ if (NOT USE_SYSTEM_protobuf)
set(protobuf_DIR ${protobuf_PREFIX}/install/lib/cmake/protobuf)
endif()
message(STATUS "protobuf_DIR : ${protobuf_DIR}")
set(protobuf_SRC ${protobuf_PREFIX}/src)
endif()
set(protobuf_SRC ${protobuf_PREFIX}/src)
......@@ -85,13 +85,14 @@ macro(add_external_project_ex extProj)
CMAKE_GENERATOR ${CMAKE_GENERATOR}
CMAKE_GENERATOR_PLATFORM ${CMAKE_GENERATOR_PLATFORM}
CMAKE_GENERATOR_TOOLSET ${CMAKE_GENERATOR_TOOLSET}
CMAKE_GENERATOR_INSTANCE ${CMAKE_GENERATOR_INSTANCE}
)
define_external_dirs_ex( ${extProj} )
#-----------------------------------------------------------------------------
# Add project
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
ExternalProject_add( ${extProj}
PREFIX ${${extProj}_PREFIX}
SOURCE_DIR ${${extProj}_SOURCE_DIR} # from above or parsed argument
......
# External Data
include(ExternalData)
set(ExternalData_URL_TEMPLATES "https://data.kitware.com/api/v1/file/hashsum/%(algo)/%(hash)/download")
# Putting in the same URL to ensure bad connections retry a few times
set(ExternalData_URL_TEMPLATES "https://data.kitware.com/api/v1/file/hashsum/%(algo)/%(hash)/download"
"https://data.kitware.com/api/v1/file/hashsum/%(algo)/%(hash)/download"
"https://data.kitware.com/api/v1/file/hashsum/%(algo)/%(hash)/download")
message(STATUS "Looking for zip shas")
file(GLOB_RECURSE _VERIFICATION_SHA RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.sha512")
......@@ -22,7 +25,7 @@ endforeach()
ExternalData_Add_Target(ExternalData)
set(ExternalData_LINK_CONTENT SHA512)
set(ExternalData_TIMEOUT_ABSOLUTE 300)
set(ExternalData_TIMEOUT_INACTIVITY 60)
set(ExternalData_TIMEOUT_INACTIVITY 150)
set(INC_DOWNLOAD)
if(PULSE_DOWNLOAD_BASELINES)
......
......@@ -136,14 +136,17 @@ FluidCircuit = CDMUnitTest
ThermalCircuit = CDMUnitTest
ElectricalCircuit = CDMUnitTest
CombinedCircuit = CDMUnitTest
InterCircuitComparison = CDMUnitTest
InterCircuitIndividual = CDMUnitTest Results=InterCircuitIndividual1,InterCircuitIndividual2
DynamicallyChangingCircuit = CDMUnitTest
NonZeroReferenceNegative = CDMUnitTest
NonZeroReferencePositive = CDMUnitTest
PolarizedCapacitor = CDMUnitTest
PreChargeComplianceZeroVolume = CDMUnitTest
PreChargeComplianceNonZeroVolume = CDMUnitTest
#BasicBlackBoxComparisonTest = CDMUnitTest
#BasicBlackBoxTest = CDMUnitTest
#SimpleBlackBoxTest = CDMUnitTest
#WindkesselBlackBoxTest = CDMUnitTest
#This test is not flushed out, and that's ok
#CircuitErrorTest = CDMUnitTest
CircuitLockingTest = CDMUnitTestDriver NoCompare Computed=./test_results/unit_tests/cdm/
......
......@@ -32,4 +32,3 @@ Macro EngineUnitTestFull=EngineUnitTestDriver FullPlot Baseline=unit_tests/pulse
Macro ScenarioTest=ScenarioTestDriver FastPlot Baseline=scenarios/ Computed=./test_results/scenarios
patient/BasicStandard.json = ScenarioTest
......@@ -52,6 +52,7 @@ patient/CPRForce.json = ScenarioTest
patient/DyspneaVaried.json = ScenarioTest
patient/EffusionCondition.json = ScenarioTest
patient/EffusionConditionPlus.json = ScenarioTest
patient/HemorrhageClass1Femoral.json = ScenarioTest
patient/HemorrhageClass2Blood.json = ScenarioTest
patient/HemorrhageClass2BrachialArtery.json = ScenarioTest
patient/HemorrhageClass2InternalMultiple.json = ScenarioTest
......@@ -60,13 +61,19 @@ patient/HemorrhageClass2NoFluid.json = ScenarioTest
patient/HemorrhageClass2Saline.json = ScenarioTest
patient/HemorrhageClass3NoFluid.json = ScenarioTest
patient/HemorrhageClass3PackedRBC.json = ScenarioTest
patient/HemorrhageClass4NoFluid.json = ScenarioTest
patient/HemorrhageGroup1.json = ScenarioTest
patient/HemorrhageGroup2.json = ScenarioTest
patient/HemorrhageGroup3.json = ScenarioTest
patient/HemorrhageGroup4.json = ScenarioTest
patient/HemorrhageGroup5.json = ScenarioTest
patient/HemorrhageGroup6.json = ScenarioTest
patient/HemorrhageInternalSeverity.json = ScenarioTest
patient/HemorrhageSeverity1.json = ScenarioTest
patient/HemorrhageSeverityMultipleCompartments.json = ScenarioTest
patient/HemorrhageSeverityToFlowToSeverity.json = ScenarioTest
patient/HemorrhageToShock.json = ScenarioTest
patient/HemorrhageVaryingSeverity.json = ScenarioTest
patient/LobarPneumoniaExacerbation.json = ScenarioTest
patient/LobarPneumoniaModerateBothLungs.json = ScenarioTest
patient/LobarPneumoniaSevereLeftLobe.json = ScenarioTest
......
aee907f81221bf66243954c0329c326e0957441b34b9b7a4a7e397041161747306ce2ac8de52b2fee5e6cbb85c88d3fc22f075e4d91d6cbca5221b0066135689
\ No newline at end of file
a94475d457ebd784e93c80c2537854b05a798bc31359ccbffdfadbbb14f717f80f2043df52735c0c896e00c34cb5dfe833ccfdad65f3dd5ab43d312589c7125f
\ No newline at end of file
dfd6c4f17d68a238a97eef9c046c77e6431023d04d03bce0246c1e2eea882e2ebf73ab0e46cd2e1f31c7b34a7c80014ed3466541bfa78d559c6306706c1cdd76
\ No newline at end of file
aa5c58d9e461d48ac53f26ec010fc0e54cc2938215e97c305d85c1be5c61f26172d0d07a3c513185379317fc4ea0b939094b737f31bb51326e0b16269e36db4d
\ No newline at end of file
ddaa3c3e98f6aba700d31bdbc314f63db1c72c4f5f576ef5a0ee3803ad9e580969af846619eb5f72f8868c5333fc922b2d763cca1746cdfcbff0c6cbd5d4f0d2
\ No newline at end of file
1f03a5e697c054474caa454cf5f94baba5d5df431885ac08415ab3ba10dd2c630ae1db73c2d2621fc4082380cce672b0d4731cd04eea019f25fce86b4a30b1b9
\ No newline at end of file
4e3825860e1add6bee1fe0aaf1c21ae7483b67ceb403ba3fe2815623bd92736ea5592cf412e19e553fae1ea008c37107cc307dc78d69ef584de0b2250fab2459
\ No newline at end of file
17e6c49a7640b21a795f3a23e291e4ef68abf462bcffd355db10909a194ef60e7b71534571a017dc8a1f0b6a55e9ab3010f8c898a109e8a3b66e38e83ff37aa1
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment