Skip to content

Commit

Permalink
Fixing dependency issues for CVODE C FMUs (#12045)
Browse files Browse the repository at this point in the history
* Copy CVODE runtime dependnecies
* Forcing static linking of CVODE in Windows FMUs
  • Loading branch information
AnHeuermann committed Mar 1, 2024
1 parent 48b7b4b commit 2e82712
Showing 1 changed file with 28 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -145,17 +145,38 @@ endif()
@FMU_ADDITIONAL_LIBS@

if(${NEED_CVODE})
# Force static compilation on Windows because DLLs suck
if(WIN32)
set(CMAKE_FIND_LIBRARY_SUFFIXES .a .lib)
target_compile_definitions(${FMU_NAME} PRIVATE LINK_SUNDIALS_STATIC)
endif()

message(STATUS "CVODE_DIRECTORY: ${CVODE_DIRECTORY}")
find_library(SUNDIALS_CVODE_LIBRARY sundials_cvode
PATHS ${CVODE_DIRECTORY}
NO_DEFAULT_PATH)
find_library(SUNDIALS_NVSERIAL_LIBRARY sundials_nvecserial
NO_DEFAULT_PATH
NO_SYSTEM_ENVIRONMENT_PATH
REQUIRED)
if(NOT SUNDIALS_CVODE_LIBRARY)
message(FATAL_ERROR "Couldn't find library sundials_cvode in ${CVODE_DIRECTORY}")
endif()
message(STATUS "SUNDIALS_CVODE_LIBRARY: ${SUNDIALS_CVODE_LIBRARY}")

find_library(SUNDIALS_NVECSERIAL_LIBRARY sundials_nvecserial
PATHS ${CVODE_DIRECTORY}
NO_DEFAULT_PATH)
target_link_libraries(${FMU_NAME} PRIVATE ${SUNDIALS_CVODE_LIBRARY} ${SUNDIALS_NVSERIAL_LIBRARY})
NO_DEFAULT_PATH
NO_SYSTEM_ENVIRONMENT_PATH
REQUIRED)
if(NOT SUNDIALS_NVECSERIAL_LIBRARY)
message(FATAL_ERROR "Couldn't find library sundials_nvecserial in ${CVODE_DIRECTORY}")
endif()
message(STATUS "SUNDIALS_NVECSERIAL_LIBRARY: ${SUNDIALS_NVECSERIAL_LIBRARY}")

target_link_libraries(${FMU_NAME} PRIVATE ${SUNDIALS_NVECSERIAL_LIBRARY})
target_link_libraries(${FMU_NAME} PRIVATE ${SUNDIALS_CVODE_LIBRARY})
target_include_directories(${FMU_NAME} PRIVATE sundials)
set(WITH_SUNDIALS ";WITH_SUNDIALS")
message(STATUS "CVODE: ${SUNDIALS_CVODE_LIBRARY} ${SUNDIALS_NVSERIAL_LIBRARY}")
message(STATUS "CVODE: ${SUNDIALS_NVECSERIAL_LIBRARY} ${SUNDIALS_CVODE_LIBRARY}")
else()
message(STATUS "CVODE: Not linked")
endif()
Expand All @@ -180,15 +201,15 @@ endif()
if(RUNTIME_DEPENDENCIES_LEVEL STREQUAL "all")
install(TARGETS ${FMU_NAME}
RUNTIME_DEPENDENCIES
DIRECTORIES ${EXTERNAL_LIBDIRECTORIES}
DIRECTORIES ${EXTERNAL_LIBDIRECTORIES} ${CVODE_DIRECTORY}
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR})
elseif(RUNTIME_DEPENDENCIES_LEVEL STREQUAL "modelica")
install(TARGETS ${FMU_NAME}
RUNTIME_DEPENDENCIES
DIRECTORIES ${EXTERNAL_LIBDIRECTORIES}
DIRECTORIES ${EXTERNAL_LIBDIRECTORIES} ${CVODE_DIRECTORY}
PRE_EXCLUDE_REGEXES "api-ms-" "ext-ms-"
POST_EXCLUDE_REGEXES "^\\/lib.*" "^\\/usr\\/lib.*" "^\\/usr\\/local\\/lib.*" ".*system32/.*\\.dll"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
Expand Down

0 comments on commit 2e82712

Please sign in to comment.