Skip to content

Commit

Permalink
wip object targets
Browse files Browse the repository at this point in the history
  • Loading branch information
markaren committed Jun 30, 2023
1 parent 2d7f8b0 commit 2f06fae
Show file tree
Hide file tree
Showing 43 changed files with 266 additions and 268 deletions.
147 changes: 3 additions & 144 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,146 +1,5 @@

add_subdirectory(util)
add_subdirectory(ecos)
add_subdirectory(proxyfmu)

set(publicHeaders

"ecos/connection.hpp"
"ecos/lib_info.hpp"
"ecos/model.hpp"
"ecos/model_instance.hpp"
"ecos/model_resolver.hpp"
"ecos/property.hpp"
"ecos/scalar.hpp"
"ecos/scenario.hpp"
"ecos/scenario_loader.hpp"
"ecos/simulation.hpp"
"ecos/simulation_runner.hpp"
"ecos/variable_identifier.hpp"

"ecos/algorithm/algorithm.hpp"
"ecos/algorithm/fixed_step_algorithm.hpp"

"ecos/listeners/simulation_listener.hpp"
"ecos/listeners/csv_writer.hpp"

"ecos/logger/logger.hpp"

"ecos/structure/simulation_structure.hpp"

"ssp/ssp_parser.hpp"

)

set(publicHeadersFull)
foreach (header IN LISTS commonPublicHeaders)
list(APPEND commonPublicHeadersFull "${PROJECT_SOURCE_DIR}/include/${header}")
endforeach ()

set(privateHeaders

"ecos/fmi/fmi_model.hpp"
"ecos/fmi/fmi_model_instance.hpp"
"ecos/fmi/fmi_model_sub_resolver.hpp"
"ecos/fmi/proxy/proxy_fmu.hpp"
"ecos/fmi/proxy/proxy_slave.hpp"
"ecos/fmi/proxy/proxy_model.hpp"
"ecos/fmi/proxy/proxy_model_sub_resolver.hpp"

"ecos/fmi/fmu.hpp"
"ecos/fmi/fmi1/fmi1_fmu.hpp"
"ecos/fmi/fmi1/fmi1_slave.hpp"
"ecos/fmi/fmi1/fmi1_model_description.hpp"
"ecos/fmi/fmi2/fmi2_fmu.hpp"
"ecos/fmi/fmi2/fmi2_slave.hpp"
"ecos/fmi/fmi2/fmi2_model_description.hpp"

"ecos/ssp/ssp.hpp"

"ecos/util/temp_dir.hpp"
"ecos/util/unzipper.hpp"
"ecos/util/uuid.hpp"

)

set(sources

"ecos/logger.cpp"
"ecos/model_resolver.cpp"
"ecos/simulation.cpp"
"ecos/simulation_runner.cpp"

"ecos/scenario/scenario.cpp"
"ecos/scenario/scenario_loader_xml.cpp"

"ecos/algorithm/fixed_step_algorithm.cpp"

"ecos/fmi/fmu.cpp"
"ecos/fmi/fmi1/fmi1_fmu.cpp"
"ecos/fmi/fmi1/fmi1_slave.cpp"
"ecos/fmi/fmi1/fmi1_model_description.cpp"
"ecos/fmi/fmi2/fmi2_fmu.cpp"
"ecos/fmi/fmi2/fmi2_slave.cpp"
"ecos/fmi/fmi2/fmi2_model_description.cpp"
"ecos/fmi/fmi_model_sub_resolver.cpp"

"ecos/fmi/proxy/proxy_model_sub_resolver.cpp"
"ecos/fmi/proxy/proxy_fmu.cpp"
"ecos/fmi/proxy/proxy_slave.cpp"

"ecos/listeners/csv_writer.cpp"
"ecos/listeners/simulation_listener.cpp"

"ecos/ssp/ssp.cpp"
"ecos/ssp/ssp_loader.cpp"

"ecos/structure/simulation_structure.cpp"

"ecos/util/temp_dir.cpp"
"ecos/util/unzipper.cpp"
"ecos/util/uuid.cpp"

)

# Generate sources from .in files
set(generatedFiles "${generatedSourcesDir}/ecos/lib_info.cpp")
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/ecos/lib_info.cpp.in"
"${generatedFiles}"
@ONLY
)

add_library(libecos ${publicHeadersFull} ${publicHeadersFull} ${privateHeaders} ${sources} ${generatedFiles} "$<TARGET_OBJECTS:proxyfmu-service>")
set_property(TARGET libecos PROPERTY POSITION_INDEPENDENT_CODE ON)
target_compile_features(libecos PUBLIC "cxx_std_17")
target_include_directories(libecos
PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
PRIVATE
"${generatedSourcesDir}"
"${SUBPROCESS_INCLUDE_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}"
)
target_link_libraries(libecos
PUBLIC
fmt::fmt
PRIVATE
libzip::zip
spdlog::spdlog
thrift::thrift
pugixml::pugixml
unofficial::fmilib::fmilib
)
if (UNIX)
target_link_libraries(libecos INTERFACE stdc++fs tbb)
endif ()

if (ECOS_BUILD_CLIB)
add_library(libecosc SHARED "${CMAKE_CURRENT_SOURCE_DIR}/ecos/ecos.cpp")
set_property(TARGET libecosc PROPERTY POSITION_INDEPENDENT_CODE ON)
target_link_libraries(libecosc
PUBLIC
libecos)
endif ()

# Make sure executable is up to date
#add_dependencies(libecos proxyfmu)
add_subdirectory(fmilibcpp)
111 changes: 111 additions & 0 deletions src/ecos/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@

set(publicHeaders

"connection.hpp"
"lib_info.hpp"
"model.hpp"
"model_instance.hpp"
"model_resolver.hpp"
"property.hpp"
"scalar.hpp"
"scenario.hpp"
"scenario_loader.hpp"
"simulation.hpp"
"simulation_runner.hpp"
"variable_identifier.hpp"

"algorithm/algorithm.hpp"
"algorithm/fixed_step_algorithm.hpp"

"listeners/simulation_listener.hpp"
"listeners/csv_writer.hpp"

"logger/logger.hpp"

"structure/simulation_structure.hpp"

"ssp/ssp_loader.hpp"

)

set(publicHeadersFull)
foreach (header IN LISTS commonPublicHeaders)
list(APPEND commonPublicHeadersFull "${PROJECT_SOURCE_DIR}/include/ecos/${header}")
endforeach ()

set(privateHeaders

"fmi/fmi_model.hpp"
"fmi/fmi_model_instance.hpp"
"fmi/fmi_model_sub_resolver.hpp"

"fmi/proxy/proxy_model.hpp"
"fmi/proxy/proxy_model_sub_resolver.hpp"

"ssp/ssp.hpp"

)

set(sources

"model_resolver.cpp"
"simulation.cpp"
"simulation_runner.cpp"

"scenario/scenario.cpp"
"scenario/scenario_loader_xml.cpp"

"algorithm/fixed_step_algorithm.cpp"

"fmi/fmi_model_sub_resolver.cpp"

"fmi/proxy/proxy_model_sub_resolver.cpp"

"listeners/csv_writer.cpp"
"listeners/simulation_listener.cpp"

"ssp/ssp.cpp"
"ssp/ssp_loader.cpp"

"structure/simulation_structure.cpp"

)

# Generate sources from .in files
set(generatedFiles "${generatedSourcesDir}/ecos/lib_info.cpp")
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/lib_info.cpp.in"
"${generatedFiles}"
@ONLY
)

add_library(libecos ${publicHeadersFull} ${privateHeaders} ${sources} ${generatedFiles} "$<TARGET_OBJECTS:proxyfmu-client>")
set_property(TARGET libecos PROPERTY POSITION_INDEPENDENT_CODE ON)
target_compile_features(libecos PUBLIC "cxx_std_17")
target_include_directories(libecos
PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../../include>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
PRIVATE
"${generatedSourcesDir}"
"${SUBPROCESS_INCLUDE_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}/.."
)
target_link_libraries(libecos
PRIVATE
pugixml::pugixml
)
if (UNIX)
target_link_libraries(libecos INTERFACE stdc++fs tbb)
endif ()

if (ECOS_BUILD_CLIB)
add_library(libecosc SHARED "${CMAKE_CURRENT_SOURCE_DIR}/ecos.cpp")
set_property(TARGET libecosc PROPERTY POSITION_INDEPENDENT_CODE ON)
target_link_libraries(libecosc
PUBLIC
libecos)
endif ()

# Make sure executable is up to date
#add_dependencies(libecos proxyfmu)
8 changes: 4 additions & 4 deletions src/ecos/fmi/fmi_model.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#define ECOS_FMI_MODEL_HPP

#include "fmi_model_instance.hpp"
#include "fmu.hpp"
#include "fmilibcpp/fmu.hpp"

#include "ecos/model.hpp"

Expand All @@ -17,10 +17,10 @@ class fmi_model : public model

public:
explicit fmi_model(const std::filesystem::path& fmuPath)
: fmu_(fmi::loadFmu(fmuPath))
: fmu_(fmilibcpp::loadFmu(fmuPath))
{ }

[[nodiscard]] fmi::model_description get_model_description() const
[[nodiscard]] fmilibcpp::model_description get_model_description() const
{
return fmu_->get_model_description();
}
Expand All @@ -31,7 +31,7 @@ class fmi_model : public model
}

private:
std::unique_ptr<fmi::fmu> fmu_;
std::unique_ptr<fmilibcpp::fmu> fmu_;
};

} // namespace ecos
Expand Down
14 changes: 7 additions & 7 deletions src/ecos/fmi/fmi_model_instance.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

#include "ecos/model_instance.hpp"

#include "buffered_slave.hpp"
#include "fmilibcpp/buffered_slave.hpp"

namespace ecos
{
Expand All @@ -13,9 +13,9 @@ class fmi_model_instance : public model_instance
{

public:
explicit fmi_model_instance(std::unique_ptr<fmi::slave> slave, std::optional<double> stepSizeHint)
fmi_model_instance(std::unique_ptr<fmilibcpp::slave> slave, std::optional<double> stepSizeHint)
: model_instance(slave->instanceName, stepSizeHint)
, slave_(std::make_unique<fmi::buffered_slave>(std::move(slave)))
, slave_(std::make_unique<fmilibcpp::buffered_slave>(std::move(slave)))
{

const auto name = slave_->instanceName;
Expand Down Expand Up @@ -118,17 +118,17 @@ class fmi_model_instance : public model_instance
}

private:
std::vector<fmi::value_ref> vrBuf = std::vector<fmi::value_ref>(1);
std::vector<fmilibcpp::value_ref> vrBuf = std::vector<fmilibcpp::value_ref>(1);
std::vector<double> rBuf = std::vector<double>(1);
std::vector<int> iBuf = std::vector<int>(1);
std::vector<bool> bBuf = std::vector<bool>(1);
std::vector<std::string> sBuf = std::vector<std::string>(1);
std::unique_ptr<fmi::buffered_slave> slave_;
std::unique_ptr<fmilibcpp::buffered_slave> slave_;

struct prop_lister : property_listener
{

explicit prop_lister(fmi::buffered_slave& slave)
explicit prop_lister(fmilibcpp::buffered_slave& slave)
: slave_(slave)
{ }

Expand All @@ -142,7 +142,7 @@ class fmi_model_instance : public model_instance
}

private:
fmi::buffered_slave& slave_;
fmilibcpp::buffered_slave& slave_;
};
};

Expand Down
2 changes: 1 addition & 1 deletion src/ecos/fmi/proxy/proxy_model.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#ifndef ECOS_PROXY_MODEL_HPP
#define ECOS_PROXY_MODEL_HPP

#include "proxy_fmu.hpp"
#include "proxyfmu/proxy_fmu.hpp"

#include "ecos/fmi/fmi_model_instance.hpp"
#include "ecos/model.hpp"
Expand Down
4 changes: 2 additions & 2 deletions src/ecos/ssp/ssp.cpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@

#include "ssp.hpp"

#include "ecos/util/temp_dir.hpp"
#include "ecos/util/unzipper.hpp"
#include "util/temp_dir.hpp"
#include "util/unzipper.hpp"

#include <pugixml.hpp>

Expand Down
2 changes: 1 addition & 1 deletion src/ecos/ssp/ssp.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#ifndef SSP_SSP_HPP
#define SSP_SSP_HPP

#include "ecos/util/temp_dir.hpp"
#include "util/temp_dir.hpp"

#include <map>
#include <memory>
Expand Down
16 changes: 16 additions & 0 deletions src/fmilibcpp/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@

set(sources

"fmu.cpp"
"fmi1/fmi1_fmu.cpp"
"fmi1/fmi1_slave.cpp"
"fmi1/fmi1_model_description.cpp"
"fmi2/fmi2_fmu.cpp"
"fmi2/fmi2_slave.cpp"
"fmi2/fmi2_model_description.cpp"

)

add_library(fmilibcpp OBJECT ${sources} "$<TARGET_OBJECTS:ecos-utils>")
target_link_libraries(fmilibcpp PRIVATE unofficial::fmilib::fmilib)
target_include_directories(fmilibcpp PRIVATE "${PROJECT_SOURCE_DIR}/include" "${PROJECT_SOURCE_DIR}/src")
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
#include <unordered_map>
#include <utility>

namespace ecos::fmi
namespace fmilibcpp
{

class buffered_slave : public slave
Expand Down
Loading

0 comments on commit 2f06fae

Please sign in to comment.