From 659bf2e44b47d437782eed3a2da7a1caa371a55c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sun, 5 Oct 2014 16:30:08 +0200 Subject: [PATCH] Use POSITION_INDEPENDENT_CODE CMake property. New in 2.8.9, much cleaner than the previous "solution". Also cleaned up the surroundings a bit. Fixed cases where PIC was forced independently of the settings, for plugins the PIC is now also set only when needed/requested. --- doc/building.dox | 8 +++---- doc/getting-started.dox | 2 +- src/Magnum/Audio/CMakeLists.txt | 5 ++-- src/Magnum/CMakeLists.txt | 24 ++++++++++--------- src/Magnum/DebugTools/CMakeLists.txt | 5 ++-- src/Magnum/MeshTools/CMakeLists.txt | 21 +++++++++------- src/Magnum/Primitives/CMakeLists.txt | 5 ++-- src/Magnum/SceneGraph/CMakeLists.txt | 17 +++++++------ src/Magnum/Shaders/CMakeLists.txt | 5 ++-- src/Magnum/Shapes/CMakeLists.txt | 5 ++-- src/Magnum/Text/CMakeLists.txt | 5 ++-- src/Magnum/TextureTools/CMakeLists.txt | 5 ++-- src/MagnumExternal/OpenGL/GL/CMakeLists.txt | 7 ++++-- .../OpenGL/GLES2/CMakeLists.txt | 7 ++++-- .../OpenGL/GLES3/CMakeLists.txt | 7 ++++-- src/MagnumPlugins/MagnumFont/CMakeLists.txt | 15 ++++++++---- .../MagnumFontConverter/CMakeLists.txt | 15 ++++++++---- src/MagnumPlugins/ObjImporter/CMakeLists.txt | 20 +++++++++++++--- .../TgaImageConverter/CMakeLists.txt | 15 ++++++++++-- src/MagnumPlugins/TgaImporter/CMakeLists.txt | 15 ++++++++++-- .../WavAudioImporter/CMakeLists.txt | 12 ++++++++-- 21 files changed, 149 insertions(+), 71 deletions(-) diff --git a/doc/building.dox b/doc/building.dox index 7ecd9a497..fc6a3e7d7 100644 --- a/doc/building.dox +++ b/doc/building.dox @@ -139,10 +139,10 @@ The libraries are build as shared by default. If you are developing for platform which doesn't support shared libraries or if you just want to link them statically, enable `BUILD_STATIC` to build the libraries as static. Building of static plugins is controlled with separate `BUILD_PLUGINS_STATIC` -variable. If you plan to use the static libraries with shared libraries later, -enable also position-independent code with `BUILD_STATIC_PIC`. If you want to -build with another compiler (e.g. Clang), pass `-DCMAKE_CXX_COMPILER=clang++` -to CMake. +variable. If you plan to use the static libraries and plugins with shared +libraries later, enable also position-independent code with `BUILD_STATIC_PIC`. +If you want to build with another compiler (e.g. Clang), pass +`-DCMAKE_CXX_COMPILER=clang++` to CMake. Libraries and static plugins built in `Debug` configuration (e.g. with `CMAKE_BUILD_TYPE` set to `Debug`) have `-d` suffix to make it possible to have diff --git a/doc/getting-started.dox b/doc/getting-started.dox index 21421ec26..396fc4e92 100644 --- a/doc/getting-started.dox +++ b/doc/getting-started.dox @@ -83,7 +83,7 @@ project-wide `CMakeLists.txt`. It just sets up project name, specifies module directory and delegates everything important to `CMakeLists.txt` in `src/` subdirectory. @code -cmake_minimum_required(VERSION 2.8.8) +cmake_minimum_required(VERSION 2.8.9) project(MyApplication) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/modules/") diff --git a/src/Magnum/Audio/CMakeLists.txt b/src/Magnum/Audio/CMakeLists.txt index 80b87f265..3cbcd5326 100644 --- a/src/Magnum/Audio/CMakeLists.txt +++ b/src/Magnum/Audio/CMakeLists.txt @@ -45,14 +45,15 @@ set(MagnumAudio_HEADERS visibility.h) +# Audio library add_library(MagnumAudio ${SHARED_OR_STATIC} ${MagnumAudio_SRCS} ${MagnumAudio_HEADERS}) set_target_properties(MagnumAudio PROPERTIES DEBUG_POSTFIX "-d") if(BUILD_STATIC_PIC) - # TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property - set_target_properties(MagnumAudio PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") + set_target_properties(MagnumAudio PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() + target_link_libraries(MagnumAudio ${CORRADE_PLUGINMANAGER_LIBRARIES} ${OPENAL_LIBRARY}) install(TARGETS MagnumAudio diff --git a/src/Magnum/CMakeLists.txt b/src/Magnum/CMakeLists.txt index 588bc6d3e..5fe1f4302 100644 --- a/src/Magnum/CMakeLists.txt +++ b/src/Magnum/CMakeLists.txt @@ -178,24 +178,26 @@ set(MagnumMath_SRCS Math/Functions.cpp Math/instantiation.cpp) -# Main library +# Objects shared between main and test library add_library(MagnumMathObjects OBJECT ${MagnumMath_SRCS}) +if(NOT BUILD_STATIC) + set_target_properties(MagnumMathObjects PROPERTIES COMPILE_FLAGS "-DMagnumMathObjects_EXPORTS") +endif() +if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) + set_target_properties(MagnumMathObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) +endif() + +# Main library add_library(Magnum ${SHARED_OR_STATIC} ${Magnum_SRCS} ${Magnum_HEADERS} ${Magnum_PRIVATE_HEADERS} $) set_target_properties(Magnum PROPERTIES DEBUG_POSTFIX "-d") - -# TODO: fix when CMake sets target_EXPORTS for OBJECT targets as well -if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) - # Set shared library flags for the objects, as they will be part of shared lib - # TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property - set_target_properties(MagnumMathObjects PROPERTIES COMPILE_FLAGS "-DMagnumMathObjects_EXPORTS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") - set_target_properties(Magnum PROPERTIES COMPILE_FLAGS "-DFlextGL_EXPORTS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") -else() - set_target_properties(MagnumMathObjects PROPERTIES COMPILE_FLAGS "-DMagnumMathObjects_EXPORTS") +if(NOT BUILD_STATIC) set_target_properties(Magnum PROPERTIES COMPILE_FLAGS "-DFlextGL_EXPORTS") +elseif(BUILD_STATIC_PIC) + set_target_properties(Magnum PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() set(Magnum_LIBS @@ -258,7 +260,7 @@ if(WITH_TEXTURETOOLS) endif() if(BUILD_TESTS) - # Libraries with graceful assert for testing + # Library with graceful assert for testing add_library(MagnumMathTestLib ${SHARED_OR_STATIC} $) set_target_properties(MagnumMathTestLib PROPERTIES diff --git a/src/Magnum/DebugTools/CMakeLists.txt b/src/Magnum/DebugTools/CMakeLists.txt index d7dd783b3..50f3c7ac8 100644 --- a/src/Magnum/DebugTools/CMakeLists.txt +++ b/src/Magnum/DebugTools/CMakeLists.txt @@ -66,15 +66,16 @@ set(MagnumDebugTools_PRIVATE_HEADERS Implementation/PointRenderer.h Implementation/SphereRenderer.h) +# DebugTools library add_library(MagnumDebugTools ${SHARED_OR_STATIC} ${MagnumDebugTools_SRCS} ${MagnumDebugTools_HEADERS} ${MagnumDebugTools_PRIVATE_HEADERS}) set_target_properties(MagnumDebugTools PROPERTIES DEBUG_POSTFIX "-d") if(BUILD_STATIC_PIC) - # TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property - set_target_properties(MagnumDebugTools PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") + set_target_properties(MagnumDebugTools PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() + target_link_libraries(MagnumDebugTools Magnum MagnumMeshTools diff --git a/src/Magnum/MeshTools/CMakeLists.txt b/src/Magnum/MeshTools/CMakeLists.txt index 39be0a151..a7c84a0e3 100644 --- a/src/Magnum/MeshTools/CMakeLists.txt +++ b/src/Magnum/MeshTools/CMakeLists.txt @@ -52,27 +52,26 @@ set(MagnumMeshTools_HEADERS visibility.h) -# Set shared library flags for the objects, as they will be part of shared lib -# TODO: fix when CMake sets target_EXPORTS for OBJECT targets as well +# Objects shared between main and test library add_library(MagnumMeshToolsObjects OBJECT ${MagnumMeshTools_SRCS} ${MagnumMeshTools_HEADERS}) -if(NOT BUILD_SHARED OR BUILD_STATIC_PIC) - # TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property - set_target_properties(MagnumMeshToolsObjects PROPERTIES COMPILE_FLAGS "-DMagnumMeshToolsObjects_EXPORTS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") -else() +if(NOT BUILD_STATIC) set_target_properties(MagnumMeshToolsObjects PROPERTIES COMPILE_FLAGS "-DMagnumMeshToolsObjects_EXPORTS") endif() +if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) + set_target_properties(MagnumMeshToolsObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) +endif() -# Main library +# Main MeshTools library add_library(MagnumMeshTools ${SHARED_OR_STATIC} $ ${MagnumMeshTools_GracefulAssert_SRCS}) set_target_properties(MagnumMeshTools PROPERTIES DEBUG_POSTFIX "-d") if(BUILD_STATIC_PIC) - # TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property - set_target_properties(MagnumMeshTools PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") + set_target_properties(MagnumMeshTools PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() + target_link_libraries(MagnumMeshTools Magnum) install(TARGETS MagnumMeshTools @@ -89,6 +88,10 @@ if(BUILD_TESTS) set_target_properties(MagnumMeshToolsTestLib PROPERTIES COMPILE_FLAGS "-DCORRADE_GRACEFUL_ASSERT -DMagnumMeshTools_EXPORTS" DEBUG_POSTFIX "-d") + if(BUILD_STATIC_PIC) + set_target_properties(MagnumMeshToolsTestLib PROPERTIES POSITION_INDEPENDENT_CODE ON) + endif() + target_link_libraries(MagnumMeshToolsTestLib Magnum) # On Windows we need to install first and then run the tests to avoid "DLL diff --git a/src/Magnum/Primitives/CMakeLists.txt b/src/Magnum/Primitives/CMakeLists.txt index 04c2976cf..47ff88bce 100644 --- a/src/Magnum/Primitives/CMakeLists.txt +++ b/src/Magnum/Primitives/CMakeLists.txt @@ -57,15 +57,16 @@ set(MagnumPrimitives_PRIVATE_HEADERS Implementation/Spheroid.h Implementation/WireframeSpheroid.h) +# Primitives library add_library(MagnumPrimitives ${SHARED_OR_STATIC} ${MagnumPrimitives_SRCS} ${MagnumPrimitives_HEADERS} ${MagnumPrimitives_PRIVATE_HEADERS}) set_target_properties(MagnumPrimitives PROPERTIES DEBUG_POSTFIX "-d") if(BUILD_STATIC_PIC) - # TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property - set_target_properties(MagnumPrimitives PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") + set_target_properties(MagnumPrimitives PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() + target_link_libraries(MagnumPrimitives Magnum) install(TARGETS MagnumPrimitives diff --git a/src/Magnum/SceneGraph/CMakeLists.txt b/src/Magnum/SceneGraph/CMakeLists.txt index a09f808eb..0bce9632b 100644 --- a/src/Magnum/SceneGraph/CMakeLists.txt +++ b/src/Magnum/SceneGraph/CMakeLists.txt @@ -69,27 +69,26 @@ set(MagnumSceneGraph_HEADERS visibility.h) -# Set shared library flags for the objects, as they will be part of shared lib -# TODO: fix when CMake sets target_EXPORTS for OBJECT targets as well +# Objects shared between main and test library add_library(MagnumSceneGraphObjects OBJECT ${MagnumSceneGraph_SRCS} ${MagnumSceneGraph_HEADERS}) -if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) - # TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property - set_target_properties(MagnumSceneGraphObjects PROPERTIES COMPILE_FLAGS "-DMagnumSceneGraphObjects_EXPORTS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") -else() +if(NOT BUILD_STATIC) set_target_properties(MagnumSceneGraphObjects PROPERTIES COMPILE_FLAGS "-DMagnumSceneGraphObjects_EXPORTS") endif() +if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) + set_target_properties(MagnumSceneGraphObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) +endif() -# SceneGraph library +# Main SceneGraph library add_library(MagnumSceneGraph ${SHARED_OR_STATIC} $ ${MagnumSceneGraph_GracefulAssert_SRCS}) set_target_properties(MagnumSceneGraph PROPERTIES DEBUG_POSTFIX "-d") if(BUILD_STATIC_PIC) - # TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property - set_target_properties(MagnumSceneGraph PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") + set_target_properties(MagnumSceneGraph PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() + target_link_libraries(MagnumSceneGraph Magnum) install(TARGETS MagnumSceneGraph diff --git a/src/Magnum/Shaders/CMakeLists.txt b/src/Magnum/Shaders/CMakeLists.txt index 04a0a0db9..18386b079 100644 --- a/src/Magnum/Shaders/CMakeLists.txt +++ b/src/Magnum/Shaders/CMakeLists.txt @@ -60,15 +60,16 @@ if(BUILD_STATIC) endif() endif() +# Shaders library add_library(MagnumShaders ${SHARED_OR_STATIC} ${MagnumShaders_SRCS} ${MagnumShaders_HEADERS} ${MagnumShaders_PRIVATE_HEADERS}) set_target_properties(MagnumShaders PROPERTIES DEBUG_POSTFIX "-d") if(BUILD_STATIC_PIC) - # TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property - set_target_properties(MagnumShaders PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") + set_target_properties(MagnumShaders PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() + target_link_libraries(MagnumShaders Magnum) install(TARGETS MagnumShaders diff --git a/src/Magnum/Shapes/CMakeLists.txt b/src/Magnum/Shapes/CMakeLists.txt index 42f90ba38..e63c05f9d 100644 --- a/src/Magnum/Shapes/CMakeLists.txt +++ b/src/Magnum/Shapes/CMakeLists.txt @@ -64,15 +64,16 @@ set(MagnumShapes_HEADERS # Header files to display in project view of IDEs only set(MagnumShapes_PRIVATE_HEADERS Implementation/CollisionDispatch.h) +# Shapes library add_library(MagnumShapes ${SHARED_OR_STATIC} ${MagnumShapes_SRCS} ${MagnumShapes_HEADERS} ${MagnumShapes_PRIVATE_HEADERS}) set_target_properties(MagnumShapes PROPERTIES DEBUG_POSTFIX "-d") if(BUILD_STATIC_PIC) - # TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property - set_target_properties(MagnumShapes PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") + set_target_properties(MagnumShapes PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() + target_link_libraries(MagnumShapes Magnum MagnumSceneGraph) install(TARGETS MagnumShapes diff --git a/src/Magnum/Text/CMakeLists.txt b/src/Magnum/Text/CMakeLists.txt index 4127a15b6..431bc0240 100644 --- a/src/Magnum/Text/CMakeLists.txt +++ b/src/Magnum/Text/CMakeLists.txt @@ -45,14 +45,15 @@ if(MAGNUM_BUILD_DEPRECATED) TextRenderer.h) endif() +# Text library add_library(MagnumText ${SHARED_OR_STATIC} ${MagnumText_SRCS} ${MagnumText_HEADERS}) set_target_properties(MagnumText PROPERTIES DEBUG_POSTFIX "-d") if(BUILD_STATIC_PIC) - # TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property - set_target_properties(MagnumText PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") + set_target_properties(MagnumText PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() + target_link_libraries(MagnumText Magnum MagnumTextureTools) install(TARGETS MagnumText diff --git a/src/Magnum/TextureTools/CMakeLists.txt b/src/Magnum/TextureTools/CMakeLists.txt index 89ae955b5..19207fed6 100644 --- a/src/Magnum/TextureTools/CMakeLists.txt +++ b/src/Magnum/TextureTools/CMakeLists.txt @@ -40,14 +40,15 @@ if(BUILD_STATIC) list(APPEND MagnumTextureTools_HEADERS resourceImport.hpp) endif() +# TextureTools library add_library(MagnumTextureTools ${SHARED_OR_STATIC} ${MagnumTextureTools_SRCS} ${MagnumTextureTools_HEADERS}) set_target_properties(MagnumTextureTools PROPERTIES DEBUG_POSTFIX "-d") if(BUILD_STATIC_PIC) - # TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property - set_target_properties(MagnumTextureTools PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") + set_target_properties(MagnumTextureTools PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() + target_link_libraries(MagnumTextureTools Magnum) if(WITH_DISTANCEFIELDCONVERTER) diff --git a/src/MagnumExternal/OpenGL/GL/CMakeLists.txt b/src/MagnumExternal/OpenGL/GL/CMakeLists.txt index e9976019f..61d90fa98 100644 --- a/src/MagnumExternal/OpenGL/GL/CMakeLists.txt +++ b/src/MagnumExternal/OpenGL/GL/CMakeLists.txt @@ -27,9 +27,12 @@ add_library(MagnumFlextGLObjects OBJECT flextGL.cpp) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang") - set_target_properties(MagnumFlextGLObjects PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} -fvisibility=hidden -DFlextGL_EXPORTS") + set_target_properties(MagnumFlextGLObjects PROPERTIES COMPILE_FLAGS "-fvisibility=hidden -DFlextGL_EXPORTS") else() - set_target_properties(MagnumFlextGLObjects PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} -DFlextGL_EXPORTS") + set_target_properties(MagnumFlextGLObjects PROPERTIES COMPILE_FLAGS "-DFlextGL_EXPORTS") +endif() +if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) + set_target_properties(MagnumFlextGLObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() install(FILES flextGL.h DESTINATION ${MAGNUM_EXTERNAL_INCLUDE_INSTALL_DIR}/OpenGL/GL) diff --git a/src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt b/src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt index 11840c3b8..2df28e0dd 100644 --- a/src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt +++ b/src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt @@ -29,9 +29,12 @@ if(NOT CORRADE_TARGET_NACL AND NOT CORRADE_TARGET_EMSCRIPTEN) add_library(MagnumFlextGLObjects OBJECT flextGL.cpp) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang") - set_target_properties(MagnumFlextGLObjects PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} -fvisibility=hidden -DFlextGL_EXPORTS") + set_target_properties(MagnumFlextGLObjects PROPERTIES COMPILE_FLAGS "-fvisibility=hidden -DFlextGL_EXPORTS") else() - set_target_properties(MagnumFlextGLObjects PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} -DFlextGL_EXPORTS") + set_target_properties(MagnumFlextGLObjects PROPERTIES COMPILE_FLAGS "-DFlextGL_EXPORTS") + endif() + if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) + set_target_properties(MagnumFlextGLObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() endif() diff --git a/src/MagnumExternal/OpenGL/GLES3/CMakeLists.txt b/src/MagnumExternal/OpenGL/GLES3/CMakeLists.txt index 31dec6995..ca8bb5cb2 100644 --- a/src/MagnumExternal/OpenGL/GLES3/CMakeLists.txt +++ b/src/MagnumExternal/OpenGL/GLES3/CMakeLists.txt @@ -27,9 +27,12 @@ add_library(MagnumFlextGLObjects OBJECT flextGL.cpp) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang") - set_target_properties(MagnumFlextGLObjects PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} -fvisibility=hidden -DFlextGL_EXPORTS") + set_target_properties(MagnumFlextGLObjects PROPERTIES COMPILE_FLAGS "-fvisibility=hidden -DFlextGL_EXPORTS") else() - set_target_properties(MagnumFlextGLObjects PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} -DFlextGL_EXPORTS") + set_target_properties(MagnumFlextGLObjects PROPERTIES COMPILE_FLAGS "-DFlextGL_EXPORTS") +endif() +if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) + set_target_properties(MagnumFlextGLObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() install(FILES flextGL.h DESTINATION ${MAGNUM_EXTERNAL_INCLUDE_INSTALL_DIR}/OpenGL/GLES3) diff --git a/src/MagnumPlugins/MagnumFont/CMakeLists.txt b/src/MagnumPlugins/MagnumFont/CMakeLists.txt index 642273152..034cf07e4 100644 --- a/src/MagnumPlugins/MagnumFont/CMakeLists.txt +++ b/src/MagnumPlugins/MagnumFont/CMakeLists.txt @@ -23,21 +23,28 @@ # DEALINGS IN THE SOFTWARE. # -set(MagnumFont_SOURCES +set(MagnumFont_SRCS MagnumFont.cpp) set(MagnumFont_HEADERS MagnumFont.h) -add_library(MagnumFontObjects OBJECT ${MagnumFont_SOURCES}) -set_target_properties(MagnumFontObjects PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") +# Objects shared between plugin and test library +add_library(MagnumFontObjects OBJECT ${MagnumFont_SRCS}) +if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) + set_target_properties(MagnumFontObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) +endif() +# MagnumFont plugin add_plugin(MagnumFont ${MAGNUM_PLUGINS_FONT_DEBUG_INSTALL_DIR} ${MAGNUM_PLUGINS_FONT_RELEASE_INSTALL_DIR} MagnumFont.conf $ pluginRegistration.cpp) -target_link_libraries(MagnumFont Magnum MagnumText) +if(BUILD_STATIC_PIC) + set_target_properties(MagnumFont PROPERTIES POSITION_INDEPENDENT_CODE ON) +endif() +target_link_libraries(MagnumFont Magnum MagnumText) if(CORRADE_TARGET_WINDOWS) target_link_libraries(MagnumFont TgaImporter) endif() diff --git a/src/MagnumPlugins/MagnumFontConverter/CMakeLists.txt b/src/MagnumPlugins/MagnumFontConverter/CMakeLists.txt index 01012b877..b56fc0c6d 100644 --- a/src/MagnumPlugins/MagnumFontConverter/CMakeLists.txt +++ b/src/MagnumPlugins/MagnumFontConverter/CMakeLists.txt @@ -23,21 +23,28 @@ # DEALINGS IN THE SOFTWARE. # -set(MagnumFontConverter_SOURCES +set(MagnumFontConverter_SRCS MagnumFontConverter.cpp) set(MagnumFontConverter_HEADERS MagnumFontConverter.h) -add_library(MagnumFontConverterObjects OBJECT ${MagnumFontConverter_SOURCES}) -set_target_properties(MagnumFontConverterObjects PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") +# Objects shared between plugin and test library +add_library(MagnumFontConverterObjects OBJECT ${MagnumFontConverter_SRCS}) +if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) + set_target_properties(MagnumFontConverterObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) +endif() +# MagnumFontConverter plugin add_plugin(MagnumFontConverter ${MAGNUM_PLUGINS_FONTCONVERTER_DEBUG_INSTALL_DIR} ${MAGNUM_PLUGINS_FONTCONVERTER_RELEASE_INSTALL_DIR} MagnumFontConverter.conf $ pluginRegistration.cpp) -target_link_libraries(MagnumFontConverter Magnum MagnumText) +if(BUILD_STATIC_PIC) + set_target_properties(MagnumFontConverter PROPERTIES POSITION_INDEPENDENT_CODE ON) +endif() +target_link_libraries(MagnumFontConverter Magnum MagnumText) if(CORRADE_TARGET_WINDOWS) target_link_libraries(MagnumFontConverter TgaImageConverter) endif() diff --git a/src/MagnumPlugins/ObjImporter/CMakeLists.txt b/src/MagnumPlugins/ObjImporter/CMakeLists.txt index 658c014e1..316d3f538 100644 --- a/src/MagnumPlugins/ObjImporter/CMakeLists.txt +++ b/src/MagnumPlugins/ObjImporter/CMakeLists.txt @@ -23,18 +23,32 @@ # DEALINGS IN THE SOFTWARE. # -add_library(ObjImporterObjects OBJECT ObjImporter.cpp) +set(ObjImporter_SRCS + ObjImporter.cpp) + +set(ObjImporter_HEADERS + ObjImporter.h) + +# Objects shared between plugin and test library +add_library(ObjImporterObjects OBJECT + ${ObjImporter_SRCS} + ${ObjImporter_HEADERS}) if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) - set_target_properties(ObjImporterObjects PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") + set_target_properties(ObjImporterObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() +# ObjImporter plugin add_plugin(ObjImporter ${MAGNUM_PLUGINS_IMPORTER_DEBUG_INSTALL_DIR} ${MAGNUM_PLUGINS_IMPORTER_RELEASE_INSTALL_DIR} ObjImporter.conf $ pluginRegistration.cpp) +if(BUILD_STATIC_PIC) + set_target_properties(ObjImporter PROPERTIES POSITION_INDEPENDENT_CODE ON) +endif() + target_link_libraries(ObjImporter Magnum MagnumMeshTools) -install(FILES ObjImporter.h DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/ObjImporter) +install(FILES ${ObjImporter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/ObjImporter) if(BUILD_TESTS) add_library(MagnumObjImporterTestLib STATIC $) diff --git a/src/MagnumPlugins/TgaImageConverter/CMakeLists.txt b/src/MagnumPlugins/TgaImageConverter/CMakeLists.txt index c04fdf111..06f488163 100644 --- a/src/MagnumPlugins/TgaImageConverter/CMakeLists.txt +++ b/src/MagnumPlugins/TgaImageConverter/CMakeLists.txt @@ -29,13 +29,24 @@ set(TgaImageConverter_SRCS set(TgaImageConverter_HEADERS TgaImageConverter.h) -add_library(TgaImageConverterObjects OBJECT ${TgaImageConverter_SRCS}) -set_target_properties(TgaImageConverterObjects PROPERTIES COMPILE_FLAGS "-DTgaImageConverterObjects_EXPORTS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") +# Objects shared between plugin and test library +add_library(TgaImageConverterObjects OBJECT + ${TgaImageConverter_SRCS} + ${TgaImageConverter_HEADERS}) +set_target_properties(TgaImageConverterObjects PROPERTIES COMPILE_FLAGS "-DTgaImageConverterObjects_EXPORTS") +if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) + set_target_properties(TgaImageConverterObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) +endif() +# TgaImageConverter plugin add_plugin(TgaImageConverter ${MAGNUM_PLUGINS_IMAGECONVERTER_DEBUG_INSTALL_DIR} ${MAGNUM_PLUGINS_IMAGECONVERTER_RELEASE_INSTALL_DIR} TgaImageConverter.conf $ pluginRegistration.cpp) +if(BUILD_STATIC_PIC) + set_target_properties(TgaImageConverter PROPERTIES POSITION_INDEPENDENT_CODE ON) +endif() + target_link_libraries(TgaImageConverter Magnum) install(FILES ${TgaImageConverter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/TgaImageConverter) diff --git a/src/MagnumPlugins/TgaImporter/CMakeLists.txt b/src/MagnumPlugins/TgaImporter/CMakeLists.txt index ab781752a..b140a6ece 100644 --- a/src/MagnumPlugins/TgaImporter/CMakeLists.txt +++ b/src/MagnumPlugins/TgaImporter/CMakeLists.txt @@ -30,13 +30,24 @@ set(TgaImporter_HEADERS TgaHeader.h TgaImporter.h) -add_library(TgaImporterObjects OBJECT ${TgaImporter_SRCS}) -set_target_properties(TgaImporterObjects PROPERTIES COMPILE_FLAGS "-DTgaImporterObjects_EXPORTS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") +# Objects shared between plugin and test library +add_library(TgaImporterObjects OBJECT + ${TgaImporter_SRCS} + ${TgaImporter_HEADERS}) +set_target_properties(TgaImporterObjects PROPERTIES COMPILE_FLAGS "-DTgaImporterObjects_EXPORTS") +if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) + set_target_properties(TgaImporterObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) +endif() +# TgaImporter plugin add_plugin(TgaImporter ${MAGNUM_PLUGINS_IMPORTER_DEBUG_INSTALL_DIR} ${MAGNUM_PLUGINS_IMPORTER_RELEASE_INSTALL_DIR} TgaImporter.conf $ pluginRegistration.cpp) +if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) + set_target_properties(TgaImporter PROPERTIES POSITION_INDEPENDENT_CODE ON) +endif() + target_link_libraries(TgaImporter Magnum) install(FILES ${TgaImporter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/TgaImporter) diff --git a/src/MagnumPlugins/WavAudioImporter/CMakeLists.txt b/src/MagnumPlugins/WavAudioImporter/CMakeLists.txt index 0bc173590..7ad73fcf9 100644 --- a/src/MagnumPlugins/WavAudioImporter/CMakeLists.txt +++ b/src/MagnumPlugins/WavAudioImporter/CMakeLists.txt @@ -34,15 +34,23 @@ set(WavAudioImporter_HEADERS WavHeader.h WavImporter.h) -add_library(WavAudioImporterObjects OBJECT ${WavAudioImporter_SRCS}) +# Objects shared between plugin and test library +add_library(WavAudioImporterObjects OBJECT + ${WavAudioImporter_SRCS} + ${WavAudioImporter_HEADERS}) if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) - set_target_properties(WavAudioImporterObjects PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") + set_target_properties(WavAudioImporterObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() +# WavAudioImporter plugin add_plugin(WavAudioImporter ${MAGNUM_PLUGINS_AUDIOIMPORTER_DEBUG_INSTALL_DIR} ${MAGNUM_PLUGINS_AUDIOIMPORTER_RELEASE_INSTALL_DIR} WavAudioImporter.conf $ pluginRegistration.cpp) +if(BUILD_STATIC_PIC) + set_target_properties(WavAudioImporter PROPERTIES POSITION_INDEPENDENT_CODE ON) +endif() + target_link_libraries(WavAudioImporter Magnum MagnumAudio) install(FILES ${WavAudioImporter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/WavAudioImporter)