Browse Source

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.
pull/77/head
Vladimír Vondruš 12 years ago
parent
commit
659bf2e44b
  1. 8
      doc/building.dox
  2. 2
      doc/getting-started.dox
  3. 5
      src/Magnum/Audio/CMakeLists.txt
  4. 24
      src/Magnum/CMakeLists.txt
  5. 5
      src/Magnum/DebugTools/CMakeLists.txt
  6. 21
      src/Magnum/MeshTools/CMakeLists.txt
  7. 5
      src/Magnum/Primitives/CMakeLists.txt
  8. 17
      src/Magnum/SceneGraph/CMakeLists.txt
  9. 5
      src/Magnum/Shaders/CMakeLists.txt
  10. 5
      src/Magnum/Shapes/CMakeLists.txt
  11. 5
      src/Magnum/Text/CMakeLists.txt
  12. 5
      src/Magnum/TextureTools/CMakeLists.txt
  13. 7
      src/MagnumExternal/OpenGL/GL/CMakeLists.txt
  14. 7
      src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt
  15. 7
      src/MagnumExternal/OpenGL/GLES3/CMakeLists.txt
  16. 15
      src/MagnumPlugins/MagnumFont/CMakeLists.txt
  17. 15
      src/MagnumPlugins/MagnumFontConverter/CMakeLists.txt
  18. 20
      src/MagnumPlugins/ObjImporter/CMakeLists.txt
  19. 15
      src/MagnumPlugins/TgaImageConverter/CMakeLists.txt
  20. 15
      src/MagnumPlugins/TgaImporter/CMakeLists.txt
  21. 12
      src/MagnumPlugins/WavAudioImporter/CMakeLists.txt

8
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

2
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/")

5
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

24
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}
$<TARGET_OBJECTS:MagnumMathObjects>)
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}
$<TARGET_OBJECTS:MagnumMathObjects>)
set_target_properties(MagnumMathTestLib PROPERTIES

5
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

21
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}
$<TARGET_OBJECTS:MagnumMeshToolsObjects>
${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

5
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

17
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}
$<TARGET_OBJECTS:MagnumSceneGraphObjects>
${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

5
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

5
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

5
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

5
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)

7
src/MagnumExternal/OpenGL/GL/CMakeLists.txt vendored

@ -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)

7
src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt vendored

@ -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()

7
src/MagnumExternal/OpenGL/GLES3/CMakeLists.txt vendored

@ -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)

15
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
$<TARGET_OBJECTS:MagnumFontObjects>
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()

15
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
$<TARGET_OBJECTS:MagnumFontConverterObjects>
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()

20
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
$<TARGET_OBJECTS:ObjImporterObjects>
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 $<TARGET_OBJECTS:ObjImporterObjects>)

15
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
$<TARGET_OBJECTS:TgaImageConverterObjects>
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)

15
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
$<TARGET_OBJECTS:TgaImporterObjects>
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)

12
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
$<TARGET_OBJECTS:WavAudioImporterObjects>
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)

Loading…
Cancel
Save