From 90dbb28763e67695dab5fe8c97cfac4809c3b0a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 9 Mar 2013 14:23:38 +0100 Subject: [PATCH] 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. --- CMakeLists.txt | 5 +++-- src/CMakeLists.txt | 22 ++++++---------------- src/DebugTools/CMakeLists.txt | 9 +++++++-- src/Math/Algorithms/CMakeLists.txt | 2 +- src/Math/CMakeLists.txt | 2 +- src/Math/Geometry/CMakeLists.txt | 2 +- src/MeshTools/CMakeLists.txt | 15 +++++++-------- src/MeshTools/Test/CMakeLists.txt | 5 ++++- src/Physics/CMakeLists.txt | 2 -- src/Platform/CMakeLists.txt | 7 ++++--- src/Primitives/CMakeLists.txt | 2 +- src/SceneGraph/CMakeLists.txt | 16 ++++++++-------- src/Shaders/CMakeLists.txt | 3 ++- src/Text/CMakeLists.txt | 1 - src/TextureTools/CMakeLists.txt | 2 -- src/Trade/CMakeLists.txt | 2 +- 16 files changed, 46 insertions(+), 51 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 94132ebeb..28d4834fc 100644 --- a/CMakeLists.txt +++ b/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) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5565c3d16..7390c753f 100644 --- a/src/CMakeLists.txt +++ b/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 $) set_target_properties(MagnumMathTestLib PROPERTIES COMPILE_FLAGS -DCORRADE_GRACEFUL_ASSERT) diff --git a/src/DebugTools/CMakeLists.txt b/src/DebugTools/CMakeLists.txt index 3c6f7ade9..8d6dbdbc4 100644 --- a/src/DebugTools/CMakeLists.txt +++ b/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) diff --git a/src/Math/Algorithms/CMakeLists.txt b/src/Math/Algorithms/CMakeLists.txt index 66cf6c7e9..df7bdf1f4 100644 --- a/src/Math/Algorithms/CMakeLists.txt +++ b/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() diff --git a/src/Math/CMakeLists.txt b/src/Math/CMakeLists.txt index e8c9997fb..602896ef5 100644 --- a/src/Math/CMakeLists.txt +++ b/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() diff --git a/src/Math/Geometry/CMakeLists.txt b/src/Math/Geometry/CMakeLists.txt index 73cd0f0f6..811821db3 100644 --- a/src/Math/Geometry/CMakeLists.txt +++ b/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() diff --git a/src/MeshTools/CMakeLists.txt b/src/MeshTools/CMakeLists.txt index 5d6ecac9c..4e20509b2 100644 --- a/src/MeshTools/CMakeLists.txt +++ b/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 $ @@ -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 $ diff --git a/src/MeshTools/Test/CMakeLists.txt b/src/MeshTools/Test/CMakeLists.txt index 369e6d411..6cd555f0b 100644 --- a/src/MeshTools/Test/CMakeLists.txt +++ b/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) diff --git a/src/Physics/CMakeLists.txt b/src/Physics/CMakeLists.txt index 6d91069b2..36b9a0e24 100644 --- a/src/Physics/CMakeLists.txt +++ b/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() diff --git a/src/Platform/CMakeLists.txt b/src/Platform/CMakeLists.txt index 0e67226fa..2123e9120 100644 --- a/src/Platform/CMakeLists.txt +++ b/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 diff --git a/src/Primitives/CMakeLists.txt b/src/Primitives/CMakeLists.txt index 19f05fff9..9c8ac8a6d 100644 --- a/src/Primitives/CMakeLists.txt +++ b/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() diff --git a/src/SceneGraph/CMakeLists.txt b/src/SceneGraph/CMakeLists.txt index 906edde55..1b2df1a34 100644 --- a/src/SceneGraph/CMakeLists.txt +++ b/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 $ diff --git a/src/Shaders/CMakeLists.txt b/src/Shaders/CMakeLists.txt index 41c0e0731..e8e96d25b 100644 --- a/src/Shaders/CMakeLists.txt +++ b/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}) diff --git a/src/Text/CMakeLists.txt b/src/Text/CMakeLists.txt index b4e0d5e96..92ea20ce9 100644 --- a/src/Text/CMakeLists.txt +++ b/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}) diff --git a/src/TextureTools/CMakeLists.txt b/src/TextureTools/CMakeLists.txt index 825658dad..36eb6dae7 100644 --- a/src/TextureTools/CMakeLists.txt +++ b/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() diff --git a/src/Trade/CMakeLists.txt b/src/Trade/CMakeLists.txt index 52cb96bb3..6e8a1efd2 100644 --- a/src/Trade/CMakeLists.txt +++ b/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()