# CMake settings cmake_minimum_required(VERSION 3.0.0) set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/macros) # Project name project(RTCTools) # Set platform-dependent output folder if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") if(${CMAKE_BUILD_TYPE} MATCHES "Debug") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin/Debug") else() set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin/Release") endif() set(DESTINATION_DIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}") else() # Visual studio will have its own debug and release configuration set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin") set(DESTINATION_DIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$<$:Debug>$<$:Release>") endif() set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}") # Enable C++ enable_language(CXX) # Use C++11 if available include(set_cxx_norm) set_cxx_norm(CXX_NORM_CXX11 CXX_NORM_FLAGS) add_compile_options("${CXX_NORM_FLAGS}") # Enable position independent code for libraries set(CMAKE_POSITION_INDEPENDENT_CODE TRUE) # Enable OpenMP find_package(OpenMP) if(OPENMP_FOUND) add_compile_options("${OpenMP_CXX_FLAGS}") endif() # Set warning levels if(MSVC) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W3") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /W3") else() set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall") endif() if(MSVC) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /W0") set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /W0") endif() # Optionally enable code coverage report generation option(GENERATE_COVERAGE_REPORT "Generate code coverage report" OFF) if(${GENERATE_COVERAGE_REPORT}) include(CodeCoverage) # Set coverage flags for C++ code only set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_COVERAGE}") setup_target_for_coverage(coverage ${CMAKE_CTEST_COMMAND} coverage) endif() # Add project include directories include_directories("${PROJECT_SOURCE_DIR}/src") include_directories("${PROJECT_SOURCE_DIR}/src/dataBinding") include_directories("${PROJECT_SOURCE_DIR}/src/optimizationProblem") include_directories("${PROJECT_SOURCE_DIR}/src/postprocess") include_directories("${PROJECT_SOURCE_DIR}/src/schematization") include_directories("${PROJECT_SOURCE_DIR}/src/timeseries") include_directories("${PROJECT_SOURCE_DIR}/src/utilities") # Add dependency include directories if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") include_directories("${PROJECT_SOURCE_DIR}/thirdParty/xsd/xsd-4.0.0-i686-windows/libxsd") elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") include_directories("${PROJECT_SOURCE_DIR}/thirdParty/xsd/xsd-4.0.0-x86_64-linux-gnu/libxsd") endif() if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") if(${CMAKE_SIZEOF_VOID_P} MATCHES "8") include_directories("${PROJECT_SOURCE_DIR}/thirdParty/xerces/xerces-c-3.1.1-x86_64-windows-vc-10.0/include") include_directories("${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_64bit/include/coin") include_directories("${PROJECT_SOURCE_DIR}/thirdParty/boost_1_55_0_64bit") link_directories("${PROJECT_SOURCE_DIR}/thirdParty/boost_1_55_0_64bit/lib") link_directories("${PROJECT_SOURCE_DIR}/thirdParty/xerces/xerces-c-3.1.1-x86_64-windows-vc-10.0/lib/") link_directories("${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_64bit/lib/release/") else() include_directories("${PROJECT_SOURCE_DIR}/thirdParty/xerces/xerces-c-3.1.1-x86-windows-vc-10.0/include") include_directories("${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_32bit/include/coin") include_directories("${PROJECT_SOURCE_DIR}/thirdParty/boost_1_55_0_32bit") link_directories("${PROJECT_SOURCE_DIR}/thirdParty/boost_1_55_0_32bit/lib") link_directories("${PROJECT_SOURCE_DIR}/thirdParty/xerces/xerces-c-3.1.1-x86-windows-vc-10.0/lib/") link_directories("${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_32bit/lib/release/") endif() elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(${CMAKE_SIZEOF_VOID_P} MATCHES "8") include_directories("${PROJECT_SOURCE_DIR}/thirdParty/xerces/xerces-c-3.1.1-x86_64-linux-gcc-3.4/include") include_directories("${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_linux64bit/include/coin") link_directories("${PROJECT_SOURCE_DIR}/thirdParty/xerces/xerces-c-3.1.1-x86_64-linux-gcc-3.4/lib/") link_directories("${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_linux64bit/lib/") else() include_directories("${PROJECT_SOURCE_DIR}/thirdParty/xerces/xerces-c-3.1.1-x86-linux-gcc-3.4/include") include_directories("${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_linux32bit/include/coin") link_directories("${PROJECT_SOURCE_DIR}/thirdParty/xerces/xerces-c-3.1.1-x86-linux-gcc-3.4/lib/") link_directories("${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_linux32bit/lib/") endif() find_package(Boost 1.53 REQUIRED) if(${Boost_FOUND}) include_directories("${Boost_INCLUDE_DIRS}") link_directories("${Boost_LIBRARY_DIRS}") endif() elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") find_package(IPOPT REQUIRED) if(${IPOPT_FOUND}) include_directories("${IPOPT_INCLUDE_DIRS}") link_directories("${IPOPT_LIBRARY_DIRS}") endif() find_package(XercesC REQUIRED) if(${XercesC_FOUND}) include_directories("${XercesC_INCLUDE_DIRS}") link_directories("${XercesC_LIBRARY_DIRS}") endif() find_package(Boost 1.53 REQUIRED) if(${Boost_FOUND}) include_directories("${Boost_INCLUDE_DIRS}") link_directories("${Boost_LIBRARY_DIRS}") endif() endif() # Add optional support for SNOPT option(BUILD_SNOPT_SUPPORT "Build SNOPT support" OFF) set(SNOPT_ROOT "${PROJECT_SOURCE_DIR}/../../proprietary/RTCTools/thirdParty/snopt" CACHE STRING "Path to SNOPT installation root (optional)") if(${BUILD_SNOPT_SUPPORT}) if(EXISTS ${SNOPT_ROOT}) include_directories("${SNOPT_ROOT}/interfaces/include") link_directories("${SNOPT_ROOT}/lib") set(HAVE_SNOPT TRUE) add_definitions("-DHAVE_SNOPT") endif() endif() # Add and build libfmi dependency set(FMILIB_BUILD_TESTS OFF CACHE BOOL "Build libfmi tests") set(FMILIB_BUILD_STATIC_LIB OFF CACHE BOOL "Build libfmi static library") add_subdirectory(thirdParty/fmilibrary_2_0_1) include_directories("${FMILibrary_BINARY_DIR}") include_directories("${PROJECT_SOURCE_DIR}/thirdParty/fmilibrary_2_0_1/src/CAPI/include") include_directories("${PROJECT_SOURCE_DIR}/thirdParty/fmilibrary_2_0_1/src/Import/include") include_directories("${PROJECT_SOURCE_DIR}/thirdParty/fmilibrary_2_0_1/src/Util/include") include_directories("${PROJECT_SOURCE_DIR}/thirdParty/fmilibrary_2_0_1/src/XML/include") include_directories("${PROJECT_SOURCE_DIR}/thirdParty/fmilibrary_2_0_1/src/ZIP/include") include_directories("${PROJECT_SOURCE_DIR}/thirdParty/fmilibrary_2_0_1/ThirdParty/FMI/default") add_definitions("-DHAVE_LIBFMI") # Add CppAD dependency include_directories("${PROJECT_SOURCE_DIR}/thirdParty/cppad-20150630") # Add fitpackpp dependency if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") option(REBUILD_FITPACKPP "Rebuild fitpackpp dependency. Requires Fortran compiler." OFF) if(${REBUILD_FITPACKPP}) add_subdirectory(thirdParty/fitpackpp) # Hack to make sure that we can link to ifconsol.lib set(IFORT_INSTALLATION_PATH "C:/Program Files (x86)/Intel/Composer XE" CACHE STRING "Path to Intel FORTRAN compiler installation") enable_language(Fortran) if(${Fortran_COMPILER_NAME} MATCHES "ifort.*") if(${CMAKE_SIZEOF_VOID_P} MATCHES "8") link_directories("${IFORT_INSTALLATION_PATH}/compiler/lib/intel64") else() link_directories("${IFORT_INSTALLATION_PATH}/compiler/lib/ia32") endif() endif() else() if(${CMAKE_SIZEOF_VOID_P} MATCHES "8") link_directories("${PROJECT_SOURCE_DIR}/thirdParty/fitpackpp/x64") else() link_directories("${PROJECT_SOURCE_DIR}/thirdParty/fitpackpp/x86") endif() endif() else() add_subdirectory(thirdParty/fitpackpp) endif() include_directories("${PROJECT_SOURCE_DIR}/thirdParty/fitpackpp") # Add source folder add_subdirectory(src) # Add documentation folder add_subdirectory(doc) # Define RTCTools executable add_executable(RTCTools src/rtcTools.cpp) # Define BMI library add_library(RTCTools_BMI SHARED src/rtcToolsBMI.cpp) # Define OpenMI library add_library(RTCTools_OpenMI SHARED src/rtcToolsOpenMI.cpp) # Link dependencies if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") set(LINK_LIBRARIES RTCTools_static xerces-c_3 IpOptFSS Ipopt-vc10 fitpackpp fmilib_shared) elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") set(LINK_LIBRARIES RTCTools_static xerces-c curl ipopt coinlapack coinmumps coinmetis coinblas dl boost_system boost_date_time boost_filesystem fitpackpp fmilib_shared) elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(LINK_LIBRARIES RTCTools_static xerces-c curl ipopt dl boost_system boost_date_time boost_filesystem fitpackpp fmilib_shared) endif() if(${CMAKE_COMPILER_IS_GNUCXX}) set(LINK_LIBRARIES ${LINK_LIBRARIES} gomp) endif() if(${HAVE_SNOPT}) set(LINK_LIBRARIES ${LINK_LIBRARIES} snopt7 snopt7_cpp) endif() target_link_libraries(RTCTools ${LINK_LIBRARIES}) target_link_libraries(RTCTools_BMI ${LINK_LIBRARIES}) target_link_libraries(RTCTools_OpenMI ${LINK_LIBRARIES}) # Install project files into output folder add_custom_command(TARGET RTCTools POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/xsd/pi_diag.xsd ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/xsd/pi_modelparameters.xsd ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/xsd/pi_run.xsd ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/xsd/pi_sharedtypes.xsd ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/xsd/pi_state.xsd ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/xsd/pi_timeseries.xsd ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/xsd/rtcDataConfig.xsd ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/xsd/rtcObjectiveConfig.xsd ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/xsd/rtcPostprocessingConfig.xsd ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/xsd/rtcRuntimeConfig.xsd ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/xsd/rtcScenarioTreeConfig.xsd ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/xsd/rtcSharedTypes.xsd ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/xsd/rtcStateConfig.xsd ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/xsd/rtcToolsConfig.xsd ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/xsd/treeVector.xsd ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/GPLv2.txt ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/LICENSE.txt ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/release_notes.txt ${DESTINATION_DIR}) # Install library dependencies into output folder if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") if(${CMAKE_SIZEOF_VOID_P} MATCHES "8") add_custom_command(TARGET RTCTools POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/thirdParty/xerces/xerces-c-3.1.1-x86_64-windows-vc-10.0/bin/xerces-c_3_1.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/thirdParty/xerces/xerces-c-3.1.1-x86_64-windows-vc-10.0/bin/xerces-c_3_1D.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_64bit/lib/$<$:debug>$<$:release>/Ipopt-vc10.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_64bit/lib/$<$:debug>$<$:release>/IpOptFSS.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/thirdParty/vcomp/x64/vcomp100.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/thirdParty/msvcr/x64/msvcr100.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/thirdParty/msvcp100/x64/msvcp100.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/thirdParty/ifcoremd/x64/libifcoremd$<$:d>$<$:>.dll ${DESTINATION_DIR}) if(${REBUILD_FITPACKPP}) else() add_custom_command(TARGET RTCTools POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/thirdParty/fitpackpp/x64/fitpackpp.dll ${DESTINATION_DIR}) endif() else() add_custom_command(TARGET RTCTools POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/thirdParty/xerces/xerces-c-3.1.1-x86-windows-vc-10.0/bin/xerces-c_3_1.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/thirdParty/xerces/xerces-c-3.1.1-x86-windows-vc-10.0/bin/xerces-c_3_1D.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_32bit/lib/$<$:debug>$<$:release>/Ipopt-vc10.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_32bit/lib/$<$:debug>$<$:release>/IpOptFSS.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/thirdParty/vcomp/x86/vcomp100$<$:d>.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/thirdParty/msvcr/x86/msvcr100.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/thirdParty/msvcp100/x86/msvcp100.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/thirdParty/ifcoremd/x86/libifcoremd$<$:d>$<$:>.dll ${DESTINATION_DIR}) if(${REBUILD_FITPACKPP}) else() add_custom_command(TARGET RTCTools POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_SOURCE_DIR}/thirdParty/fitpackpp/x86/fitpackpp.dll ${DESTINATION_DIR}) endif() endif() elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(${CMAKE_SIZEOF_VOID_P} MATCHES "8") add_custom_command(TARGET RTCTools POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/thirdParty/xerces/xerces-c-3.1.1-x86_64-linux-gcc-3.4/lib/libxerces-c-3.1.so ${DESTINATION_DIR} COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_linux64bit/lib/libipopt.so.1 ${DESTINATION_DIR} COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_linux64bit/lib/libcoinblas.so.1 ${DESTINATION_DIR} COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_linux64bit/lib/libcoinlapack.so.1 ${DESTINATION_DIR} COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_linux64bit/lib/libcoinmetis.so.1 ${DESTINATION_DIR} COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_linux64bit/lib/libcoinmumps.so.1 ${DESTINATION_DIR}) else() add_custom_command(TARGET RTCTools POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/thirdParty/xerces/xerces-c-3.1.1-x86-linux-gcc-3.4/lib/libxerces-c-3.1.so ${DESTINATION_DIR} COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_linux32bit/lib/libipopt.so.1 ${DESTINATION_DIR} COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_linux32bit/lib/libcoinblas.so.1 ${DESTINATION_DIR} COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_linux32bit/lib/libcoinlapack.so.1 ${DESTINATION_DIR} COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_linux32bit/lib/libcoinmetis.so.1 ${DESTINATION_DIR} COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/thirdParty/ipopt_3_11_7_linux32bit/lib/libcoinmumps.so.1 ${DESTINATION_DIR}) endif() configure_file(src/RTCTools.sh.in src/RTCTools.sh) add_custom_command(TARGET RTCTools POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_BINARY_DIR}/src/RTCTools.sh ${DESTINATION_DIR} #ipopt expects hsl/blas/mumps/lapack/metis libraries to exist. We're using implementations obtained from coin-or.org, and are named #libcoinXXX.so, so we add softlinks so that Ipopt can find the libraries. COMMAND "${CMAKE_COMMAND}" -E create_symlink libcoinblas.so.1 ${DESTINATION_DIR}/libblas.so.3 COMMAND "${CMAKE_COMMAND}" -E create_symlink libcoinlapack.so.1 ${DESTINATION_DIR}/liblapack.so.3 COMMAND "${CMAKE_COMMAND}" -E create_symlink libcoinmetis.so.1 ${DESTINATION_DIR}/libmetis.so) elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") configure_file(src/RTCTools.sh.in src/RTCTools.sh) add_custom_command(TARGET RTCTools POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy ${PROJECT_BINARY_DIR}/src/RTCTools.sh ${DESTINATION_DIR}) endif() # Optionally add OpenMI C# projects option(BUILD_OPENMI_DOTNET_INTERFACE "Build OpenMI .NET interface" OFF) if(${BUILD_OPENMI_DOTNET_INTERFACE}) if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") include_external_msproject(RTCTools.OpenMI.Sdk.Backbone ${PROJECT_SOURCE_DIR}/../RTCToolsOpenMI/thirdParty/Oatc.SDK_1.4.0.0/Oatc/src/csharp/Sdk/Backbone/RTCTools.OpenMI.Sdk.Backbone.csproj TYPE FAE04EC0-301F-11D3-BF4B-00C04F79EFBC PLATFORM AnyCPU) include_external_msproject(RTCTools.OpenMI.Sdk.Buffer ${PROJECT_SOURCE_DIR}/../RTCToolsOpenMI/thirdParty/Oatc.SDK_1.4.0.0/Oatc/src/csharp/Sdk/Buffer/RTCTools.OpenMI.Sdk.Buffer.csproj TYPE FAE04EC0-301F-11D3-BF4B-00C04F79EFBC PLATFORM AnyCPU RTCTools.OpenMI.Sdk.Backbone) include_external_msproject(RTCTools.OpenMI.Sdk.DevelopmentSupport ${PROJECT_SOURCE_DIR}/../RTCToolsOpenMI/thirdParty/Oatc.SDK_1.4.0.0/Oatc/src/csharp/Sdk/DevelopmentSupport/RTCTools.OpenMI.Sdk.DevelopmentSupport.csproj TYPE FAE04EC0-301F-11D3-BF4B-00C04F79EFBC PLATFORM AnyCPU) include_external_msproject(RTCTools.OpenMI.Sdk.Spatial ${PROJECT_SOURCE_DIR}/../RTCToolsOpenMI/thirdParty/Oatc.SDK_1.4.0.0/Oatc/src/csharp/Sdk/Spatial/RTCTools.OpenMI.Sdk.Spatial.csproj TYPE FAE04EC0-301F-11D3-BF4B-00C04F79EFBC PLATFORM AnyCPU RTCTools.OpenMI.Sdk.Backbone) include_external_msproject(RTCTools.OpenMI.Sdk.Wrapper ${PROJECT_SOURCE_DIR}/../RTCToolsOpenMI/thirdParty/Oatc.SDK_1.4.0.0/Oatc/src/csharp/Sdk/Wrapper/RTCTools.OpenMI.Sdk.Wrapper.csproj TYPE FAE04EC0-301F-11D3-BF4B-00C04F79EFBC PLATFORM AnyCPU RTCTools.OpenMI.Sdk.Backbone RTCTools.OpenMI.Sdk.DevelopmentSupport RTCTools.OpenMI.Sdk.Spatial RTCTools.OpenMI.Sdk.Buffer) include_external_msproject(Deltares.RTCTools.Net ${PROJECT_SOURCE_DIR}/../RTCToolsOpenMI/src/Deltares.RtcTools.Net/Deltares.RtcTools.Net.csproj TYPE FAE04EC0-301F-11D3-BF4B-00C04F79EFBC PLATFORM AnyCPU RTCTools.OpenMI.Sdk.Backbone RTCTools.OpenMI.Sdk.Buffer RTCTools.OpenMI.Sdk.DevelopmentSupport RTCTools.OpenMI.Sdk.Spatial RTCTools.OpenMI.Sdk.Wrapper) include_external_msproject(Deltares.RTCToolsWrapper ${PROJECT_SOURCE_DIR}/../RTCToolsOpenMI/src/Deltares.RtcToolsWrapper.csproj TYPE FAE04EC0-301F-11D3-BF4B-00C04F79EFBC PLATFORM AnyCPU Deltares.RTCTools.Net) add_dependencies(RTCTools Deltares.RTCToolsWrapper) add_custom_command(TARGET RTCTools POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy "${PROJECT_SOURCE_DIR}/../RTCToolsOpenMI/thirdParty/Oatc.SDK_1.4.0.0/OpenMI.Standard/src/csharp/bin/OpenMI.Standard.dll" ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy "${PROJECT_SOURCE_DIR}/../RTCToolsOpenMI/thirdParty/Oatc.SDK_1.4.0.0/Oatc/src/csharp/Sdk/Backbone/obj/$<$:Debug>$<$:Release>/RTCTools.OpenMI.Sdk.Backbone.dll" ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy "${PROJECT_SOURCE_DIR}/../RTCToolsOpenMI/thirdParty/Oatc.SDK_1.4.0.0/Oatc/src/csharp/Sdk/Buffer/obj/$<$:Debug>$<$:Release>/RTCTools.OpenMI.Sdk.Buffer.dll" ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy "${PROJECT_SOURCE_DIR}/../RTCToolsOpenMI/thirdParty/Oatc.SDK_1.4.0.0/Oatc/src/csharp/Sdk/DevelopmentSupport/obj/$<$:Debug>$<$:Release>/RTCTools.OpenMI.Sdk.DevelopmentSupport.dll" ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy "${PROJECT_SOURCE_DIR}/../RTCToolsOpenMI/thirdParty/Oatc.SDK_1.4.0.0/Oatc/src/csharp/Sdk/Spatial/obj/$<$:Debug>$<$:Release>/RTCTools.OpenMI.Sdk.Spatial.dll" ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy "${PROJECT_SOURCE_DIR}/../RTCToolsOpenMI/thirdParty/Oatc.SDK_1.4.0.0/Oatc/src/csharp/Sdk/Wrapper/obj/$<$:Debug>$<$:Release>/RTCTools.OpenMI.Sdk.Wrapper.dll" ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy "${PROJECT_SOURCE_DIR}/../RTCToolsOpenMI/src/Deltares.RtcTools.Net/obj/$<$:Debug>$<$:Release>/Deltares.RtcTools.Net.dll" ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy "${PROJECT_SOURCE_DIR}/../RTCToolsOpenMI/src/obj/$<$:Debug>$<$:Release>/Deltares.RtcToolsWrapper.dll" ${DESTINATION_DIR}) endif() endif() # Add optional support for MATLAB module option(BUILD_MATLAB_MODULE "Build MATLAB module" OFF) # Add optional support for proprietary repository set(PROPRIETARY_REPOSITORY "${PROJECT_SOURCE_DIR}/../../proprietary" CACHE STRING "Path to proprietary Deltares repository (optional)") if(EXISTS ${PROPRIETARY_REPOSITORY}) # Install HSL solvers from proprietary repository if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") if(${CMAKE_SIZEOF_VOID_P} MATCHES "8") add_custom_command(TARGET RTCTools POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win64-ifort-mkl-2014.01.10/libhsl.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win64-ifort-mkl-2014.01.10/libifcoremd.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win64-ifort-mkl-2014.01.10/libiomp5md.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win64-ifort-mkl-2014.01.10/libmetis.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win64-ifort-mkl-2014.01.10/libmmd.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win64-ifort-mkl-2014.01.10/mkl_core.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win64-ifort-mkl-2014.01.10/mkl_def.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win64-ifort-mkl-2014.01.10/mkl_sequential.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win64-ifort-mkl-2014.01.10/msvcr120.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win64-ifort-mkl-2014.01.10/svml_dispmd.dll ${DESTINATION_DIR}) else() add_custom_command(TARGET RTCTools POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win32-ifort-mkl-2014.01.10/libhsl.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win32-ifort-mkl-2014.01.10/libifcoremd.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win32-ifort-mkl-2014.01.10/libiomp5md.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win32-ifort-mkl-2014.01.10/libmetis.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win32-ifort-mkl-2014.01.10/libmmd.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win32-ifort-mkl-2014.01.10/mkl_avx.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win32-ifort-mkl-2014.01.10/mkl_core.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win32-ifort-mkl-2014.01.10/mkl_p4.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win32-ifort-mkl-2014.01.10/mkl_sequential.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win32-ifort-mkl-2014.01.10/msvcr120.dll ${DESTINATION_DIR} COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-win32-ifort-mkl-2014.01.10/svml_dispmd.dll ${DESTINATION_DIR}) endif() elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(${CMAKE_SIZEOF_VOID_P} MATCHES "8") add_custom_command(TARGET RTCTools POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-linux64-2014.01.10/libcoinhsl.so.0.0.0 ${DESTINATION_DIR}/libhsl.so) else() add_custom_command(TARGET RTCTools POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-linux32-2014.01.10/libcoinhsl.so.0.0.0 ${DESTINATION_DIR}/libhsl.so) endif() elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") add_custom_command(TARGET RTCTools POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy ${PROPRIETARY_REPOSITORY}/RTCTools/thirdParty/coinhsl-darwin-2014.01.10/libcoinhsl.dylib ${DESTINATION_DIR}/libhsl.dylib) endif() # Add tests from proprietary repository enable_testing() add_subdirectory(${PROPRIETARY_REPOSITORY}/RTCTools/test proprietary-test) # Add matlab module, if requested if(${BUILD_MATLAB_MODULE}) add_subdirectory(${PROPRIETARY_REPOSITORY}/RTCTools/src proprietary-src) endif() # This is a proprietary build add_definitions("-DPROPRIETARY") endif()