Browse Source

CMake: make it possible to build only some plugins as static.

It doesn't really work for tests that depend on more than one plugin
(because there i would need to handle all combinations, somehow), but it
does the job when the end user has such use case.
pull/481/head
Vladimír Vondruš 6 years ago
parent
commit
5327fe0ae2
  1. 5
      doc/building.dox
  2. 4
      src/MagnumPlugins/AnyAudioImporter/CMakeLists.txt
  3. 6
      src/MagnumPlugins/AnyAudioImporter/Test/CMakeLists.txt
  4. 4
      src/MagnumPlugins/AnyImageConverter/CMakeLists.txt
  5. 6
      src/MagnumPlugins/AnyImageConverter/Test/CMakeLists.txt
  6. 4
      src/MagnumPlugins/AnyImageImporter/CMakeLists.txt
  7. 6
      src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt
  8. 4
      src/MagnumPlugins/AnySceneConverter/CMakeLists.txt
  9. 6
      src/MagnumPlugins/AnySceneConverter/Test/CMakeLists.txt
  10. 4
      src/MagnumPlugins/AnySceneImporter/CMakeLists.txt
  11. 6
      src/MagnumPlugins/AnySceneImporter/Test/CMakeLists.txt
  12. 4
      src/MagnumPlugins/AnyShaderConverter/CMakeLists.txt
  13. 6
      src/MagnumPlugins/AnyShaderConverter/Test/CMakeLists.txt
  14. 3
      src/MagnumPlugins/CMakeLists.txt
  15. 4
      src/MagnumPlugins/MagnumFont/CMakeLists.txt
  16. 10
      src/MagnumPlugins/MagnumFont/Test/CMakeLists.txt
  17. 6
      src/MagnumPlugins/MagnumFontConverter/CMakeLists.txt
  18. 6
      src/MagnumPlugins/MagnumFontConverter/Test/CMakeLists.txt
  19. 4
      src/MagnumPlugins/ObjImporter/CMakeLists.txt
  20. 6
      src/MagnumPlugins/ObjImporter/Test/CMakeLists.txt
  21. 4
      src/MagnumPlugins/TgaImageConverter/CMakeLists.txt
  22. 6
      src/MagnumPlugins/TgaImageConverter/Test/CMakeLists.txt
  23. 4
      src/MagnumPlugins/TgaImporter/CMakeLists.txt
  24. 6
      src/MagnumPlugins/TgaImporter/Test/CMakeLists.txt
  25. 8
      src/MagnumPlugins/WavAudioImporter/CMakeLists.txt
  26. 6
      src/MagnumPlugins/WavAudioImporter/Test/CMakeLists.txt

5
doc/building.dox

@ -649,7 +649,10 @@ Options controlling the build:
executable and won't use any dynamic plugins.
- `BUILD_PLUGINS_STATIC` --- Build plugins as static. By default, plugins are
built as dynamic. Independent of the `BUILD_STATIC` option to allow having
static libraries with dynamic plugins and vice versa.
static libraries with dynamic plugins and vice versa. To some extent it's
also possible to have only a subset of plugins built as static --- keep
this option `OFF` and enable `MAGNUM_<PLUGIN>_BUILD_STATIC` for particular
plugins instead.
- `BUILD_DEPRECATED` --- Include deprecated APIs in the build. Enabled by
default to preserve backwards compatibility, disabling it forces you to
update your code whenever there's a breaking API change. It's however

4
src/MagnumPlugins/AnyAudioImporter/CMakeLists.txt

@ -39,7 +39,7 @@ add_plugin(AnyAudioImporter
AnyAudioImporter.conf
AnyImporter.cpp
AnyImporter.h)
if(BUILD_PLUGINS_STATIC AND BUILD_STATIC_PIC)
if(MAGNUM_ANYAUDIOIMPORTER_BUILD_STATIC AND BUILD_STATIC_PIC)
set_target_properties(AnyAudioImporter PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
target_link_libraries(AnyAudioImporter PUBLIC Magnum MagnumAudio)
@ -55,7 +55,7 @@ install(FILES AnyImporter.h ${CMAKE_CURRENT_BINARY_DIR}/configure.h
DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyAudioImporter)
# Automatic static plugin import
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_ANYAUDIOIMPORTER_BUILD_STATIC)
install(FILES importStaticPlugin.cpp DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyAudioImporter)
target_sources(AnyAudioImporter INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/importStaticPlugin.cpp)
endif()

6
src/MagnumPlugins/AnyAudioImporter/Test/CMakeLists.txt

@ -33,7 +33,7 @@ endif()
# https://gitlab.kitware.com/cmake/cmake/merge_requests/404) and since Corrade
# doesn't support dynamic plugins on iOS, this sorta works around that. Should
# be revisited when updating Travis to newer Xcode (xcode7.3 has CMake 3.6).
if(NOT BUILD_PLUGINS_STATIC)
if(NOT MAGNUM_ANYAUDIOIMPORTER_BUILD_STATIC)
set(ANYAUDIOIMPORTER_PLUGIN_FILENAME $<TARGET_FILE:AnyAudioImporter>)
if(WITH_WAVAUDIOIMPORTER)
set(WAVAUDIOIMPORTER_PLUGIN_FILENAME $<TARGET_FILE:WavAudioImporter>)
@ -51,7 +51,7 @@ corrade_add_test(AnyAudioImporterTest AnyAudioImporterTest.cpp
FILES
../../WavAudioImporter/Test/stereo8.wav)
target_include_directories(AnyAudioImporterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_ANYAUDIOIMPORTER_BUILD_STATIC)
target_link_libraries(AnyAudioImporterTest PRIVATE AnyAudioImporter)
if(WITH_WAVAUDIOIMPORTER)
target_link_libraries(AnyAudioImporterTest PRIVATE WavAudioImporter)
@ -64,7 +64,7 @@ else()
endif()
endif()
set_target_properties(AnyAudioImporterTest PROPERTIES FOLDER "MagnumPlugins/AnyAudioImporter/Test")
if(CORRADE_BUILD_STATIC AND NOT BUILD_PLUGINS_STATIC)
if(CORRADE_BUILD_STATIC AND NOT MAGNUM_ANYAUDIOIMPORTER_BUILD_STATIC)
# CMake < 3.4 does this implicitly, but 3.4+ not anymore (see CMP0065).
# That's generally okay, *except if* the build is static, the executable
# uses a plugin manager and needs to share globals with the plugins (such

4
src/MagnumPlugins/AnyImageConverter/CMakeLists.txt

@ -39,7 +39,7 @@ add_plugin(AnyImageConverter
AnyImageConverter.conf
AnyImageConverter.cpp
AnyImageConverter.h)
if(BUILD_PLUGINS_STATIC AND BUILD_STATIC_PIC)
if(MAGNUM_ANYIMAGECONVERTER_BUILD_STATIC AND BUILD_STATIC_PIC)
set_target_properties(AnyImageConverter PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
target_link_libraries(AnyImageConverter PUBLIC MagnumTrade)
@ -55,7 +55,7 @@ install(FILES AnyImageConverter.h ${CMAKE_CURRENT_BINARY_DIR}/configure.h
DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyImageConverter)
# Automatic static plugin import
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_ANYIMAGECONVERTER_BUILD_STATIC)
install(FILES importStaticPlugin.cpp DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyImageConverter)
target_sources(AnyImageConverter INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/importStaticPlugin.cpp)
endif()

6
src/MagnumPlugins/AnyImageConverter/Test/CMakeLists.txt

@ -33,7 +33,7 @@ endif()
# https://gitlab.kitware.com/cmake/cmake/merge_requests/404) and since Corrade
# doesn't support dynamic plugins on iOS, this sorta works around that. Should
# be revisited when updating Travis to newer Xcode (xcode7.3 has CMake 3.6).
if(NOT BUILD_PLUGINS_STATIC)
if(NOT MAGNUM_ANYIMAGECONVERTER_BUILD_STATIC)
set(ANYIMAGECONVERTER_PLUGIN_FILENAME $<TARGET_FILE:AnyImageConverter>)
if(WITH_TGAIMAGECONVERTER)
set(TGAIMAGECONVERTER_PLUGIN_FILENAME $<TARGET_FILE:TgaImageConverter>)
@ -49,7 +49,7 @@ file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/configure.h
corrade_add_test(AnyImageConverterTest AnyImageConverterTest.cpp
LIBRARIES MagnumTrade)
target_include_directories(AnyImageConverterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_ANYIMAGECONVERTER_BUILD_STATIC)
target_link_libraries(AnyImageConverterTest PRIVATE AnyImageConverter)
if(WITH_TGAIMAGECONVERTER)
target_link_libraries(AnyImageConverterTest PRIVATE TgaImageConverter)
@ -62,7 +62,7 @@ else()
endif()
endif()
set_target_properties(AnyImageConverterTest PROPERTIES FOLDER "MagnumPlugins/AnyImageConverter/Test")
if(CORRADE_BUILD_STATIC AND NOT BUILD_PLUGINS_STATIC)
if(CORRADE_BUILD_STATIC AND NOT MAGNUM_ANYIMAGECONVERTER_BUILD_STATIC)
# CMake < 3.4 does this implicitly, but 3.4+ not anymore (see CMP0065).
# That's generally okay, *except if* the build is static, the executable
# uses a plugin manager and needs to share globals with the plugins (such

4
src/MagnumPlugins/AnyImageImporter/CMakeLists.txt

@ -39,7 +39,7 @@ add_plugin(AnyImageImporter
AnyImageImporter.conf
AnyImageImporter.cpp
AnyImageImporter.h)
if(BUILD_PLUGINS_STATIC AND BUILD_STATIC_PIC)
if(MAGNUM_ANYIMAGEIMPORTER_BUILD_STATIC AND BUILD_STATIC_PIC)
set_target_properties(AnyImageImporter PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
target_link_libraries(AnyImageImporter PUBLIC MagnumTrade)
@ -55,7 +55,7 @@ install(FILES AnyImageImporter.h ${CMAKE_CURRENT_BINARY_DIR}/configure.h
DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyImageImporter)
# Automatic static plugin import
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_ANYIMAGEIMPORTER_BUILD_STATIC)
install(FILES importStaticPlugin.cpp DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyImageImporter)
target_sources(AnyImageImporter INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/importStaticPlugin.cpp)
endif()

6
src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt

@ -35,7 +35,7 @@ endif()
# https://gitlab.kitware.com/cmake/cmake/merge_requests/404) and since Corrade
# doesn't support dynamic plugins on iOS, this sorta works around that. Should
# be revisited when updating Travis to newer Xcode (xcode7.3 has CMake 3.6).
if(NOT BUILD_PLUGINS_STATIC)
if(NOT MAGNUM_ANYIMAGEIMPORTER_BUILD_STATIC)
set(ANYIMAGEIMPORTER_PLUGIN_FILENAME $<TARGET_FILE:AnyImageImporter>)
if(WITH_TGAIMPORTER)
set(TGAIMPORTER_PLUGIN_FILENAME $<TARGET_FILE:TgaImporter>)
@ -61,7 +61,7 @@ corrade_add_test(AnyImageImporterTest AnyImageImporterTest.cpp
rgb.tga
rgba_dxt1.dds)
target_include_directories(AnyImageImporterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_ANYIMAGEIMPORTER_BUILD_STATIC)
target_link_libraries(AnyImageImporterTest PRIVATE AnyImageImporter)
if(WITH_TGAIMPORTER)
target_link_libraries(AnyImageImporterTest PRIVATE TgaImporter)
@ -74,7 +74,7 @@ else()
endif()
endif()
set_target_properties(AnyImageImporterTest PROPERTIES FOLDER "MagnumPlugins/AnyImageImporter/Test")
if(CORRADE_BUILD_STATIC AND NOT BUILD_PLUGINS_STATIC)
if(CORRADE_BUILD_STATIC AND NOT MAGNUM_ANYIMAGEIMPORTER_BUILD_STATIC)
# CMake < 3.4 does this implicitly, but 3.4+ not anymore (see CMP0065).
# That's generally okay, *except if* the build is static, the executable
# uses a plugin manager and needs to share globals with the plugins (such

4
src/MagnumPlugins/AnySceneConverter/CMakeLists.txt

@ -39,7 +39,7 @@ add_plugin(AnySceneConverter
AnySceneConverter.conf
AnySceneConverter.cpp
AnySceneConverter.h)
if(BUILD_PLUGINS_STATIC AND BUILD_STATIC_PIC)
if(MAGNUM_ANYSCENECONVERTER_BUILD_STATIC AND BUILD_STATIC_PIC)
set_target_properties(AnySceneConverter PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
target_link_libraries(AnySceneConverter PUBLIC MagnumTrade)
@ -55,7 +55,7 @@ install(FILES AnySceneConverter.h ${CMAKE_CURRENT_BINARY_DIR}/configure.h
DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnySceneConverter)
# Automatic static plugin import
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_ANYSCENECONVERTER_BUILD_STATIC)
install(FILES importStaticPlugin.cpp DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnySceneConverter)
target_sources(AnySceneConverter INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/importStaticPlugin.cpp)
endif()

6
src/MagnumPlugins/AnySceneConverter/Test/CMakeLists.txt

@ -33,7 +33,7 @@ endif()
# https://gitlab.kitware.com/cmake/cmake/merge_requests/404) and since Corrade
# doesn't support dynamic plugins on iOS, this sorta works around that. Should
# be revisited when updating Travis to newer Xcode (xcode7.3 has CMake 3.6).
if(NOT BUILD_PLUGINS_STATIC)
if(NOT MAGNUM_ANYSCENECONVERTER_BUILD_STATIC)
set(ANYSCENECONVERTER_PLUGIN_FILENAME $<TARGET_FILE:AnySceneConverter>)
if(WITH_TGAIMAGECONVERTER)
set(TGAIMAGECONVERTER_PLUGIN_FILENAME $<TARGET_FILE:TgaImageConverter>)
@ -49,7 +49,7 @@ file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/configure.h
corrade_add_test(AnySceneConverterTest AnySceneConverterTest.cpp
LIBRARIES MagnumTrade)
target_include_directories(AnySceneConverterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_ANYSCENECONVERTER_BUILD_STATIC)
target_link_libraries(AnySceneConverterTest PRIVATE AnySceneConverter)
if(WITH_TGAIMAGECONVERTER)
target_link_libraries(AnySceneConverterTest PRIVATE TgaImageConverter)
@ -62,7 +62,7 @@ else()
endif()
endif()
set_target_properties(AnySceneConverterTest PROPERTIES FOLDER "MagnumPlugins/AnySceneConverter/Test")
if(CORRADE_BUILD_STATIC AND NOT BUILD_PLUGINS_STATIC)
if(CORRADE_BUILD_STATIC AND NOT MAGNUM_ANYSCENECONVERTER_BUILD_STATIC)
# CMake < 3.4 does this implicitly, but 3.4+ not anymore (see CMP0065).
# That's generally okay, *except if* the build is static, the executable
# uses a plugin manager and needs to share globals with the plugins (such

4
src/MagnumPlugins/AnySceneImporter/CMakeLists.txt

@ -39,7 +39,7 @@ add_plugin(AnySceneImporter
AnySceneImporter.conf
AnySceneImporter.cpp
AnySceneImporter.h)
if(BUILD_PLUGINS_STATIC AND BUILD_STATIC_PIC)
if(MAGNUM_ANYSCENEIMPORTER_BUILD_STATIC AND BUILD_STATIC_PIC)
set_target_properties(AnySceneImporter PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
target_link_libraries(AnySceneImporter PUBLIC MagnumTrade)
@ -55,7 +55,7 @@ install(FILES AnySceneImporter.h ${CMAKE_CURRENT_BINARY_DIR}/configure.h
DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnySceneImporter)
# Automatic static plugin import
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_ANYSCENEIMPORTER_BUILD_STATIC)
install(FILES importStaticPlugin.cpp DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnySceneImporter)
target_sources(AnySceneImporter INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/importStaticPlugin.cpp)
endif()

6
src/MagnumPlugins/AnySceneImporter/Test/CMakeLists.txt

@ -33,7 +33,7 @@ endif()
# https://gitlab.kitware.com/cmake/cmake/merge_requests/404) and since Corrade
# doesn't support dynamic plugins on iOS, this sorta works around that. Should
# be revisited when updating Travis to newer Xcode (xcode7.3 has CMake 3.6).
if(NOT BUILD_PLUGINS_STATIC)
if(NOT MAGNUM_ANYSCENEIMPORTER_BUILD_STATIC)
set(ANYSCENEIMPORTER_PLUGIN_FILENAME $<TARGET_FILE:AnySceneImporter>)
if(WITH_OBJIMPORTER)
set(OBJIMPORTER_PLUGIN_FILENAME $<TARGET_FILE:ObjImporter>)
@ -51,7 +51,7 @@ corrade_add_test(AnySceneImporterTest AnySceneImporterTest.cpp
FILES
../../ObjImporter/Test/pointMesh.obj)
target_include_directories(AnySceneImporterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_ANYSCENEIMPORTER_BUILD_STATIC)
target_link_libraries(AnySceneImporterTest PRIVATE AnySceneImporter)
if(WITH_OBJIMPORTER)
target_link_libraries(AnySceneImporterTest PRIVATE ObjImporter)
@ -64,7 +64,7 @@ else()
endif()
endif()
set_target_properties(AnySceneImporterTest PROPERTIES FOLDER "MagnumPlugins/AnySceneImporter/Test")
if(CORRADE_BUILD_STATIC AND NOT BUILD_PLUGINS_STATIC)
if(CORRADE_BUILD_STATIC AND NOT MAGNUM_ANYSCENEIMPORTER_BUILD_STATIC)
# CMake < 3.4 does this implicitly, but 3.4+ not anymore (see CMP0065).
# That's generally okay, *except if* the build is static, the executable
# uses a plugin manager and needs to share globals with the plugins (such

4
src/MagnumPlugins/AnyShaderConverter/CMakeLists.txt

@ -39,7 +39,7 @@ add_plugin(AnyShaderConverter
AnyShaderConverter.conf
AnyConverter.cpp
AnyConverter.h)
if(BUILD_PLUGINS_STATIC AND BUILD_STATIC_PIC)
if(MAGNUM_ANYSHADERCONVERTER_BUILD_STATIC AND BUILD_STATIC_PIC)
set_target_properties(AnyShaderConverter PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
target_link_libraries(AnyShaderConverter PUBLIC MagnumShaderTools)
@ -55,7 +55,7 @@ install(FILES AnyConverter.h ${CMAKE_CURRENT_BINARY_DIR}/configure.h
DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyShaderConverter)
# Automatic static plugin import
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_ANYSHADERCONVERTER_BUILD_STATIC)
install(FILES importStaticPlugin.cpp DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyShaderConverter)
target_sources(AnyShaderConverter INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/importStaticPlugin.cpp)
endif()

6
src/MagnumPlugins/AnyShaderConverter/Test/CMakeLists.txt

@ -35,7 +35,7 @@ endif()
# https://gitlab.kitware.com/cmake/cmake/merge_requests/404) and since Corrade
# doesn't support dynamic plugins on iOS, this sorta works around that. Should
# be revisited when updating Travis to newer Xcode (xcode7.3 has CMake 3.6).
if(NOT BUILD_PLUGINS_STATIC)
if(NOT MAGNUM_ANYSHADERCONVERTER_BUILD_STATIC)
set(ANYSHADERCONVERTER_PLUGIN_FILENAME $<TARGET_FILE:AnyShaderConverter>)
endif()
@ -51,14 +51,14 @@ corrade_add_test(AnyShaderConverterTest AnyConverterTest.cpp
file.glsl
file.spv)
target_include_directories(AnyShaderConverterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_ANYSHADERCONVERTER_BUILD_STATIC)
target_link_libraries(AnyShaderConverterTest PRIVATE AnyShaderConverter)
else()
# So the plugins get properly built when building the test
add_dependencies(AnyShaderConverterTest AnyShaderConverter)
endif()
set_target_properties(AnyShaderConverterTest PROPERTIES FOLDER "MagnumPlugins/AnyShaderConverter/Test")
if(CORRADE_BUILD_STATIC AND NOT BUILD_PLUGINS_STATIC)
if(CORRADE_BUILD_STATIC AND NOT MAGNUM_ANYSHADERCONVERTER_BUILD_STATIC)
# CMake < 3.4 does this implicitly, but 3.4+ not anymore (see CMP0065).
# That's generally okay, *except if* the build is static, the executable
# uses a plugin manager and needs to share globals with the plugins (such

3
src/MagnumPlugins/CMakeLists.txt

@ -25,7 +25,8 @@
# Wrapper for creating given plugin type
macro(add_plugin plugin_name debug_install_dirs release_install_dirs metadata_file)
if(NOT BUILD_PLUGINS_STATIC)
string(TOUPPER ${plugin_name} PLUGIN_NAME)
if(NOT MAGNUM_${PLUGIN_NAME}_BUILD_STATIC)
corrade_add_plugin(${plugin_name} "${debug_install_dirs}" "${release_install_dirs}" ${metadata_file} ${ARGN})
set_target_properties(${plugin_name} ${plugin_name}-metadata PROPERTIES FOLDER "MagnumPlugins/${plugin_name}")
else()

4
src/MagnumPlugins/MagnumFont/CMakeLists.txt

@ -45,7 +45,7 @@ add_plugin(MagnumFont
MagnumFont.conf
MagnumFont.cpp
MagnumFont.h)
if(BUILD_PLUGINS_STATIC AND BUILD_STATIC_PIC)
if(MAGNUM_MAGNUMFONT_BUILD_STATIC AND BUILD_STATIC_PIC)
set_target_properties(MagnumFont PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
target_link_libraries(MagnumFont PUBLIC Magnum MagnumText MagnumTrade)
@ -64,7 +64,7 @@ install(FILES MagnumFont.h ${CMAKE_CURRENT_BINARY_DIR}/configure.h
DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/MagnumFont)
# Automatic static plugin import
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_MAGNUMFONT_BUILD_STATIC)
install(FILES importStaticPlugin.cpp DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/MagnumFont)
target_sources(MagnumFont INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/importStaticPlugin.cpp)
endif()

10
src/MagnumPlugins/MagnumFont/Test/CMakeLists.txt

@ -33,7 +33,7 @@ endif()
# https://gitlab.kitware.com/cmake/cmake/merge_requests/404) and since Corrade
# doesn't support dynamic plugins on iOS, this sorta works around that. Should
# be revisited when updating Travis to newer Xcode (xcode7.3 has CMake 3.6).
if(NOT BUILD_PLUGINS_STATIC)
if(NOT MAGNUM_MAGNUMFONT_BUILD_STATIC)
set(MAGNUMFONT_PLUGIN_FILENAME $<TARGET_FILE:MagnumFont>)
set(TGAIMPORTER_PLUGIN_FILENAME $<TARGET_FILE:TgaImporter>)
endif()
@ -50,11 +50,11 @@ corrade_add_test(MagnumFontTest MagnumFontTest.cpp
font.conf
font.tga)
target_include_directories(MagnumFontTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_MAGNUMFONT_BUILD_STATIC)
target_link_libraries(MagnumFontTest PRIVATE MagnumFont TgaImporter)
endif()
set_target_properties(MagnumFontTest PROPERTIES FOLDER "MagnumPlugins/MagnumFont/Test")
if(CORRADE_BUILD_STATIC AND NOT BUILD_PLUGINS_STATIC)
if(CORRADE_BUILD_STATIC AND NOT MAGNUM_MAGNUMFONT_BUILD_STATIC)
# CMake < 3.4 does this implicitly, but 3.4+ not anymore (see CMP0065).
# That's generally okay, *except if* the build is static, the executable
# uses a plugin manager and needs to share globals with the plugins (such
@ -69,14 +69,14 @@ if(BUILD_GL_TESTS)
font.conf
font.tga)
target_include_directories(MagnumFontGLTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_MAGNUMFONT_BUILD_STATIC)
target_link_libraries(MagnumFontGLTest PRIVATE MagnumFont TgaImporter)
else()
# So the plugins get properly built when building the test
add_dependencies(MagnumFontGLTest MagnumFont TgaImporter)
endif()
set_target_properties(MagnumFontGLTest PROPERTIES FOLDER "MagnumPlugins/MagnumFont/Test")
if((CORRADE_BUILD_STATIC OR MAGNUM_BUILD_STATIC) AND NOT BUILD_PLUGINS_STATIC)
if((CORRADE_BUILD_STATIC OR MAGNUM_BUILD_STATIC) AND NOT MAGNUM_MAGNUMFONT_BUILD_STATIC)
# CMake < 3.4 does this implicitly, but 3.4+ not anymore (see CMP0065).
# That's generally okay, *except if* the build is static, the
# executable uses a plugin manager and needs to share globals with the

6
src/MagnumPlugins/MagnumFontConverter/CMakeLists.txt

@ -39,13 +39,13 @@ add_plugin(MagnumFontConverter
MagnumFontConverter.conf
MagnumFontConverter.cpp
MagnumFontConverter.h)
if(BUILD_PLUGINS_STATIC AND BUILD_STATIC_PIC)
if(MAGNUM_MAGNUMFONTCONVERTER_BUILD_STATIC AND BUILD_STATIC_PIC)
set_target_properties(MagnumFontConverter PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
target_link_libraries(MagnumFontConverter PUBLIC Magnum MagnumText MagnumTrade)
if(CORRADE_TARGET_WINDOWS)
target_link_libraries(MagnumFontConverter PUBLIC TgaImageConverter)
elseif(BUILD_PLUGINS_STATIC)
elseif(MAGNUM_MAGNUMFONTCONVERTER_BUILD_STATIC)
target_link_libraries(MagnumFontConverter INTERFACE TgaImageConverter)
endif()
# Modify output location only if all are set, otherwise it makes no sense
@ -60,7 +60,7 @@ install(FILES MagnumFontConverter.h ${CMAKE_CURRENT_BINARY_DIR}/configure.h
DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/MagnumFontConverter)
# Automatic static plugin import
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_MAGNUMFONTCONVERTER_BUILD_STATIC)
install(FILES importStaticPlugin.cpp DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/MagnumFontConverter)
target_sources(MagnumFontConverter INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/importStaticPlugin.cpp)
endif()

6
src/MagnumPlugins/MagnumFontConverter/Test/CMakeLists.txt

@ -35,7 +35,7 @@ endif()
# https://gitlab.kitware.com/cmake/cmake/merge_requests/404) and since Corrade
# doesn't support dynamic plugins on iOS, this sorta works around that. Should
# be revisited when updating Travis to newer Xcode (xcode7.3 has CMake 3.6).
if(NOT BUILD_PLUGINS_STATIC)
if(NOT MAGNUM_MAGNUMFONTCONVERTER_BUILD_STATIC)
set(MAGNUMFONTCONVERTER_PLUGIN_FILENAME $<TARGET_FILE:MagnumFontConverter>)
set(TGAIMAGECONVERTER_PLUGIN_FILENAME $<TARGET_FILE:TgaImageConverter>)
if(WITH_TGAIMPORTER)
@ -55,7 +55,7 @@ corrade_add_test(MagnumFontConverterTest MagnumFontConverterTest.cpp
../../MagnumFont/Test/font.conf
../../MagnumFont/Test/font.tga)
target_include_directories(MagnumFontConverterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_MAGNUMFONTCONVERTER_BUILD_STATIC)
target_link_libraries(MagnumFontConverterTest PRIVATE
MagnumFontConverter) # TgaImageConverter should get linked transitively
if(WITH_TGAIMPORTER)
@ -69,7 +69,7 @@ else()
endif()
endif()
set_target_properties(MagnumFontConverterTest PROPERTIES FOLDER "MagnumPlugins/MagnumFontConverter/Test")
if(CORRADE_BUILD_STATIC AND NOT BUILD_PLUGINS_STATIC)
if(CORRADE_BUILD_STATIC AND NOT MAGNUM_MAGNUMFONTCONVERTER_BUILD_STATIC)
# CMake < 3.4 does this implicitly, but 3.4+ not anymore (see CMP0065).
# That's generally okay, *except if* the build is static, the executable
# uses a plugin manager and needs to share globals with the plugins (such

4
src/MagnumPlugins/ObjImporter/CMakeLists.txt

@ -39,7 +39,7 @@ add_plugin(ObjImporter
ObjImporter.conf
ObjImporter.cpp
ObjImporter.h)
if(BUILD_PLUGINS_STATIC AND BUILD_STATIC_PIC)
if(MAGNUM_OBJIMPORTER_BUILD_STATIC AND BUILD_STATIC_PIC)
set_target_properties(ObjImporter PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
target_link_libraries(ObjImporter PUBLIC MagnumTrade MagnumMeshTools)
@ -55,7 +55,7 @@ install(FILES ObjImporter.h ${CMAKE_CURRENT_BINARY_DIR}/configure.h
DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/ObjImporter)
# Automatic static plugin import
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_OBJIMPORTER_BUILD_STATIC)
install(FILES importStaticPlugin.cpp DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/ObjImporter)
target_sources(ObjImporter INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/importStaticPlugin.cpp)
endif()

6
src/MagnumPlugins/ObjImporter/Test/CMakeLists.txt

@ -33,7 +33,7 @@ endif()
# https://gitlab.kitware.com/cmake/cmake/merge_requests/404) and since Corrade
# doesn't support dynamic plugins on iOS, this sorta works around that. Should
# be revisited when updating Travis to newer Xcode (xcode7.3 has CMake 3.6).
if(NOT BUILD_PLUGINS_STATIC)
if(NOT MAGNUM_OBJIMPORTER_BUILD_STATIC)
set(OBJIMPORTER_PLUGIN_FILENAME $<TARGET_FILE:ObjImporter>)
endif()
@ -64,14 +64,14 @@ corrade_add_test(ObjImporterTest ObjImporterTest.cpp
wrongNumberCount.obj
wrongNumbers.obj)
target_include_directories(ObjImporterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_OBJIMPORTER_BUILD_STATIC)
target_link_libraries(ObjImporterTest PRIVATE ObjImporter)
else()
# So the plugins get properly built when building the test
add_dependencies(ObjImporterTest ObjImporter)
endif()
set_target_properties(ObjImporterTest PROPERTIES FOLDER "MagnumPlugins/ObjImporter/Test")
if(CORRADE_BUILD_STATIC AND NOT BUILD_PLUGINS_STATIC)
if(CORRADE_BUILD_STATIC AND NOT MAGNUM_OBJIMPORTER_BUILD_STATIC)
# CMake < 3.4 does this implicitly, but 3.4+ not anymore (see CMP0065).
# That's generally okay, *except if* the build is static, the executable
# uses a plugin manager and needs to share globals with the plugins (such

4
src/MagnumPlugins/TgaImageConverter/CMakeLists.txt

@ -39,7 +39,7 @@ add_plugin(TgaImageConverter
TgaImageConverter.conf
TgaImageConverter.cpp
TgaImageConverter.h)
if(BUILD_PLUGINS_STATIC AND BUILD_STATIC_PIC)
if(MAGNUM_TGAIMAGECONVERTER_BUILD_STATIC AND BUILD_STATIC_PIC)
set_target_properties(TgaImageConverter PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
target_link_libraries(TgaImageConverter PUBLIC MagnumTrade)
@ -55,7 +55,7 @@ install(FILES TgaImageConverter.h DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_D
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/configure.h DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/TgaImageConverter)
# Automatic static plugin import
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_TGAIMAGECONVERTER_BUILD_STATIC)
install(FILES importStaticPlugin.cpp DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/TgaImageConverter)
target_sources(TgaImageConverter INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/importStaticPlugin.cpp)
endif()

6
src/MagnumPlugins/TgaImageConverter/Test/CMakeLists.txt

@ -27,7 +27,7 @@
# https://gitlab.kitware.com/cmake/cmake/merge_requests/404) and since Corrade
# doesn't support dynamic plugins on iOS, this sorta works around that. Should
# be revisited when updating Travis to newer Xcode (xcode7.3 has CMake 3.6).
if(NOT BUILD_PLUGINS_STATIC)
if(NOT MAGNUM_TGAIMAGECONVERTER_BUILD_STATIC)
set(TGAIMAGECONVERTER_PLUGIN_FILENAME $<TARGET_FILE:TgaImageConverter>)
if(WITH_TGAIMPORTER)
set(TGAIMPORTER_PLUGIN_FILENAME $<TARGET_FILE:TgaImporter>)
@ -43,7 +43,7 @@ file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/configure.h
corrade_add_test(TgaImageConverterTest TgaImageConverterTest.cpp
LIBRARIES MagnumTrade)
target_include_directories(TgaImageConverterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_TGAIMAGECONVERTER_BUILD_STATIC)
target_link_libraries(TgaImageConverterTest PRIVATE TgaImageConverter)
if(WITH_TGAIMPORTER)
target_link_libraries(TgaImageConverterTest PRIVATE TgaImporter)
@ -56,7 +56,7 @@ else()
endif()
endif()
set_target_properties(TgaImageConverterTest PROPERTIES FOLDER "MagnumPlugins/TgaImageConverter/Test")
if(CORRADE_BUILD_STATIC AND NOT BUILD_PLUGINS_STATIC)
if(CORRADE_BUILD_STATIC AND NOT MAGNUM_TGAIMAGECONVERTER_BUILD_STATIC)
# CMake < 3.4 does this implicitly, but 3.4+ not anymore (see CMP0065).
# That's generally okay, *except if* the build is static, the executable
# uses a plugin manager and needs to share globals with the plugins (such

4
src/MagnumPlugins/TgaImporter/CMakeLists.txt

@ -40,7 +40,7 @@ add_plugin(TgaImporter
TgaImporter.cpp
TgaImporter.h
TgaHeader.h)
if(BUILD_PLUGINS_STATIC AND BUILD_STATIC_PIC)
if(MAGNUM_TGAIMPORTER_BUILD_STATIC AND BUILD_STATIC_PIC)
set_target_properties(TgaImporter PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
target_link_libraries(TgaImporter PUBLIC MagnumTrade)
@ -56,7 +56,7 @@ install(FILES TgaImporter.h ${CMAKE_CURRENT_BINARY_DIR}/configure.h
DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/TgaImporter)
# Automatic static plugin import
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_TGAIMPORTER_BUILD_STATIC)
install(FILES importStaticPlugin.cpp DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/TgaImporter)
target_sources(TgaImporter INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/importStaticPlugin.cpp)
endif()

6
src/MagnumPlugins/TgaImporter/Test/CMakeLists.txt

@ -33,7 +33,7 @@ endif()
# https://gitlab.kitware.com/cmake/cmake/merge_requests/404) and since Corrade
# doesn't support dynamic plugins on iOS, this sorta works around that. Should
# be revisited when updating Travis to newer Xcode (xcode7.3 has CMake 3.6).
if(NOT BUILD_PLUGINS_STATIC)
if(NOT MAGNUM_TGAIMPORTER_BUILD_STATIC)
set(TGAIMPORTER_PLUGIN_FILENAME $<TARGET_FILE:TgaImporter>)
endif()
@ -47,14 +47,14 @@ corrade_add_test(TgaImporterTest TgaImporterTest.cpp
LIBRARIES MagnumTrade
FILES file.tga)
target_include_directories(TgaImporterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_TGAIMPORTER_BUILD_STATIC)
target_link_libraries(TgaImporterTest PRIVATE TgaImporter)
else()
# So the plugins get properly built when building the test
add_dependencies(TgaImporterTest TgaImporter)
endif()
set_target_properties(TgaImporterTest PROPERTIES FOLDER "MagnumPlugins/TgaImporter/Test")
if(CORRADE_BUILD_STATIC AND NOT BUILD_PLUGINS_STATIC)
if(CORRADE_BUILD_STATIC AND NOT MAGNUM_TGAIMPORTER_BUILD_STATIC)
# CMake < 3.4 does this implicitly, but 3.4+ not anymore (see CMP0065).
# That's generally okay, *except if* the build is static, the executable
# uses a plugin manager and needs to share globals with the plugins (such

8
src/MagnumPlugins/WavAudioImporter/CMakeLists.txt

@ -39,10 +39,10 @@ add_library(WavAudioImporterObjects OBJECT
target_include_directories(WavAudioImporterObjects PUBLIC
$<TARGET_PROPERTY:Magnum,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:MagnumAudio,INTERFACE_INCLUDE_DIRECTORIES>)
if(NOT BUILD_PLUGINS_STATIC)
if(NOT MAGNUM_WAVAUDIOIMPORTER_BUILD_STATIC)
target_compile_definitions(WavAudioImporterObjects PRIVATE "WavAudioImporterObjects_EXPORTS")
endif()
if(NOT BUILD_PLUGINS_STATIC OR BUILD_STATIC_PIC)
if(NOT MAGNUM_WAVAUDIOIMPORTER_BUILD_STATIC OR BUILD_STATIC_PIC)
set_target_properties(WavAudioImporterObjects PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
set_target_properties(WavAudioImporterObjects PROPERTIES FOLDER "MagnumPlugins/WavAudioImporter")
@ -55,7 +55,7 @@ add_plugin(WavAudioImporter
WavImporter.cpp
WavImporter.h
$<TARGET_OBJECTS:WavAudioImporterObjects>)
if(BUILD_PLUGINS_STATIC AND BUILD_STATIC_PIC)
if(MAGNUM_WAVAUDIOIMPORTER_BUILD_STATIC AND BUILD_STATIC_PIC)
set_target_properties(WavAudioImporter PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
target_link_libraries(WavAudioImporter PUBLIC Magnum MagnumAudio)
@ -71,7 +71,7 @@ install(FILES WavImporter.h ${CMAKE_CURRENT_BINARY_DIR}/configure.h
DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/WavAudioImporter)
# Automatic static plugin import
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_WAVAUDIOIMPORTER_BUILD_STATIC)
install(FILES importStaticPlugin.cpp DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/WavAudioImporter)
target_sources(WavAudioImporter INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/importStaticPlugin.cpp)
endif()

6
src/MagnumPlugins/WavAudioImporter/Test/CMakeLists.txt

@ -33,7 +33,7 @@ endif()
# https://gitlab.kitware.com/cmake/cmake/merge_requests/404) and since Corrade
# doesn't support dynamic plugins on iOS, this sorta works around that. Should
# be revisited when updating Travis to newer Xcode (xcode7.3 has CMake 3.6).
if(NOT BUILD_PLUGINS_STATIC)
if(NOT MAGNUM_WAVAUDIOIMPORTER_BUILD_STATIC)
set(WAVAUDIOIMPORTER_PLUGIN_FILENAME $<TARGET_FILE:WavAudioImporter>)
endif()
@ -94,7 +94,7 @@ corrade_add_test(WavAudioImporterTest WavImporterTest.cpp
surround51Channel16.wav
surround71Channel24.wav)
target_include_directories(WavAudioImporterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
if(BUILD_PLUGINS_STATIC)
if(MAGNUM_WAVAUDIOIMPORTER_BUILD_STATIC)
target_link_libraries(WavAudioImporterTest PRIVATE WavAudioImporter)
else()
# So the plugins get properly built when building the test
@ -108,7 +108,7 @@ set_target_properties(
WavAudioImporterTest
WavAudioImporterWavHeaderTest
PROPERTIES FOLDER "MagnumPlugins/WavAudioImporter/Test")
if(CORRADE_BUILD_STATIC AND NOT BUILD_PLUGINS_STATIC)
if(CORRADE_BUILD_STATIC AND NOT MAGNUM_WAVAUDIOIMPORTER_BUILD_STATIC)
# CMake < 3.4 does this implicitly, but 3.4+ not anymore (see CMP0065).
# That's generally okay, *except if* the build is static, the executable
# uses a plugin manager and needs to share globals with the plugins (such

Loading…
Cancel
Save