Browse Source

Thorough CMakeLists cleanup.

* Calling enable_testing() only in root path.
 * Using CORRADE_CXX_FLAGS instead of our own set to make things easier
   to maintain.
 * Various cleanup and reorganization.
pull/278/head
Vladimír Vondruš 13 years ago
parent
commit
90dbb28763
  1. 5
      CMakeLists.txt
  2. 22
      src/CMakeLists.txt
  3. 9
      src/DebugTools/CMakeLists.txt
  4. 2
      src/Math/Algorithms/CMakeLists.txt
  5. 2
      src/Math/CMakeLists.txt
  6. 2
      src/Math/Geometry/CMakeLists.txt
  7. 15
      src/MeshTools/CMakeLists.txt
  8. 5
      src/MeshTools/Test/CMakeLists.txt
  9. 2
      src/Physics/CMakeLists.txt
  10. 7
      src/Platform/CMakeLists.txt
  11. 2
      src/Primitives/CMakeLists.txt
  12. 16
      src/SceneGraph/CMakeLists.txt
  13. 3
      src/Shaders/CMakeLists.txt
  14. 1
      src/Text/CMakeLists.txt
  15. 2
      src/TextureTools/CMakeLists.txt
  16. 2
      src/Trade/CMakeLists.txt

5
CMakeLists.txt

@ -33,13 +33,13 @@ else()
cmake_dependent_option(WITH_GLUTAPPLICATION "Build GlutApplication library" OFF "NOT TARGET_GLES" OFF)
option(WITH_SDL2APPLICATION "Build Sdl2Application library" OFF)
endif()
option(BUILD_TESTS "Build unit tests." OFF)
option(BUILD_TESTS "Build unit tests." OFF)
if(BUILD_TESTS)
enable_testing()
endif()
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${Magnum_SOURCE_DIR}/modules/")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/modules/")
# If targetting NaCl, set explicit OpenGL ES 2.0 support
if(${CMAKE_SYSTEM_NAME} STREQUAL NaCl)
@ -74,6 +74,7 @@ if(USE_HARFBUZZ)
endif()
# Installation paths
include(CorradeLibSuffix)
set(MAGNUM_BINARY_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/bin)
set(MAGNUM_LIBRARY_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})
set(MAGNUM_CMAKE_MODULE_INSTALL_DIR ${CMAKE_ROOT}/Modules)

22
src/CMakeLists.txt

@ -1,14 +1,9 @@
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wold-style-cast -Winit-self -Werror=return-type -Wmissing-declarations -pedantic -std=c++0x -fvisibility=hidden")
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wdouble-promotion")
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CORRADE_CXX_FLAGS}")
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CORRADE_INCLUDE_DIR})
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/magnumConfigure.h.cmake
${CMAKE_CURRENT_BINARY_DIR}/magnumConfigure.h)
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CORRADE_INCLUDE_DIR})
# Files shared between main library and unit test library
set(Magnum_SRCS
AbstractFramebuffer.cpp
@ -97,8 +92,6 @@ if(NOT TARGET_GLES2)
BufferImage.h)
endif()
add_library(MagnumObjects OBJECT ${Magnum_SRCS})
# Files shared between main library and math unit test library
set(MagnumMath_SRCS
Math/Angle.cpp
@ -109,10 +102,11 @@ set(MagnumMath_SRCS
Math/Quaternion.cpp
Math/RectangularMatrix.cpp
Math/Vector.cpp)
add_library(MagnumMathObjects OBJECT ${MagnumMath_SRCS})
# 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
add_library(MagnumMathObjects OBJECT ${MagnumMath_SRCS})
add_library(MagnumObjects OBJECT ${Magnum_SRCS})
set_target_properties(MagnumObjects MagnumMathObjects PROPERTIES COMPILE_FLAGS "-DMagnumObjects_EXPORTS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}")
# Main library
@ -134,12 +128,10 @@ target_link_libraries(Magnum ${Magnum_LIBS})
install(TARGETS Magnum DESTINATION ${MAGNUM_LIBRARY_INSTALL_DIR})
install(FILES ${Magnum_HEADERS} DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR})
# Install also configure file
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/magnumConfigure.h DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR})
add_subdirectory(Platform)
add_subdirectory(Math)
add_subdirectory(Platform)
add_subdirectory(Trade)
if(WITH_DEBUGTOOLS)
@ -175,9 +167,7 @@ if(WITH_TEXTURETOOLS)
endif()
if(BUILD_TESTS)
enable_testing()
# Library with graceful assert for testing
# Libraries with graceful assert for testing
add_library(MagnumMathTestLib SHARED
$<TARGET_OBJECTS:MagnumMathObjects>)
set_target_properties(MagnumMathTestLib PROPERTIES COMPILE_FLAGS -DCORRADE_GRACEFUL_ASSERT)

9
src/DebugTools/CMakeLists.txt

@ -20,8 +20,13 @@ set(MagnumDebugTools_HEADERS
magnumDebugToolsVisibility.h)
add_library(MagnumDebugTools SHARED ${MagnumDebugTools_SRCS})
target_link_libraries(MagnumDebugTools Magnum MagnumMeshTools MagnumPhysics MagnumPrimitives MagnumSceneGraph MagnumShaders)
target_link_libraries(MagnumDebugTools
Magnum
MagnumMeshTools
MagnumPhysics
MagnumPrimitives
MagnumSceneGraph
MagnumShaders)
install(TARGETS MagnumDebugTools DESTINATION ${MAGNUM_LIBRARY_INSTALL_DIR})
install(FILES ${MagnumDebugTools_HEADERS} DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR}/DebugTools)

2
src/Math/Algorithms/CMakeLists.txt

@ -2,9 +2,9 @@ set(MagnumMathAlgorithms_HEADERS
GaussJordan.h
GramSchmidt.h
Svd.h)
install(FILES ${MagnumMathAlgorithms_HEADERS} DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR}/Math/Algorithms)
if(BUILD_TESTS)
enable_testing()
add_subdirectory(Test)
endif()

2
src/Math/CMakeLists.txt

@ -20,12 +20,12 @@ set(MagnumMath_HEADERS
Vector2.h
Vector3.h
Vector4.h)
install(FILES ${MagnumMath_HEADERS} DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR}/Math)
add_subdirectory(Algorithms)
add_subdirectory(Geometry)
if(BUILD_TESTS)
enable_testing()
add_subdirectory(Test)
endif()

2
src/Math/Geometry/CMakeLists.txt

@ -2,9 +2,9 @@ set(MagnumMathGeometry_HEADERS
Distance.h
Intersection.h
Rectangle.h)
install(FILES ${MagnumMathGeometry_HEADERS} DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR}/Math/Geometry)
if(BUILD_TESTS)
enable_testing()
add_subdirectory(Test)
endif()

15
src/MeshTools/CMakeLists.txt

@ -2,6 +2,12 @@
set(MagnumMeshTools_SRCS
CompressIndices.cpp
Tipsify.cpp)
# Files compiled with different flags for main library and unit test library
set(MagnumMeshTools_GracefulAssert_SRCS
FlipNormals.cpp
GenerateFlatNormals.cpp)
set(MagnumMeshTools_HEADERS
Clean.h
CombineIndexedArrays.h
@ -14,17 +20,12 @@ set(MagnumMeshTools_HEADERS
Transform.h
magnumMeshToolsVisibility.h)
add_library(MagnumMeshToolsObjects OBJECT ${MagnumMeshTools_SRCS})
# 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
add_library(MagnumMeshToolsObjects OBJECT ${MagnumMeshTools_SRCS})
set_target_properties(MagnumMeshToolsObjects PROPERTIES COMPILE_FLAGS "-DMagnumMeshToolsObjects_EXPORTS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}")
# Files compiled with different flags for main library and unit test library
set(MagnumMeshTools_GracefulAssert_SRCS
FlipNormals.cpp
GenerateFlatNormals.cpp)
# Main library
add_library(MagnumMeshTools SHARED
$<TARGET_OBJECTS:MagnumMeshToolsObjects>
@ -35,8 +36,6 @@ install(TARGETS MagnumMeshTools DESTINATION ${MAGNUM_LIBRARY_INSTALL_DIR})
install(FILES ${MagnumMeshTools_HEADERS} DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR}/MeshTools)
if(BUILD_TESTS)
enable_testing()
# Library with graceful assert for testing
add_library(MagnumMeshToolsTestLib SHARED
$<TARGET_OBJECTS:MagnumMeshToolsObjects>

5
src/MeshTools/Test/CMakeLists.txt

@ -10,4 +10,7 @@ corrade_add_test(MeshToolsTipsifyTest TipsifyTest.cpp LIBRARIES MagnumMeshTools)
corrade_add_test(MeshToolsTransformTest TransformTest.cpp LIBRARIES MagnumMeshTools)
# Graceful assert for testing
set_target_properties(MeshToolsCombineIndexedArraysTest MeshToolsInterleaveTest MeshToolsSubdivideTest PROPERTIES COMPILE_FLAGS -DCORRADE_GRACEFUL_ASSERT)
set_target_properties(MeshToolsCombineIndexedArraysTest
MeshToolsInterleaveTest
MeshToolsSubdivideTest
PROPERTIES COMPILE_FLAGS -DCORRADE_GRACEFUL_ASSERT)

2
src/Physics/CMakeLists.txt

@ -29,13 +29,11 @@ set(MagnumPhysics_HEADERS
magnumPhysicsVisibility.h)
add_library(MagnumPhysics SHARED ${MagnumPhysics_SRCS})
target_link_libraries(MagnumPhysics Magnum MagnumSceneGraph)
install(TARGETS MagnumPhysics DESTINATION ${MAGNUM_LIBRARY_INSTALL_DIR})
install(FILES ${MagnumPhysics_HEADERS} DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR}/Physics)
if(BUILD_TESTS)
enable_testing()
add_subdirectory(Test)
endif()

7
src/Platform/CMakeLists.txt

@ -1,9 +1,10 @@
# Extension wrangler
add_library(MagnumPlatformExtensionWrangler OBJECT ExtensionWrangler.cpp)
set(MagnumPlatform_HEADERS
AbstractContextHandler.h
ExtensionWrangler.h)
# Extension wrangler
add_library(MagnumPlatformExtensionWrangler OBJECT ExtensionWrangler.cpp)
install(FILES ${MagnumPlatform_HEADERS} DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR}/Platform)
# GLUT application

2
src/Primitives/CMakeLists.txt

@ -7,6 +7,7 @@ set(MagnumPrimitives_SRCS
Plane.cpp
Square.cpp
UVSphere.cpp)
set(MagnumPrimitives_HEADERS
Capsule.h
Crosshair.h
@ -26,6 +27,5 @@ install(TARGETS MagnumPrimitives DESTINATION ${MAGNUM_LIBRARY_INSTALL_DIR})
install(FILES ${MagnumPrimitives_HEADERS} DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR}/Primitives)
if(BUILD_TESTS)
enable_testing()
add_subdirectory(Test)
endif()

16
src/SceneGraph/CMakeLists.txt

@ -1,9 +1,16 @@
# Files shared between main library and unit test library
set(MagnumSceneGraph_SRCS
Animable.cpp
Camera.cpp
EuclideanMatrixTransformation2D.cpp
EuclideanMatrixTransformation3D.cpp
Object.cpp)
# Files compiled with different flags for main library and unit test library
set(MagnumSceneGraph_GracefulAssert_SRCS
MatrixTransformation2D.cpp
MatrixTransformation3D.cpp)
set(MagnumSceneGraph_HEADERS
AbstractCamera.h
AbstractCamera.hpp
@ -34,15 +41,10 @@ set(MagnumSceneGraph_HEADERS
SceneGraph.h
magnumSceneGraphVisibility.h)
add_library(MagnumSceneGraphObjects OBJECT ${MagnumSceneGraph_SRCS})
# Files compiled with different flags for main library and unit test library
set(MagnumSceneGraph_GracefulAssert_SRCS
MatrixTransformation2D.cpp
MatrixTransformation3D.cpp)
# 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
add_library(MagnumSceneGraphObjects OBJECT ${MagnumSceneGraph_SRCS})
set_target_properties(MagnumSceneGraphObjects PROPERTIES COMPILE_FLAGS "-DMagnumSceneGraphObjects_EXPORTS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}")
# SceneGraph library
@ -55,8 +57,6 @@ install(TARGETS MagnumSceneGraph DESTINATION ${MAGNUM_LIBRARY_INSTALL_DIR})
install(FILES ${MagnumSceneGraph_HEADERS} DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR}/SceneGraph)
if(BUILD_TESTS)
enable_testing()
# Library with graceful assert for testing
add_library(MagnumSceneGraphTestLib SHARED
$<TARGET_OBJECTS:MagnumSceneGraphObjects>

3
src/Shaders/CMakeLists.txt

@ -5,6 +5,7 @@ corrade_add_resource(MagnumShaders_RCS MagnumShaders
VectorShader.frag DistanceFieldVectorShader.frag
VertexColorShader2D.vert VertexColorShader3D.vert VertexColorShader.frag
compatibility.glsl)
set(MagnumShaders_SRCS
DistanceFieldVectorShader.cpp
FlatShader.cpp
@ -12,6 +13,7 @@ set(MagnumShaders_SRCS
VectorShader.cpp
VertexColorShader.cpp
${MagnumShaders_RCS})
set(MagnumShaders_HEADERS
DistanceFieldVectorShader.h
AbstractVectorShader.h
@ -24,7 +26,6 @@ set(MagnumShaders_HEADERS
magnumShadersVisibility.h)
add_library(MagnumShaders SHARED ${MagnumShaders_SRCS})
target_link_libraries(MagnumShaders Magnum)
install(TARGETS MagnumShaders DESTINATION ${MAGNUM_LIBRARY_INSTALL_DIR})

1
src/Text/CMakeLists.txt

@ -22,7 +22,6 @@ if(USE_HARFBUZZ)
endif()
add_library(MagnumText SHARED ${MagnumText_SRCS})
target_link_libraries(MagnumText Magnum MagnumTextureTools ${FREETYPE_LIBRARIES})
if(USE_HARFBUZZ)
target_link_libraries(MagnumText ${HARFBUZZ_LIBRARIES})

2
src/TextureTools/CMakeLists.txt

@ -14,13 +14,11 @@ set(MagnumTextureTools_HEADERS
magnumTextureToolsVisibility.h)
add_library(MagnumTextureTools SHARED ${MagnumTextureTools_SRCS})
target_link_libraries(MagnumTextureTools Magnum)
install(TARGETS MagnumTextureTools DESTINATION ${MAGNUM_LIBRARY_INSTALL_DIR})
install(FILES ${MagnumTextureTools_HEADERS} DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR}/TextureTools)
if(BUILD_TESTS)
enable_testing()
add_subdirectory(Test)
endif()

2
src/Trade/CMakeLists.txt

@ -14,9 +14,9 @@ set(MagnumTrade_HEADERS
SceneData.h
TextureData.h
Trade.h)
install(FILES ${MagnumTrade_HEADERS} DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR}/Trade)
if(BUILD_TESTS)
enable_testing()
add_subdirectory(Test)
endif()

Loading…
Cancel
Save