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 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. them statically, enable `BUILD_STATIC` to build the libraries as static.
Building of static plugins is controlled with separate `BUILD_PLUGINS_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, variable. If you plan to use the static libraries and plugins with shared
enable also position-independent code with `BUILD_STATIC_PIC`. If you want to libraries later, enable also position-independent code with `BUILD_STATIC_PIC`.
build with another compiler (e.g. Clang), pass `-DCMAKE_CXX_COMPILER=clang++` If you want to build with another compiler (e.g. Clang), pass
to CMake. `-DCMAKE_CXX_COMPILER=clang++` to CMake.
Libraries and static plugins built in `Debug` configuration (e.g. with 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 `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/` directory and delegates everything important to `CMakeLists.txt` in `src/`
subdirectory. subdirectory.
@code @code
cmake_minimum_required(VERSION 2.8.8) cmake_minimum_required(VERSION 2.8.9)
project(MyApplication) project(MyApplication)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/modules/") 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) visibility.h)
# Audio library
add_library(MagnumAudio ${SHARED_OR_STATIC} add_library(MagnumAudio ${SHARED_OR_STATIC}
${MagnumAudio_SRCS} ${MagnumAudio_SRCS}
${MagnumAudio_HEADERS}) ${MagnumAudio_HEADERS})
set_target_properties(MagnumAudio PROPERTIES DEBUG_POSTFIX "-d") set_target_properties(MagnumAudio PROPERTIES DEBUG_POSTFIX "-d")
if(BUILD_STATIC_PIC) if(BUILD_STATIC_PIC)
# TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property set_target_properties(MagnumAudio PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(MagnumAudio PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}")
endif() endif()
target_link_libraries(MagnumAudio ${CORRADE_PLUGINMANAGER_LIBRARIES} ${OPENAL_LIBRARY}) target_link_libraries(MagnumAudio ${CORRADE_PLUGINMANAGER_LIBRARIES} ${OPENAL_LIBRARY})
install(TARGETS MagnumAudio install(TARGETS MagnumAudio

24
src/Magnum/CMakeLists.txt

@ -178,24 +178,26 @@ set(MagnumMath_SRCS
Math/Functions.cpp Math/Functions.cpp
Math/instantiation.cpp) Math/instantiation.cpp)
# Main library # Objects shared between main and test library
add_library(MagnumMathObjects OBJECT ${MagnumMath_SRCS}) 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} add_library(Magnum ${SHARED_OR_STATIC}
${Magnum_SRCS} ${Magnum_SRCS}
${Magnum_HEADERS} ${Magnum_HEADERS}
${Magnum_PRIVATE_HEADERS} ${Magnum_PRIVATE_HEADERS}
$<TARGET_OBJECTS:MagnumMathObjects>) $<TARGET_OBJECTS:MagnumMathObjects>)
set_target_properties(Magnum PROPERTIES DEBUG_POSTFIX "-d") set_target_properties(Magnum PROPERTIES DEBUG_POSTFIX "-d")
if(NOT BUILD_STATIC)
# 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")
set_target_properties(Magnum PROPERTIES COMPILE_FLAGS "-DFlextGL_EXPORTS") set_target_properties(Magnum PROPERTIES COMPILE_FLAGS "-DFlextGL_EXPORTS")
elseif(BUILD_STATIC_PIC)
set_target_properties(Magnum PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif() endif()
set(Magnum_LIBS set(Magnum_LIBS
@ -258,7 +260,7 @@ if(WITH_TEXTURETOOLS)
endif() endif()
if(BUILD_TESTS) if(BUILD_TESTS)
# Libraries with graceful assert for testing # Library with graceful assert for testing
add_library(MagnumMathTestLib ${SHARED_OR_STATIC} add_library(MagnumMathTestLib ${SHARED_OR_STATIC}
$<TARGET_OBJECTS:MagnumMathObjects>) $<TARGET_OBJECTS:MagnumMathObjects>)
set_target_properties(MagnumMathTestLib PROPERTIES set_target_properties(MagnumMathTestLib PROPERTIES

5
src/Magnum/DebugTools/CMakeLists.txt

@ -66,15 +66,16 @@ set(MagnumDebugTools_PRIVATE_HEADERS
Implementation/PointRenderer.h Implementation/PointRenderer.h
Implementation/SphereRenderer.h) Implementation/SphereRenderer.h)
# DebugTools library
add_library(MagnumDebugTools ${SHARED_OR_STATIC} add_library(MagnumDebugTools ${SHARED_OR_STATIC}
${MagnumDebugTools_SRCS} ${MagnumDebugTools_SRCS}
${MagnumDebugTools_HEADERS} ${MagnumDebugTools_HEADERS}
${MagnumDebugTools_PRIVATE_HEADERS}) ${MagnumDebugTools_PRIVATE_HEADERS})
set_target_properties(MagnumDebugTools PROPERTIES DEBUG_POSTFIX "-d") set_target_properties(MagnumDebugTools PROPERTIES DEBUG_POSTFIX "-d")
if(BUILD_STATIC_PIC) if(BUILD_STATIC_PIC)
# TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property set_target_properties(MagnumDebugTools PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(MagnumDebugTools PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}")
endif() endif()
target_link_libraries(MagnumDebugTools target_link_libraries(MagnumDebugTools
Magnum Magnum
MagnumMeshTools MagnumMeshTools

21
src/Magnum/MeshTools/CMakeLists.txt

@ -52,27 +52,26 @@ set(MagnumMeshTools_HEADERS
visibility.h) visibility.h)
# Set shared library flags for the objects, as they will be part of shared lib # Objects shared between main and test library
# TODO: fix when CMake sets target_EXPORTS for OBJECT targets as well
add_library(MagnumMeshToolsObjects OBJECT add_library(MagnumMeshToolsObjects OBJECT
${MagnumMeshTools_SRCS} ${MagnumMeshTools_SRCS}
${MagnumMeshTools_HEADERS}) ${MagnumMeshTools_HEADERS})
if(NOT BUILD_SHARED OR BUILD_STATIC_PIC) if(NOT BUILD_STATIC)
# 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()
set_target_properties(MagnumMeshToolsObjects PROPERTIES COMPILE_FLAGS "-DMagnumMeshToolsObjects_EXPORTS") set_target_properties(MagnumMeshToolsObjects PROPERTIES COMPILE_FLAGS "-DMagnumMeshToolsObjects_EXPORTS")
endif() 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} add_library(MagnumMeshTools ${SHARED_OR_STATIC}
$<TARGET_OBJECTS:MagnumMeshToolsObjects> $<TARGET_OBJECTS:MagnumMeshToolsObjects>
${MagnumMeshTools_GracefulAssert_SRCS}) ${MagnumMeshTools_GracefulAssert_SRCS})
set_target_properties(MagnumMeshTools PROPERTIES DEBUG_POSTFIX "-d") set_target_properties(MagnumMeshTools PROPERTIES DEBUG_POSTFIX "-d")
if(BUILD_STATIC_PIC) if(BUILD_STATIC_PIC)
# TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property set_target_properties(MagnumMeshTools PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(MagnumMeshTools PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}")
endif() endif()
target_link_libraries(MagnumMeshTools Magnum) target_link_libraries(MagnumMeshTools Magnum)
install(TARGETS MagnumMeshTools install(TARGETS MagnumMeshTools
@ -89,6 +88,10 @@ if(BUILD_TESTS)
set_target_properties(MagnumMeshToolsTestLib PROPERTIES set_target_properties(MagnumMeshToolsTestLib PROPERTIES
COMPILE_FLAGS "-DCORRADE_GRACEFUL_ASSERT -DMagnumMeshTools_EXPORTS" COMPILE_FLAGS "-DCORRADE_GRACEFUL_ASSERT -DMagnumMeshTools_EXPORTS"
DEBUG_POSTFIX "-d") DEBUG_POSTFIX "-d")
if(BUILD_STATIC_PIC)
set_target_properties(MagnumMeshToolsTestLib PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
target_link_libraries(MagnumMeshToolsTestLib Magnum) target_link_libraries(MagnumMeshToolsTestLib Magnum)
# On Windows we need to install first and then run the tests to avoid "DLL # 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/Spheroid.h
Implementation/WireframeSpheroid.h) Implementation/WireframeSpheroid.h)
# Primitives library
add_library(MagnumPrimitives ${SHARED_OR_STATIC} add_library(MagnumPrimitives ${SHARED_OR_STATIC}
${MagnumPrimitives_SRCS} ${MagnumPrimitives_SRCS}
${MagnumPrimitives_HEADERS} ${MagnumPrimitives_HEADERS}
${MagnumPrimitives_PRIVATE_HEADERS}) ${MagnumPrimitives_PRIVATE_HEADERS})
set_target_properties(MagnumPrimitives PROPERTIES DEBUG_POSTFIX "-d") set_target_properties(MagnumPrimitives PROPERTIES DEBUG_POSTFIX "-d")
if(BUILD_STATIC_PIC) if(BUILD_STATIC_PIC)
# TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property set_target_properties(MagnumPrimitives PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(MagnumPrimitives PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}")
endif() endif()
target_link_libraries(MagnumPrimitives Magnum) target_link_libraries(MagnumPrimitives Magnum)
install(TARGETS MagnumPrimitives install(TARGETS MagnumPrimitives

17
src/Magnum/SceneGraph/CMakeLists.txt

@ -69,27 +69,26 @@ set(MagnumSceneGraph_HEADERS
visibility.h) visibility.h)
# Set shared library flags for the objects, as they will be part of shared lib # Objects shared between main and test library
# TODO: fix when CMake sets target_EXPORTS for OBJECT targets as well
add_library(MagnumSceneGraphObjects OBJECT add_library(MagnumSceneGraphObjects OBJECT
${MagnumSceneGraph_SRCS} ${MagnumSceneGraph_SRCS}
${MagnumSceneGraph_HEADERS}) ${MagnumSceneGraph_HEADERS})
if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) if(NOT BUILD_STATIC)
# 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()
set_target_properties(MagnumSceneGraphObjects PROPERTIES COMPILE_FLAGS "-DMagnumSceneGraphObjects_EXPORTS") set_target_properties(MagnumSceneGraphObjects PROPERTIES COMPILE_FLAGS "-DMagnumSceneGraphObjects_EXPORTS")
endif() 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} add_library(MagnumSceneGraph ${SHARED_OR_STATIC}
$<TARGET_OBJECTS:MagnumSceneGraphObjects> $<TARGET_OBJECTS:MagnumSceneGraphObjects>
${MagnumSceneGraph_GracefulAssert_SRCS}) ${MagnumSceneGraph_GracefulAssert_SRCS})
set_target_properties(MagnumSceneGraph PROPERTIES DEBUG_POSTFIX "-d") set_target_properties(MagnumSceneGraph PROPERTIES DEBUG_POSTFIX "-d")
if(BUILD_STATIC_PIC) if(BUILD_STATIC_PIC)
# TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property set_target_properties(MagnumSceneGraph PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(MagnumSceneGraph PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}")
endif() endif()
target_link_libraries(MagnumSceneGraph Magnum) target_link_libraries(MagnumSceneGraph Magnum)
install(TARGETS MagnumSceneGraph install(TARGETS MagnumSceneGraph

5
src/Magnum/Shaders/CMakeLists.txt

@ -60,15 +60,16 @@ if(BUILD_STATIC)
endif() endif()
endif() endif()
# Shaders library
add_library(MagnumShaders ${SHARED_OR_STATIC} add_library(MagnumShaders ${SHARED_OR_STATIC}
${MagnumShaders_SRCS} ${MagnumShaders_SRCS}
${MagnumShaders_HEADERS} ${MagnumShaders_HEADERS}
${MagnumShaders_PRIVATE_HEADERS}) ${MagnumShaders_PRIVATE_HEADERS})
set_target_properties(MagnumShaders PROPERTIES DEBUG_POSTFIX "-d") set_target_properties(MagnumShaders PROPERTIES DEBUG_POSTFIX "-d")
if(BUILD_STATIC_PIC) if(BUILD_STATIC_PIC)
# TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property set_target_properties(MagnumShaders PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(MagnumShaders PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}")
endif() endif()
target_link_libraries(MagnumShaders Magnum) target_link_libraries(MagnumShaders Magnum)
install(TARGETS MagnumShaders 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 # Header files to display in project view of IDEs only
set(MagnumShapes_PRIVATE_HEADERS Implementation/CollisionDispatch.h) set(MagnumShapes_PRIVATE_HEADERS Implementation/CollisionDispatch.h)
# Shapes library
add_library(MagnumShapes ${SHARED_OR_STATIC} add_library(MagnumShapes ${SHARED_OR_STATIC}
${MagnumShapes_SRCS} ${MagnumShapes_SRCS}
${MagnumShapes_HEADERS} ${MagnumShapes_HEADERS}
${MagnumShapes_PRIVATE_HEADERS}) ${MagnumShapes_PRIVATE_HEADERS})
set_target_properties(MagnumShapes PROPERTIES DEBUG_POSTFIX "-d") set_target_properties(MagnumShapes PROPERTIES DEBUG_POSTFIX "-d")
if(BUILD_STATIC_PIC) if(BUILD_STATIC_PIC)
# TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property set_target_properties(MagnumShapes PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(MagnumShapes PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}")
endif() endif()
target_link_libraries(MagnumShapes Magnum MagnumSceneGraph) target_link_libraries(MagnumShapes Magnum MagnumSceneGraph)
install(TARGETS MagnumShapes install(TARGETS MagnumShapes

5
src/Magnum/Text/CMakeLists.txt

@ -45,14 +45,15 @@ if(MAGNUM_BUILD_DEPRECATED)
TextRenderer.h) TextRenderer.h)
endif() endif()
# Text library
add_library(MagnumText ${SHARED_OR_STATIC} add_library(MagnumText ${SHARED_OR_STATIC}
${MagnumText_SRCS} ${MagnumText_SRCS}
${MagnumText_HEADERS}) ${MagnumText_HEADERS})
set_target_properties(MagnumText PROPERTIES DEBUG_POSTFIX "-d") set_target_properties(MagnumText PROPERTIES DEBUG_POSTFIX "-d")
if(BUILD_STATIC_PIC) if(BUILD_STATIC_PIC)
# TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property set_target_properties(MagnumText PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(MagnumText PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}")
endif() endif()
target_link_libraries(MagnumText Magnum MagnumTextureTools) target_link_libraries(MagnumText Magnum MagnumTextureTools)
install(TARGETS MagnumText install(TARGETS MagnumText

5
src/Magnum/TextureTools/CMakeLists.txt

@ -40,14 +40,15 @@ if(BUILD_STATIC)
list(APPEND MagnumTextureTools_HEADERS resourceImport.hpp) list(APPEND MagnumTextureTools_HEADERS resourceImport.hpp)
endif() endif()
# TextureTools library
add_library(MagnumTextureTools ${SHARED_OR_STATIC} add_library(MagnumTextureTools ${SHARED_OR_STATIC}
${MagnumTextureTools_SRCS} ${MagnumTextureTools_SRCS}
${MagnumTextureTools_HEADERS}) ${MagnumTextureTools_HEADERS})
set_target_properties(MagnumTextureTools PROPERTIES DEBUG_POSTFIX "-d") set_target_properties(MagnumTextureTools PROPERTIES DEBUG_POSTFIX "-d")
if(BUILD_STATIC_PIC) if(BUILD_STATIC_PIC)
# TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property set_target_properties(MagnumTextureTools PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(MagnumTextureTools PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}")
endif() endif()
target_link_libraries(MagnumTextureTools Magnum) target_link_libraries(MagnumTextureTools Magnum)
if(WITH_DISTANCEFIELDCONVERTER) if(WITH_DISTANCEFIELDCONVERTER)

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

@ -27,9 +27,12 @@
add_library(MagnumFlextGLObjects OBJECT flextGL.cpp) add_library(MagnumFlextGLObjects OBJECT flextGL.cpp)
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang") 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() 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()
install(FILES flextGL.h DESTINATION ${MAGNUM_EXTERNAL_INCLUDE_INSTALL_DIR}/OpenGL/GL) 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) add_library(MagnumFlextGLObjects OBJECT flextGL.cpp)
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang") 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() 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()
endif() endif()

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

@ -27,9 +27,12 @@
add_library(MagnumFlextGLObjects OBJECT flextGL.cpp) add_library(MagnumFlextGLObjects OBJECT flextGL.cpp)
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang") 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() 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()
install(FILES flextGL.h DESTINATION ${MAGNUM_EXTERNAL_INCLUDE_INSTALL_DIR}/OpenGL/GLES3) 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. # DEALINGS IN THE SOFTWARE.
# #
set(MagnumFont_SOURCES set(MagnumFont_SRCS
MagnumFont.cpp) MagnumFont.cpp)
set(MagnumFont_HEADERS set(MagnumFont_HEADERS
MagnumFont.h) MagnumFont.h)
add_library(MagnumFontObjects OBJECT ${MagnumFont_SOURCES}) # Objects shared between plugin and test library
set_target_properties(MagnumFontObjects PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") 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} add_plugin(MagnumFont ${MAGNUM_PLUGINS_FONT_DEBUG_INSTALL_DIR} ${MAGNUM_PLUGINS_FONT_RELEASE_INSTALL_DIR}
MagnumFont.conf MagnumFont.conf
$<TARGET_OBJECTS:MagnumFontObjects> $<TARGET_OBJECTS:MagnumFontObjects>
pluginRegistration.cpp) 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) if(CORRADE_TARGET_WINDOWS)
target_link_libraries(MagnumFont TgaImporter) target_link_libraries(MagnumFont TgaImporter)
endif() endif()

15
src/MagnumPlugins/MagnumFontConverter/CMakeLists.txt

@ -23,21 +23,28 @@
# DEALINGS IN THE SOFTWARE. # DEALINGS IN THE SOFTWARE.
# #
set(MagnumFontConverter_SOURCES set(MagnumFontConverter_SRCS
MagnumFontConverter.cpp) MagnumFontConverter.cpp)
set(MagnumFontConverter_HEADERS set(MagnumFontConverter_HEADERS
MagnumFontConverter.h) MagnumFontConverter.h)
add_library(MagnumFontConverterObjects OBJECT ${MagnumFontConverter_SOURCES}) # Objects shared between plugin and test library
set_target_properties(MagnumFontConverterObjects PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") 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} add_plugin(MagnumFontConverter ${MAGNUM_PLUGINS_FONTCONVERTER_DEBUG_INSTALL_DIR} ${MAGNUM_PLUGINS_FONTCONVERTER_RELEASE_INSTALL_DIR}
MagnumFontConverter.conf MagnumFontConverter.conf
$<TARGET_OBJECTS:MagnumFontConverterObjects> $<TARGET_OBJECTS:MagnumFontConverterObjects>
pluginRegistration.cpp) 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) if(CORRADE_TARGET_WINDOWS)
target_link_libraries(MagnumFontConverter TgaImageConverter) target_link_libraries(MagnumFontConverter TgaImageConverter)
endif() endif()

20
src/MagnumPlugins/ObjImporter/CMakeLists.txt

@ -23,18 +23,32 @@
# DEALINGS IN THE SOFTWARE. # 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) 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() endif()
# ObjImporter plugin
add_plugin(ObjImporter ${MAGNUM_PLUGINS_IMPORTER_DEBUG_INSTALL_DIR} ${MAGNUM_PLUGINS_IMPORTER_RELEASE_INSTALL_DIR} add_plugin(ObjImporter ${MAGNUM_PLUGINS_IMPORTER_DEBUG_INSTALL_DIR} ${MAGNUM_PLUGINS_IMPORTER_RELEASE_INSTALL_DIR}
ObjImporter.conf ObjImporter.conf
$<TARGET_OBJECTS:ObjImporterObjects> $<TARGET_OBJECTS:ObjImporterObjects>
pluginRegistration.cpp) pluginRegistration.cpp)
if(BUILD_STATIC_PIC)
set_target_properties(ObjImporter PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
target_link_libraries(ObjImporter Magnum MagnumMeshTools) 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) if(BUILD_TESTS)
add_library(MagnumObjImporterTestLib STATIC $<TARGET_OBJECTS:ObjImporterObjects>) add_library(MagnumObjImporterTestLib STATIC $<TARGET_OBJECTS:ObjImporterObjects>)

15
src/MagnumPlugins/TgaImageConverter/CMakeLists.txt

@ -29,13 +29,24 @@ set(TgaImageConverter_SRCS
set(TgaImageConverter_HEADERS set(TgaImageConverter_HEADERS
TgaImageConverter.h) TgaImageConverter.h)
add_library(TgaImageConverterObjects OBJECT ${TgaImageConverter_SRCS}) # Objects shared between plugin and test library
set_target_properties(TgaImageConverterObjects PROPERTIES COMPILE_FLAGS "-DTgaImageConverterObjects_EXPORTS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") 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} add_plugin(TgaImageConverter ${MAGNUM_PLUGINS_IMAGECONVERTER_DEBUG_INSTALL_DIR} ${MAGNUM_PLUGINS_IMAGECONVERTER_RELEASE_INSTALL_DIR}
TgaImageConverter.conf TgaImageConverter.conf
$<TARGET_OBJECTS:TgaImageConverterObjects> $<TARGET_OBJECTS:TgaImageConverterObjects>
pluginRegistration.cpp) pluginRegistration.cpp)
if(BUILD_STATIC_PIC)
set_target_properties(TgaImageConverter PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
target_link_libraries(TgaImageConverter Magnum) target_link_libraries(TgaImageConverter Magnum)
install(FILES ${TgaImageConverter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/TgaImageConverter) 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 TgaHeader.h
TgaImporter.h) TgaImporter.h)
add_library(TgaImporterObjects OBJECT ${TgaImporter_SRCS}) # Objects shared between plugin and test library
set_target_properties(TgaImporterObjects PROPERTIES COMPILE_FLAGS "-DTgaImporterObjects_EXPORTS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") 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} add_plugin(TgaImporter ${MAGNUM_PLUGINS_IMPORTER_DEBUG_INSTALL_DIR} ${MAGNUM_PLUGINS_IMPORTER_RELEASE_INSTALL_DIR}
TgaImporter.conf TgaImporter.conf
$<TARGET_OBJECTS:TgaImporterObjects> $<TARGET_OBJECTS:TgaImporterObjects>
pluginRegistration.cpp) 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) target_link_libraries(TgaImporter Magnum)
install(FILES ${TgaImporter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/TgaImporter) 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 WavHeader.h
WavImporter.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) 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() endif()
# WavAudioImporter plugin
add_plugin(WavAudioImporter ${MAGNUM_PLUGINS_AUDIOIMPORTER_DEBUG_INSTALL_DIR} ${MAGNUM_PLUGINS_AUDIOIMPORTER_RELEASE_INSTALL_DIR} add_plugin(WavAudioImporter ${MAGNUM_PLUGINS_AUDIOIMPORTER_DEBUG_INSTALL_DIR} ${MAGNUM_PLUGINS_AUDIOIMPORTER_RELEASE_INSTALL_DIR}
WavAudioImporter.conf WavAudioImporter.conf
$<TARGET_OBJECTS:WavAudioImporterObjects> $<TARGET_OBJECTS:WavAudioImporterObjects>
pluginRegistration.cpp) pluginRegistration.cpp)
if(BUILD_STATIC_PIC)
set_target_properties(WavAudioImporter PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
target_link_libraries(WavAudioImporter Magnum MagnumAudio) target_link_libraries(WavAudioImporter Magnum MagnumAudio)
install(FILES ${WavAudioImporter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/WavAudioImporter) install(FILES ${WavAudioImporter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/WavAudioImporter)

Loading…
Cancel
Save