Skip to content
Snippets Groups Projects

Set rpath for openscenario api libraries and fix fmilibrary patch

Merged Raghunandan Netrapalli Madhusudhan requested to merge 264-fix-rpath into develop
All threads resolved!
Files
8
From cbb2cbf313c2f9e3e4f8c9e7cf543a2b3ed92aaa Mon Sep 17 00:00:00 2001
From: Raghunandan Netrapalli Madhusudhan <raghunandan.madhusudhan@in-tech.com>
Date: Mon, 2 Oct 2023 08:01:45 +0200
Subject: [PATCH] cross-compilation-compatible
---
CMakeLists.txt | 12 ++++++++++--
Config.cmake/fmixml.cmake | 4 ++++
Config.cmake/jmutil.cmake | 6 +++++-
src/Import/src/FMI1/fmi1_import_capi.c | 10 ----------
src/Import/src/FMI2/fmi2_import_capi.c | 10 ----------
src/Util/include/JM/jm_portability.h | 2 ++
6 files changed, 21 insertions(+), 23 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f7372bf..abffee2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -264,12 +264,20 @@ if(FMILIB_BUILD_STATIC_LIB)
include(mergestaticlibs)
if(WIN32)
merge_static_libs(fmilib ${FMILIB_SUBLIBS})
- target_link_libraries(fmilib Shlwapi)
+ if(MSYS)
+ target_link_libraries(jmutils Shlwapi)
+ else()
+ target_link_libraries(jmutils shlwapi)
+ endif()
foreach(CONFIG_TYPE ${CMAKE_CONFIGURATION_TYPES})
set(flags "")
string(TOUPPER "STATIC_LIBRARY_FLAGS_${CONFIG_TYPE}" PROPNAME)
get_target_property(flags fmilib ${PROPNAME})
- set_target_properties(fmilib PROPERTIES ${PROPNAME} "${flags} Shlwapi.lib")
+ if(MSYS)
+ set_target_properties(fmilib PROPERTIES ${PROPNAME} "${flags} Shlwapi.lib")
+ else()
+ set_target_properties(fmilib PROPERTIES ${PROPNAME} "${flags} shlwapi.lib")
+ endif()
endforeach()
else()
merge_static_libs(fmilib ${FMILIB_SUBLIBS} )
diff --git a/Config.cmake/fmixml.cmake b/Config.cmake/fmixml.cmake
index 03acb3e..1b45c1d 100644
--- a/Config.cmake/fmixml.cmake
+++ b/Config.cmake/fmixml.cmake
@@ -159,6 +159,10 @@ set(EXPAT_SETTINGS
-DCMAKE_MODULE_LINKER_FLAGS:STRING=${CMAKE_MODULE_LINKER_FLAGS}
-DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_SHARED_LINKER_FLAGS}
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/ExpatEx/install
+ -DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER}
+ -DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
+ -DCMAKE_SYSTEM_NAME:STRING=${CMAKE_SYSTEM_NAME}
+ -DCMAKE_SYSTEM_VERSION:STRING=${CMAKE_SYSTEM_VERSION}
)
ExternalProject_Add(
diff --git a/Config.cmake/jmutil.cmake b/Config.cmake/jmutil.cmake
index 0cce2f7..23f12d1 100644
--- a/Config.cmake/jmutil.cmake
+++ b/Config.cmake/jmutil.cmake
@@ -67,7 +67,11 @@ if(UNIX)
target_link_libraries(jmutils dl)
endif(UNIX)
if(WIN32)
- target_link_libraries(jmutils Shlwapi)
+ if(MSYS)
+ target_link_libraries(jmutils Shlwapi)
+ else()
+ target_link_libraries(jmutils shlwapi)
+ endif()
endif(WIN32)
endif(NOT JMUTILDIR)
diff --git a/src/Import/src/FMI1/fmi1_import_capi.c b/src/Import/src/FMI1/fmi1_import_capi.c
index 842c998..cd1f57b 100644
--- a/src/Import/src/FMI1/fmi1_import_capi.c
+++ b/src/Import/src/FMI1/fmi1_import_capi.c
@@ -67,18 +67,8 @@ jm_status_enu_t fmi1_import_create_dllfmu(fmi1_import_t* fmu, fmi1_callback_func
return jm_status_error;
}
- if(jm_portability_set_current_working_directory(dllDirPath) != jm_status_success) {
- jm_log_fatal(fmu->callbacks, module, "Could not change to the DLL directory %s", dllDirPath);
- if(ENOENT == errno)
- jm_log_fatal(fmu->callbacks, module, "The FMU contains no binary for this platform.");
- else
- jm_log_fatal(fmu->callbacks, module, "System error: %s", strerror(errno));
- }
- else {
/* Allocate memory for the C-API struct */
fmu -> capi = fmi1_capi_create_dllfmu(fmu->callbacks, dllFileName, modelIdentifier, callBackFunctions, standard);
- }
-
/* Load the DLL handle */
if (fmu -> capi) {
diff --git a/src/Import/src/FMI2/fmi2_import_capi.c b/src/Import/src/FMI2/fmi2_import_capi.c
index e794775..a82e4eb 100644
--- a/src/Import/src/FMI2/fmi2_import_capi.c
+++ b/src/Import/src/FMI2/fmi2_import_capi.c
@@ -88,18 +88,8 @@ jm_status_enu_t fmi2_import_create_dllfmu(fmi2_import_t* fmu, fmi2_fmu_kind_enu_
callBackFunctions = &defaultCallbacks;
}
- if(jm_portability_set_current_working_directory(dllDirPath) != jm_status_success) {
- jm_log_fatal(fmu->callbacks, module, "Could not change to the DLL directory %s", dllDirPath);
- if(ENOENT == errno)
- jm_log_fatal(fmu->callbacks, module, "The FMU contains no binary for this platform.");
- else
- jm_log_fatal(fmu->callbacks, module, "System error: %s", strerror(errno));
- }
- else {
/* Allocate memory for the C-API struct */
fmu -> capi = fmi2_capi_create_dllfmu(fmu->callbacks, dllFileName, modelIdentifier, callBackFunctions, fmuKind);
- }
-
/* Load the DLL handle */
if (fmu -> capi) {
diff --git a/src/Util/include/JM/jm_portability.h b/src/Util/include/JM/jm_portability.h
index 82e472a..3e50603 100644
--- a/src/Util/include/JM/jm_portability.h
+++ b/src/Util/include/JM/jm_portability.h
@@ -65,6 +65,7 @@ jm_status_enu_t jm_portability_get_current_working_directory(char* buffer, size_
jm_status_enu_t jm_portability_set_current_working_directory(const char* cwd);
/** \brief Get system-wide temporary directory */
+FMILIB_EXPORT
const char* jm_get_system_temp_dir();
/**
@@ -118,6 +119,7 @@ jm_status_enu_t jm_mkdir(jm_callbacks* cb, const char* dir);
/**
\brief Remove directory and all it contents.
*/
+FMILIB_EXPORT
jm_status_enu_t jm_rmdir(jm_callbacks* cb, const char* dir);
/**
--
2.34.1
Loading