From 7a7da82882a00229fdb78908a27d56a181999897 Mon Sep 17 00:00:00 2001 From: Gautier Bureau Date: Wed, 7 Apr 2021 15:02:30 +0200 Subject: [PATCH] Corrections after review of handle of static/shared compilation. Signed-off-by: Gautier Bureau --- CMakeLists.txt | 41 +++++++-------------- README.md | 4 +- examples/CMakeLists.txt | 4 +- examples/example1/CMakeLists.txt | 2 +- extensions/entsoe/CMakeLists.txt | 17 ++++----- extensions/entsoe/test/entsoe.cpp | 33 ++++++++++++++++- extensions/iidm/CMakeLists.txt | 16 ++++---- extensions/iidm/test/iidm.cpp | 36 +++++++++++++++++- extensions/sld/CMakeLists.txt | 16 ++++---- extensions/sld/test/sld.cpp | 29 ++++++++++++++- test/iidm/CMakeLists.txt | 6 ++- test/iidm/converter/xml/CMakeLists.txt | 51 +++++++++++++++----------- test/iidm/converter/xml/xiidm.cpp | 35 +++++++++++++++++- test/logging/CMakeLists.txt | 6 ++- test/math/CMakeLists.txt | 6 ++- test/network/CMakeLists.txt | 6 ++- test/stdcxx/CMakeLists.txt | 6 ++- test/xml/CMakeLists.txt | 6 ++- tools/benchmark/CMakeLists.txt | 2 +- 19 files changed, 223 insertions(+), 99 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 889a6becc..664cffb7c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,13 +4,14 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # -cmake_minimum_required(VERSION 3.12 FATAL_ERROR) +cmake_minimum_required(VERSION 3.15 FATAL_ERROR) -if(${CMAKE_VERSION} VERSION_GREATER "3.15.0") - if(POLICY CMP0091) +if (${CMAKE_VERSION} VERSION_GREATER "3.15.0") + # Policy to activate a way to choose MSVC runtime. https://cmake.org/cmake/help/v3.15/policy/CMP0091.html + if (POLICY CMP0091) cmake_policy(SET CMP0091 NEW) - endif() -endif() + endif () +endif () project(powsybl-iidm4cpp) @@ -31,23 +32,18 @@ option(BUILD_EXAMPLES "Enable/Disable the compilation of the examples." OFF) option(BUILD_TESTS "Enable/Disable the compilation of unit tests." ON) option(BUILD_TOOLS "Enable/Disable the compilation of tools." ON) option(BUILD_SHARED_LIBS "Enable/disable build of shared libraries." ON) -option(BUILD_SHARED_EXTENSIONS "Enable/disable build of shared extensions." ON) option(BUILD_STATIC_LIBS "Enable/disable build of static libraries." ON) -option(BUILD_STATIC_EXTENSIONS "Enable/disable build of static extensions." ON) -option(MSVC_STATIC_RUNTIME_LIBRARY "Enable/disable static runtime on Windows." OFF) option(BOOST_STATIC_LIBS "Use static version of boost libraries." OFF) +option(MSVC_STATIC_RUNTIME_LIBRARY "Enable/disable static runtime on Windows." OFF) +# Handle options compatibility if (BOOST_STATIC_LIBS AND BUILD_SHARED_LIBS) - set(BOOST_STATIC_LIBS OFF) - message(WARNING "BOOST_STATIC_LIBS disabled if you want to build shared libraries. Use this option with BUILD_SHARED_LIBS=OFF") + message(FATAL_ERROR "BOOST_STATIC_LIBS and BUILD_SHARED_LIBS are ON and should not be used together. + BOOST_STATIC_LIBS should only be used with BUILD_STATIC_LIBS=ON and BUILD_SHARED_LIBS=OFF.") endif () -if (BUILD_TESTS AND NOT BUILD_SHARED_LIBS) - message(FATAL_ERROR "BUILD_TESTS is ON but BUILD_SHARED_LIBS is OFF, you should turn ON BUILD_SHARED_LIBS or turn off BUILD_TESTS.") -endif () - -if (BUILD_STATIC_EXTENSIONS AND NOT BUILD_STATIC_LIBS) - message(FATAL_ERROR "BUILD_STATIC_EXTENSIONS is ON but BUILD_STATIC_LIBS is OFF, you should turn ON BUILD_STATIC_LIBS or turn off BUILD_STATIC_EXTENSIONS.") +if (BUILD_STATIC_LIBS AND NOT BUILD_SHARED_LIBS) + set(TARGET_POSTFIX "-static") endif () list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") @@ -72,17 +68,8 @@ elseif (MSVC) endif () endif () -if (BOOST_STATIC_LIBS) - set(Boost_USE_STATIC_LIBS ON) - if (MSVC_STATIC_RUNTIME_LIBRARY) - set(Boost_USE_STATIC_RUNTIME ON) - else () - set(Boost_USE_STATIC_RUNTIME OFF) - endif () -else () - set(Boost_USE_STATIC_LIBS OFF) - set(Boost_USE_STATIC_RUNTIME OFF) -endif () +set(Boost_USE_STATIC_LIBS ${BOOST_STATIC_LIBS}) +set(Boost_USE_STATIC_RUNTIME ${MSVC_STATIC_RUNTIME_LIBRARY}) if (BUILD_TESTS) find_package(Boost 1.65 REQUIRED COMPONENTS date_time filesystem program_options system unit_test_framework) else () diff --git a/README.md b/README.md index 9ca28f6d1..3d81b7e0c 100644 --- a/README.md +++ b/README.md @@ -149,11 +149,9 @@ $> cmake .. -DCMAKE_INSTALL_PREFIX= -DCMAKE_BUILD_TYPE= - BUILD_TESTS: Generate unit tests (Default is **ON**) - BUILD_TOOLS: Build the tools (Default is **ON**) - BUILD_SHARED_LIBS: Build shared version of the library (Default is **ON**) -- BUILD_SHARED_EXTENSIONS: Build shared version of the extensions (Default is **ON**) - BUILD_STATIC_LIBS: Build static version of library (Default is **ON**) -- BUILD_STATIC_EXTENSIONS: Build static version of the extensions (Default is **ON**) -- MSVC_STATIC_RUNTIME_LIBRARY: Use MSVC static runtime (Default is **OFF**) - BOOST_STATIC_LIBS: Use static version of Boost libraries (Default is **OFF**) +- MSVC_STATIC_RUNTIME_LIBRARY: Use MSVC static runtime (Default is **OFF**) **Note:** If you want to use custom version of **Boost** or **LibXML**, you would have to help `cmake` to find the required packages, using the `-DCMAKE_PREFIX_PATH` options: ``` diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 227e4fbea..d6b6edd88 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -6,4 +6,6 @@ # add_subdirectory(example1) -add_subdirectory(example3) +if (BUILD_STATIC_LIBS) + add_subdirectory(example3) +endif () diff --git a/examples/example1/CMakeLists.txt b/examples/example1/CMakeLists.txt index 5cfb536dc..edb338f8e 100644 --- a/examples/example1/CMakeLists.txt +++ b/examples/example1/CMakeLists.txt @@ -6,4 +6,4 @@ # add_executable(example1 example1.cpp) -target_link_libraries(example1 PRIVATE iidm) +target_link_libraries(example1 PRIVATE iidm${TARGET_POSTFIX}) diff --git a/extensions/entsoe/CMakeLists.txt b/extensions/entsoe/CMakeLists.txt index 4a4417a5c..7973227b5 100644 --- a/extensions/entsoe/CMakeLists.txt +++ b/extensions/entsoe/CMakeLists.txt @@ -28,7 +28,7 @@ set(UNIT_TEST_SOURCES test/XnodeTest.cpp ) -if (BUILD_SHARED_EXTENSIONS) +if (BUILD_SHARED_LIBS) # Shared library add_library(${EXT_NAME} SHARED ${EXT_SOURCES}) set_target_properties(${EXT_NAME} PROPERTIES SOVERSION ${IIDM_SOVERSION} VERSION ${IIDM_VERSION} OUTPUT_NAME iidm-${EXT_NAME}) @@ -38,12 +38,7 @@ if (BUILD_SHARED_EXTENSIONS) PUBLIC $ ) - if (BUILD_STATIC_LIBS AND NOT BUILD_SHARED_LIBS) - target_link_libraries(${EXT_NAME} PUBLIC iidm-static) - else () - target_link_libraries(${EXT_NAME} PUBLIC iidm) - endif () - + target_link_libraries(${EXT_NAME} PUBLIC iidm) # Installation install(TARGETS ${EXT_NAME} @@ -54,7 +49,7 @@ if (BUILD_SHARED_EXTENSIONS) ) endif () -if (BUILD_STATIC_EXTENSIONS) +if (BUILD_STATIC_LIBS) # Static library add_library(${EXT_NAME}-static STATIC ${EXT_SOURCES}) set_target_properties(${EXT_NAME}-static PROPERTIES OUTPUT_NAME iidm-${EXT_NAME}) @@ -78,8 +73,10 @@ endif () if (BUILD_TESTS) # Unit tests add_executable(unit-tests-${EXT_NAME} ${UNIT_TEST_SOURCES}) - target_compile_definitions(unit-tests-${EXT_NAME} PRIVATE BOOST_TEST_DYN_LINK) - target_link_libraries(unit-tests-${EXT_NAME} PRIVATE ${EXT_NAME} iidm-tests) + if (BUILD_SHARED_LIBS) + target_compile_definitions(unit-tests-${EXT_NAME} PRIVATE BOOST_TEST_DYN_LINK) + endif () + target_link_libraries(unit-tests-${EXT_NAME} PRIVATE ${EXT_NAME}${TARGET_POSTFIX} iidm-tests${TARGET_POSTFIX}) add_test(NAME ${EXT_NAME} COMMAND unit-tests-${EXT_NAME} -- --resources=${CMAKE_CURRENT_SOURCE_DIR}/resources) endif() diff --git a/extensions/entsoe/test/entsoe.cpp b/extensions/entsoe/test/entsoe.cpp index fa93da69d..74d8304bf 100644 --- a/extensions/entsoe/test/entsoe.cpp +++ b/extensions/entsoe/test/entsoe.cpp @@ -8,14 +8,45 @@ #define BOOST_TEST_MODULE entsoe #include +#include +#include +#include +#include +#include #include #include +namespace xml = powsybl::iidm::converter::xml; +namespace ext = powsybl::iidm::extensions::entsoe; + namespace powsybl { namespace test { -BOOST_TEST_GLOBAL_FIXTURE(ExtensionFixture); +class ExtensionFixtureEnstsoe : public ResourceFixture { + public: + ExtensionFixtureEnstsoe(); + + ExtensionFixtureEnstsoe(const ExtensionFixtureEnstsoe&) = default; + + ExtensionFixtureEnstsoe(ExtensionFixtureEnstsoe&&) = default; + + ~ExtensionFixtureEnstsoe() = default; + + ExtensionFixtureEnstsoe& operator=(const ExtensionFixtureEnstsoe&) = default; + + ExtensionFixtureEnstsoe& operator=(ExtensionFixtureEnstsoe&&) = default; +}; + +ExtensionFixtureEnstsoe::ExtensionFixtureEnstsoe() { + for (auto& extension : powsybl::iidm::extensions::entsoe::create()) + auto& extProvider = powsybl::iidm::ExtensionProviders::getInstance(); + extProvider.registerExtension(stdcxx::make_unique()); + extProvider.registerExtension(stdcxx::make_unique()); + extProvider.registerExtension(stdcxx::make_unique()); +} + +BOOST_TEST_GLOBAL_FIXTURE(ExtensionFixtureEnstsoe); BOOST_TEST_GLOBAL_FIXTURE(XmlFixture); } // namespace test diff --git a/extensions/iidm/CMakeLists.txt b/extensions/iidm/CMakeLists.txt index 6aeccfce8..859292b5c 100644 --- a/extensions/iidm/CMakeLists.txt +++ b/extensions/iidm/CMakeLists.txt @@ -35,7 +35,7 @@ set(UNIT_TEST_SOURCES test/VoltagePerReactivePowerControlTest.cpp ) -if (BUILD_SHARED_EXTENSIONS) +if (BUILD_SHARED_LIBS) # Shared library add_library(${EXT_NAME} SHARED ${EXT_SOURCES}) set_target_properties(${EXT_NAME} PROPERTIES SOVERSION ${IIDM_SOVERSION} VERSION ${IIDM_VERSION} OUTPUT_NAME iidm-${EXT_NAME}) @@ -45,11 +45,7 @@ if (BUILD_SHARED_EXTENSIONS) PUBLIC $ ) - if (BUILD_STATIC_LIBS AND NOT BUILD_SHARED_LIBS) - target_link_libraries(${EXT_NAME} PUBLIC iidm-static) - else () - target_link_libraries(${EXT_NAME} PUBLIC iidm) - endif () + target_link_libraries(${EXT_NAME} PUBLIC iidm) # Installation install(TARGETS ${EXT_NAME} @@ -60,7 +56,7 @@ if (BUILD_SHARED_EXTENSIONS) ) endif () -if (BUILD_STATIC_EXTENSIONS) +if (BUILD_STATIC_LIBS) # Static library add_library(${EXT_NAME}-static STATIC ${EXT_SOURCES}) set_target_properties(${EXT_NAME}-static PROPERTIES OUTPUT_NAME iidm-${EXT_NAME}) @@ -84,8 +80,10 @@ endif () if (BUILD_TESTS) # Unit tests add_executable(unit-tests-${EXT_NAME} ${UNIT_TEST_SOURCES}) - target_compile_definitions(unit-tests-${EXT_NAME} PRIVATE BOOST_TEST_DYN_LINK) - target_link_libraries(unit-tests-${EXT_NAME} PRIVATE ${EXT_NAME} iidm-tests) + if (BUILD_SHARED_LIBS) + target_compile_definitions(unit-tests-${EXT_NAME} PRIVATE BOOST_TEST_DYN_LINK) + endif () + target_link_libraries(unit-tests-${EXT_NAME} PRIVATE ${EXT_NAME}${TARGET_POSTFIX} iidm-tests${TARGET_POSTFIX}) add_test(NAME ${EXT_NAME} COMMAND unit-tests-${EXT_NAME} -- --resources=${CMAKE_CURRENT_SOURCE_DIR}/resources) endif() diff --git a/extensions/iidm/test/iidm.cpp b/extensions/iidm/test/iidm.cpp index 53295512b..edbac72b4 100644 --- a/extensions/iidm/test/iidm.cpp +++ b/extensions/iidm/test/iidm.cpp @@ -8,14 +8,48 @@ #define BOOST_TEST_MODULE iidm #include +#include +#include +#include +#include +#include +#include +#include #include #include +namespace xml = powsybl::iidm::converter::xml; +namespace ext = powsybl::iidm::extensions::iidm; + namespace powsybl { namespace test { -BOOST_TEST_GLOBAL_FIXTURE(ExtensionFixture); +class ExtensionFixtureIidm : public ResourceFixture { + public: + ExtensionFixtureIidm(); + + ExtensionFixtureIidm(const ExtensionFixtureIidm&) = default; + + ExtensionFixtureIidm(ExtensionFixtureIidm&&) = default; + + ~ExtensionFixtureIidm() = default; + + ExtensionFixtureIidm& operator=(const ExtensionFixtureIidm&) = default; + + ExtensionFixtureIidm& operator=(ExtensionFixtureIidm&&) = default; +}; + +ExtensionFixtureIidm::ExtensionFixtureIidm() { + auto& extProvider = powsybl::iidm::ExtensionProviders::getInstance(); + extProvider.registerExtension(stdcxx::make_unique()); + extProvider.registerExtension(stdcxx::make_unique()); + extProvider.registerExtension(stdcxx::make_unique()); + extProvider.registerExtension(stdcxx::make_unique()); + extProvider.registerExtension(stdcxx::make_unique()); +} + +BOOST_TEST_GLOBAL_FIXTURE(ExtensionFixtureIidm); BOOST_TEST_GLOBAL_FIXTURE(XmlFixture); } // namespace test diff --git a/extensions/sld/CMakeLists.txt b/extensions/sld/CMakeLists.txt index 46bfcc881..171fddc36 100644 --- a/extensions/sld/CMakeLists.txt +++ b/extensions/sld/CMakeLists.txt @@ -23,7 +23,7 @@ set(UNIT_TEST_SOURCES test/sld.cpp ) -if (BUILD_SHARED_EXTENSIONS) +if (BUILD_SHARED_LIBS) # Shared library add_library(${EXT_NAME} SHARED ${EXT_SOURCES}) set_target_properties(${EXT_NAME} PROPERTIES SOVERSION ${IIDM_SOVERSION} VERSION ${IIDM_VERSION} OUTPUT_NAME iidm-${EXT_NAME}) @@ -33,11 +33,7 @@ if (BUILD_SHARED_EXTENSIONS) PUBLIC $ ) - if (BUILD_STATIC_LIBS AND NOT BUILD_SHARED_LIBS) - target_link_libraries(${EXT_NAME} PUBLIC iidm-static) - else () - target_link_libraries(${EXT_NAME} PUBLIC iidm) - endif () + target_link_libraries(${EXT_NAME} PUBLIC iidm) # Installation install(TARGETS ${EXT_NAME} @@ -48,7 +44,7 @@ if (BUILD_SHARED_EXTENSIONS) ) endif () -if (BUILD_STATIC_EXTENSIONS) +if (BUILD_STATIC_LIBS) # Static library add_library(${EXT_NAME}-static STATIC ${EXT_SOURCES}) set_target_properties(${EXT_NAME}-static PROPERTIES OUTPUT_NAME iidm-${EXT_NAME}) @@ -72,8 +68,10 @@ endif () if (BUILD_TESTS) # Unit tests add_executable(unit-tests-${EXT_NAME} ${UNIT_TEST_SOURCES}) - target_compile_definitions(unit-tests-${EXT_NAME} PRIVATE BOOST_TEST_DYN_LINK) - target_link_libraries(unit-tests-${EXT_NAME} PRIVATE ${EXT_NAME} iidm-tests) + if (BUILD_SHARED_LIBS) + target_compile_definitions(unit-tests-${EXT_NAME} PRIVATE BOOST_TEST_DYN_LINK) + endif () + target_link_libraries(unit-tests-${EXT_NAME} PRIVATE ${EXT_NAME}${TARGET_POSTFIX} iidm-tests${TARGET_POSTFIX}) add_test(NAME ${EXT_NAME} COMMAND unit-tests-${EXT_NAME} -- --resources=${CMAKE_CURRENT_SOURCE_DIR}/resources) endif() diff --git a/extensions/sld/test/sld.cpp b/extensions/sld/test/sld.cpp index bca4d2f64..a2f52f88f 100644 --- a/extensions/sld/test/sld.cpp +++ b/extensions/sld/test/sld.cpp @@ -8,14 +8,41 @@ #define BOOST_TEST_MODULE sld #include +#include +#include +#include #include #include +namespace xml = powsybl::iidm::converter::xml; +namespace ext = powsybl::iidm::extensions::sld; + namespace powsybl { namespace test { -BOOST_TEST_GLOBAL_FIXTURE(ExtensionFixture); +class ExtensionFixtureSld : public ResourceFixture { + public: + ExtensionFixtureSld(); + + ExtensionFixtureSld(const ExtensionFixtureSld&) = default; + + ExtensionFixtureSld(ExtensionFixtureSld&&) = default; + + ~ExtensionFixtureSld() = default; + + ExtensionFixtureSld& operator=(const ExtensionFixtureSld&) = default; + + ExtensionFixtureSld& operator=(ExtensionFixtureSld&&) = default; +}; + +ExtensionFixtureSld::ExtensionFixtureSld() { + auto& extProvider = powsybl::iidm::ExtensionProviders::getInstance(); + extProvider.registerExtension(stdcxx::make_unique()); + extProvider.registerExtension(stdcxx::make_unique()); +} + +BOOST_TEST_GLOBAL_FIXTURE(ExtensionFixtureSld); BOOST_TEST_GLOBAL_FIXTURE(XmlFixture); } // namespace test diff --git a/test/iidm/CMakeLists.txt b/test/iidm/CMakeLists.txt index b73eb0199..78bd10a4d 100644 --- a/test/iidm/CMakeLists.txt +++ b/test/iidm/CMakeLists.txt @@ -57,8 +57,10 @@ set(UNIT_TEST_SOURCES ) add_executable(unit-tests-iidm ${UNIT_TEST_SOURCES}) -target_compile_definitions(unit-tests-iidm PRIVATE BOOST_TEST_DYN_LINK) -target_link_libraries(unit-tests-iidm PRIVATE iidm-tests) +if (BUILD_SHARED_LIBS) + target_compile_definitions(unit-tests-iidm PRIVATE BOOST_TEST_DYN_LINK) +endif () +target_link_libraries(unit-tests-iidm PRIVATE iidm-tests${TARGET_POSTFIX}) add_test(NAME iidm COMMAND unit-tests-iidm -- --resources=${CMAKE_SOURCE_DIR}/test/resources) diff --git a/test/iidm/converter/xml/CMakeLists.txt b/test/iidm/converter/xml/CMakeLists.txt index 9e7d3289c..92118dc80 100644 --- a/test/iidm/converter/xml/CMakeLists.txt +++ b/test/iidm/converter/xml/CMakeLists.txt @@ -45,31 +45,38 @@ set(UNIT_TEST_SOURCES xiidm.cpp ) -# Shared library -add_library(${EXT_NAME} SHARED ${EXT_SOURCES}) -set_target_properties(${EXT_NAME} PROPERTIES SOVERSION ${IIDM_SOVERSION} VERSION ${IIDM_VERSION} OUTPUT_NAME iidm-${EXT_NAME}) -target_include_directories(${EXT_NAME} - INTERFACE - $ - PUBLIC - $ -) -target_link_libraries(${EXT_NAME} PUBLIC iidm) +if (BUILD_SHARED_LIBS) + # Shared library + add_library(${EXT_NAME} SHARED ${EXT_SOURCES}) + set_target_properties(${EXT_NAME} PROPERTIES SOVERSION ${IIDM_SOVERSION} VERSION ${IIDM_VERSION} OUTPUT_NAME iidm-${EXT_NAME}) + target_include_directories(${EXT_NAME} + INTERFACE + $ + PUBLIC + $ + ) + target_link_libraries(${EXT_NAME} PUBLIC iidm) +endif () + +if (BUILD_STATIC_LIBS) + # Static library + add_library(${EXT_NAME}-static STATIC ${EXT_SOURCES}) + set_target_properties(${EXT_NAME}-static PROPERTIES OUTPUT_NAME iidm-${EXT_NAME}) + target_include_directories(${EXT_NAME}-static + INTERFACE + $ + PUBLIC + $ + ) + target_link_libraries(${EXT_NAME}-static PUBLIC iidm-static) +endif () -# Static library -add_library(${EXT_NAME}-static STATIC ${EXT_SOURCES}) -set_target_properties(${EXT_NAME}-static PROPERTIES OUTPUT_NAME iidm-${EXT_NAME}) -target_include_directories(${EXT_NAME}-static - INTERFACE - $ - PUBLIC - $ -) -target_link_libraries(${EXT_NAME}-static PUBLIC iidm) # Unit tests add_executable(unit-tests-iidm-xml ${UNIT_TEST_SOURCES}) -target_compile_definitions(unit-tests-iidm-xml PRIVATE BOOST_TEST_DYN_LINK) -target_link_libraries(unit-tests-iidm-xml PRIVATE ${EXT_NAME} iidm-tests) +if (BUILD_SHARED_LIBS) + target_compile_definitions(unit-tests-iidm-xml PRIVATE BOOST_TEST_DYN_LINK) +endif () +target_link_libraries(unit-tests-iidm-xml PRIVATE ${EXT_NAME}${TARGET_POSTFIX} iidm-tests${TARGET_POSTFIX}) add_test(NAME iidm-xml COMMAND unit-tests-iidm-xml -- --resources=${CMAKE_SOURCE_DIR}/test/resources) diff --git a/test/iidm/converter/xml/xiidm.cpp b/test/iidm/converter/xml/xiidm.cpp index 4e9244daa..c0a1746ed 100644 --- a/test/iidm/converter/xml/xiidm.cpp +++ b/test/iidm/converter/xml/xiidm.cpp @@ -8,14 +8,47 @@ #define BOOST_TEST_MODULE iidm-xml #include +#include "extensions/LoadBarXmlSerializer.hpp" +#include "extensions/LoadFooXmlSerializer.hpp" +#include "extensions/LoadMockExtXmlSerializer.hpp" +#include "extensions/LoadQuxXmlSerializer.hpp" +#include "extensions/TerminalMockXmlSerializer.hpp" +#include #include #include +namespace xml = powsybl::iidm::converter::xml; +namespace ext = powsybl::iidm::converter::xml::extensions; + namespace powsybl { namespace test { -BOOST_TEST_GLOBAL_FIXTURE(ExtensionFixture); +class ExtensionFixtureXiidm : public ResourceFixture { + public: + ExtensionFixtureXiidm(); + + ExtensionFixtureXiidm(const ExtensionFixtureXiidm&) = default; + + ExtensionFixtureXiidm(ExtensionFixtureXiidm&&) = default; + + ~ExtensionFixtureXiidm() = default; + + ExtensionFixtureXiidm& operator=(const ExtensionFixtureXiidm&) = default; + + ExtensionFixtureXiidm& operator=(ExtensionFixtureXiidm&&) = default; +}; + +ExtensionFixtureXiidm::ExtensionFixtureXiidm() { + auto& extProvider = powsybl::iidm::ExtensionProviders::getInstance(); + extProvider.registerExtension(stdcxx::make_unique()); + extProvider.registerExtension(stdcxx::make_unique()); + extProvider.registerExtension(stdcxx::make_unique()); + extProvider.registerExtension(stdcxx::make_unique()); + extProvider.registerExtension(stdcxx::make_unique()); +} + +BOOST_TEST_GLOBAL_FIXTURE(ExtensionFixtureXiidm); BOOST_TEST_GLOBAL_FIXTURE(XmlFixture); } // namespace test diff --git a/test/logging/CMakeLists.txt b/test/logging/CMakeLists.txt index e28ade522..e65da4bb5 100644 --- a/test/logging/CMakeLists.txt +++ b/test/logging/CMakeLists.txt @@ -14,7 +14,9 @@ set(UNIT_TEST_SOURCES ) add_executable(unit-tests-logging ${UNIT_TEST_SOURCES}) -target_compile_definitions(unit-tests-logging PRIVATE BOOST_TEST_DYN_LINK) -target_link_libraries(unit-tests-logging PRIVATE iidm-tests) +if (BUILD_SHARED_LIBS) + target_compile_definitions(unit-tests-logging PRIVATE BOOST_TEST_DYN_LINK) +endif () +target_link_libraries(unit-tests-logging PRIVATE iidm-tests${TARGET_POSTFIX}) add_test(NAME logging COMMAND unit-tests-logging) diff --git a/test/math/CMakeLists.txt b/test/math/CMakeLists.txt index ef26708b5..445c11db7 100644 --- a/test/math/CMakeLists.txt +++ b/test/math/CMakeLists.txt @@ -11,7 +11,9 @@ set(UNIT_TEST_SOURCES ) add_executable(unit-tests-math ${UNIT_TEST_SOURCES}) -target_compile_definitions(unit-tests-math PRIVATE BOOST_TEST_DYN_LINK) -target_link_libraries(unit-tests-math PRIVATE iidm-tests) +if (BUILD_SHARED_LIBS) + target_compile_definitions(unit-tests-math PRIVATE BOOST_TEST_DYN_LINK) +endif () +target_link_libraries(unit-tests-math PRIVATE iidm-tests${TARGET_POSTFIX}) add_test(NAME math COMMAND unit-tests-math) diff --git a/test/network/CMakeLists.txt b/test/network/CMakeLists.txt index ed9250aa5..ff61ef6c3 100644 --- a/test/network/CMakeLists.txt +++ b/test/network/CMakeLists.txt @@ -10,7 +10,9 @@ set(UNIT_TEST_SOURCES network.cpp) add_executable(unit-tests-network ${UNIT_TEST_SOURCES}) -target_compile_definitions(unit-tests-network PRIVATE BOOST_TEST_DYN_LINK) -target_link_libraries(unit-tests-network PRIVATE iidm-tests) +if (BUILD_SHARED_LIBS) + target_compile_definitions(unit-tests-network PRIVATE BOOST_TEST_DYN_LINK) +endif () +target_link_libraries(unit-tests-network PRIVATE iidm-tests${TARGET_POSTFIX}) add_test(NAME network COMMAND unit-tests-network) diff --git a/test/stdcxx/CMakeLists.txt b/test/stdcxx/CMakeLists.txt index 5d7def66e..fea9062c7 100644 --- a/test/stdcxx/CMakeLists.txt +++ b/test/stdcxx/CMakeLists.txt @@ -15,7 +15,9 @@ set(UNIT_TEST_SOURCES ) add_executable(unit-tests-stdcxx ${UNIT_TEST_SOURCES}) -target_compile_definitions(unit-tests-stdcxx PRIVATE BOOST_TEST_DYN_LINK) -target_link_libraries(unit-tests-stdcxx PRIVATE iidm-tests) +if (BUILD_SHARED_LIBS) + target_compile_definitions(unit-tests-stdcxx PRIVATE BOOST_TEST_DYN_LINK) +endif () +target_link_libraries(unit-tests-stdcxx PRIVATE iidm-tests${TARGET_POSTFIX}) add_test(NAME stdcxx COMMAND unit-tests-stdcxx) diff --git a/test/xml/CMakeLists.txt b/test/xml/CMakeLists.txt index 7c9cfa64e..f11cb7b2f 100644 --- a/test/xml/CMakeLists.txt +++ b/test/xml/CMakeLists.txt @@ -11,7 +11,9 @@ set(UNIT_TEST_SOURCES XmlStreamWriterTest.cpp) add_executable(unit-tests-xml ${UNIT_TEST_SOURCES}) -target_compile_definitions(unit-tests-xml PRIVATE BOOST_TEST_DYN_LINK) -target_link_libraries(unit-tests-xml PRIVATE iidm-tests) +if (BUILD_SHARED_LIBS) + target_compile_definitions(unit-tests-xml PRIVATE BOOST_TEST_DYN_LINK) +endif () +target_link_libraries(unit-tests-xml PRIVATE iidm-tests${TARGET_POSTFIX}) add_test(NAME xml COMMAND unit-tests-xml) diff --git a/tools/benchmark/CMakeLists.txt b/tools/benchmark/CMakeLists.txt index ab7fb7920..f27d0a016 100644 --- a/tools/benchmark/CMakeLists.txt +++ b/tools/benchmark/CMakeLists.txt @@ -10,7 +10,7 @@ set(IIDM_BENCHMARK_SOURCES ) add_executable(iidm-benchmark ${IIDM_BENCHMARK_SOURCES}) -target_link_libraries(iidm-benchmark PRIVATE iidm Boost::program_options) +target_link_libraries(iidm-benchmark PRIVATE iidm${TARGET_POSTFIX} Boost::program_options) # Installation install(TARGETS iidm-benchmark