From fe13f748c2ff14422896f74e227f85ca42d15456 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 26 Mar 2018 18:12:14 +0200 Subject: [PATCH] Automagic way of importing static plugins. Statically built plugins get imported automatically when using CMake 3.1 and newer. Otherwise simply #include a corresponding importStaticPlugin.cpp file. --- .../AnyAudioImporter/CMakeLists.txt | 8 +++++ .../AnyAudioImporter/importStaticPlugin.cpp | 35 +++++++++++++++++++ .../AnyImageConverter/CMakeLists.txt | 8 +++++ .../AnyImageConverter/importStaticPlugin.cpp | 35 +++++++++++++++++++ .../AnyImageImporter/CMakeLists.txt | 8 +++++ .../AnyImageImporter/importStaticPlugin.cpp | 35 +++++++++++++++++++ .../AnySceneImporter/CMakeLists.txt | 8 +++++ .../AnySceneImporter/importStaticPlugin.cpp | 35 +++++++++++++++++++ 8 files changed, 172 insertions(+) create mode 100644 src/MagnumPlugins/AnyAudioImporter/importStaticPlugin.cpp create mode 100644 src/MagnumPlugins/AnyImageConverter/importStaticPlugin.cpp create mode 100644 src/MagnumPlugins/AnyImageImporter/importStaticPlugin.cpp create mode 100644 src/MagnumPlugins/AnySceneImporter/importStaticPlugin.cpp diff --git a/src/MagnumPlugins/AnyAudioImporter/CMakeLists.txt b/src/MagnumPlugins/AnyAudioImporter/CMakeLists.txt index c4b0bd72f..3300b05fe 100644 --- a/src/MagnumPlugins/AnyAudioImporter/CMakeLists.txt +++ b/src/MagnumPlugins/AnyAudioImporter/CMakeLists.txt @@ -70,6 +70,14 @@ target_link_libraries(AnyAudioImporter Magnum::Magnum Magnum::Audio) install(FILES ${AnyAudioImporter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyAudioImporter) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/configure.h DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyAudioImporter) +# Automatic static plugin import +if(BUILD_PLUGINS_STATIC) + install(FILES importStaticPlugin.cpp DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyAudioImporter) + if(NOT CMAKE_VERSION VERSION_LESS 3.1) + target_sources(AnyAudioImporter INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/importStaticPlugin.cpp) + endif() +endif() + if(BUILD_TESTS) add_library(MagnumAnyAudioImporterTestLib STATIC $ diff --git a/src/MagnumPlugins/AnyAudioImporter/importStaticPlugin.cpp b/src/MagnumPlugins/AnyAudioImporter/importStaticPlugin.cpp new file mode 100644 index 000000000..15058ec95 --- /dev/null +++ b/src/MagnumPlugins/AnyAudioImporter/importStaticPlugin.cpp @@ -0,0 +1,35 @@ +/* + This file is part of Magnum. + + Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 + Vladimír Vondruš + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +*/ + +#include "MagnumPlugins/AnyAudioImporter/configure.h" + +#ifdef MAGNUM_ANYAUDIOIMPORTER_BUILD_STATIC +#include + +static int magnumAnyAudioImporterStaticImporter() { + CORRADE_PLUGIN_IMPORT(AnyAudioImporter) + return 1; +} CORRADE_AUTOMATIC_INITIALIZER(magnumAnyAudioImporterStaticImporter) +#endif diff --git a/src/MagnumPlugins/AnyImageConverter/CMakeLists.txt b/src/MagnumPlugins/AnyImageConverter/CMakeLists.txt index 5c87818a2..e616188eb 100644 --- a/src/MagnumPlugins/AnyImageConverter/CMakeLists.txt +++ b/src/MagnumPlugins/AnyImageConverter/CMakeLists.txt @@ -68,6 +68,14 @@ target_link_libraries(AnyImageConverter Magnum::Magnum) install(FILES ${AnyImageConverter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyImageConverter) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/configure.h DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyImageConverter) +# Automatic static plugin import +if(BUILD_PLUGINS_STATIC) + install(FILES importStaticPlugin.cpp DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyImageConverter) + if(NOT CMAKE_VERSION VERSION_LESS 3.1) + target_sources(AnyImageConverter INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/importStaticPlugin.cpp) + endif() +endif() + if(BUILD_TESTS) add_library(MagnumAnyImageConverterTestLib STATIC $ diff --git a/src/MagnumPlugins/AnyImageConverter/importStaticPlugin.cpp b/src/MagnumPlugins/AnyImageConverter/importStaticPlugin.cpp new file mode 100644 index 000000000..1643279a8 --- /dev/null +++ b/src/MagnumPlugins/AnyImageConverter/importStaticPlugin.cpp @@ -0,0 +1,35 @@ +/* + This file is part of Magnum. + + Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 + Vladimír Vondruš + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +*/ + +#include "MagnumPlugins/AnyImageConverter/configure.h" + +#ifdef MAGNUM_ANYIMAGECONVERTER_BUILD_STATIC +#include + +static int magnumAnyImageConverterStaticImporter() { + CORRADE_PLUGIN_IMPORT(AnyImageConverter) + return 1; +} CORRADE_AUTOMATIC_INITIALIZER(magnumAnyImageConverterStaticImporter) +#endif diff --git a/src/MagnumPlugins/AnyImageImporter/CMakeLists.txt b/src/MagnumPlugins/AnyImageImporter/CMakeLists.txt index cebf0433c..0a2cefc3d 100644 --- a/src/MagnumPlugins/AnyImageImporter/CMakeLists.txt +++ b/src/MagnumPlugins/AnyImageImporter/CMakeLists.txt @@ -68,6 +68,14 @@ target_link_libraries(AnyImageImporter Magnum::Magnum) install(FILES ${AnyImageImporter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyImageImporter) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/configure.h DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyImageImporter) +# Automatic static plugin import +if(BUILD_PLUGINS_STATIC) + install(FILES importStaticPlugin.cpp DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyImageImporter) + if(NOT CMAKE_VERSION VERSION_LESS 3.1) + target_sources(AnyImageImporter INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/importStaticPlugin.cpp) + endif() +endif() + if(BUILD_TESTS) add_library(MagnumAnyImageImporterTestLib STATIC $ diff --git a/src/MagnumPlugins/AnyImageImporter/importStaticPlugin.cpp b/src/MagnumPlugins/AnyImageImporter/importStaticPlugin.cpp new file mode 100644 index 000000000..d9f504b71 --- /dev/null +++ b/src/MagnumPlugins/AnyImageImporter/importStaticPlugin.cpp @@ -0,0 +1,35 @@ +/* + This file is part of Magnum. + + Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 + Vladimír Vondruš + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +*/ + +#include "MagnumPlugins/AnyImageImporter/configure.h" + +#ifdef MAGNUM_ANYIMAGEIMPORTER_BUILD_STATIC +#include + +static int magnumAnyImageImporterStaticImporter() { + CORRADE_PLUGIN_IMPORT(AnyImageImporter) + return 1; +} CORRADE_AUTOMATIC_INITIALIZER(magnumAnyImageImporterStaticImporter) +#endif diff --git a/src/MagnumPlugins/AnySceneImporter/CMakeLists.txt b/src/MagnumPlugins/AnySceneImporter/CMakeLists.txt index a11e854b7..9f9e15a06 100644 --- a/src/MagnumPlugins/AnySceneImporter/CMakeLists.txt +++ b/src/MagnumPlugins/AnySceneImporter/CMakeLists.txt @@ -68,6 +68,14 @@ target_link_libraries(AnySceneImporter Magnum::Magnum) install(FILES ${AnySceneImporter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnySceneImporter) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/configure.h DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnySceneImporter) +# Automatic static plugin import +if(BUILD_PLUGINS_STATIC) + install(FILES importStaticPlugin.cpp DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnySceneImporter) + if(NOT CMAKE_VERSION VERSION_LESS 3.1) + target_sources(AnySceneImporter INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/importStaticPlugin.cpp) + endif() +endif() + if(BUILD_TESTS) add_library(MagnumAnySceneImporterTestLib STATIC $ diff --git a/src/MagnumPlugins/AnySceneImporter/importStaticPlugin.cpp b/src/MagnumPlugins/AnySceneImporter/importStaticPlugin.cpp new file mode 100644 index 000000000..435b3addb --- /dev/null +++ b/src/MagnumPlugins/AnySceneImporter/importStaticPlugin.cpp @@ -0,0 +1,35 @@ +/* + This file is part of Magnum. + + Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 + Vladimír Vondruš + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +*/ + +#include "MagnumPlugins/AnySceneImporter/configure.h" + +#ifdef MAGNUM_ANYSCENEIMPORTER_BUILD_STATIC +#include + +static int magnumAnySceneImporterStaticImporter() { + CORRADE_PLUGIN_IMPORT(AnySceneImporter) + return 1; +} CORRADE_AUTOMATIC_INITIALIZER(magnumAnySceneImporterStaticImporter) +#endif