From 66bbc6b62ff529c5a0c8e4dea85735fc5c5195ff Mon Sep 17 00:00:00 2001 From: Matthias Maier Date: Mon, 24 Sep 2012 19:38:02 +0000 Subject: [PATCH] Make Wolfgang happy #5 git-svn-id: https://svn.dealii.org/branches/branch_cmake@26681 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/cmake/configure/configure_1_tbb.cmake | 4 - deal.II/cmake/configure/configure_boost.cmake | 8 -- .../cmake/configure/configure_umfpack.cmake | 14 +-- .../macros/macro_deal_ii_add_c_library.cmake | 51 +++++++++ .../macro_deal_ii_add_definitions.cmake | 23 ++++ .../macros/macro_deal_ii_add_library.cmake | 13 +++ deal.II/contrib/functionparser/CMakeLists.txt | 2 +- deal.II/source/CMakeLists.txt | 106 +++++++++++------- 8 files changed, 157 insertions(+), 64 deletions(-) create mode 100644 deal.II/cmake/macros/macro_deal_ii_add_c_library.cmake create mode 100644 deal.II/cmake/macros/macro_deal_ii_add_definitions.cmake diff --git a/deal.II/cmake/configure/configure_1_tbb.cmake b/deal.II/cmake/configure/configure_1_tbb.cmake index e91e4804a8..1216f2aadb 100644 --- a/deal.II/cmake/configure/configure_1_tbb.cmake +++ b/deal.II/cmake/configure/configure_1_tbb.cmake @@ -157,10 +157,6 @@ MACRO(FEATURE_TBB_CONFIGURE_CONTRIB var) ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/contrib/tbb/tbb30_104oss/src) - LIST(APPEND deal_ii_additional_object_files - $ - ) - ENDMACRO() diff --git a/deal.II/cmake/configure/configure_boost.cmake b/deal.II/cmake/configure/configure_boost.cmake index c395bcd0b1..21fa1ff143 100644 --- a/deal.II/cmake/configure/configure_boost.cmake +++ b/deal.II/cmake/configure/configure_boost.cmake @@ -75,10 +75,6 @@ MACRO(FEATURE_BOOST_CONFIGURE_CONTRIB var) ${CMAKE_SOURCE_DIR}/contrib/boost-1.49.0/libs/serialization/src ) - LIST(APPEND deal_ii_additional_object_files - $ - ) - IF( DEAL_II_USE_MT AND NOT DEAL_II_CAN_USE_CXX11) # # If the C++ compiler doesn't completely support the C++11 standard @@ -90,10 +86,6 @@ MACRO(FEATURE_BOOST_CONFIGURE_CONTRIB var) ADD_SUBDIRECTORY( ${CMAKE_SOURCE_DIR}/contrib/boost-1.49.0/libs/thread/src ) - - LIST(APPEND deal_ii_additional_object_files - $ - ) ENDIF() SET(${var} TRUE) diff --git a/deal.II/cmake/configure/configure_umfpack.cmake b/deal.II/cmake/configure/configure_umfpack.cmake index 563ca12681..24e7e9e225 100644 --- a/deal.II/cmake/configure/configure_umfpack.cmake +++ b/deal.II/cmake/configure/configure_umfpack.cmake @@ -36,6 +36,10 @@ SET(FEATURE_UMFPACK_HAVE_CONTRIB TRUE) MACRO(FEATURE_UMFPACK_CONFIGURE_CONTRIB var) + # + # Add umfpack and amd directly to the object files of deal.II + # + INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/contrib/umfpack/UMFPACK/Include ${CMAKE_SOURCE_DIR}/contrib/umfpack/AMD/Include @@ -44,16 +48,6 @@ MACRO(FEATURE_UMFPACK_CONFIGURE_CONTRIB var) ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/contrib/umfpack/UMFPACK/Source) ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/contrib/umfpack/AMD/Source) - # - # Add umfpack and amd directly to the object files of deal.II - # - LIST(APPEND deal_ii_additional_object_files - ${obj_umfpack_object_files} - $ - $ - $ - ) - SET(HAVE_LIBUMFPACK TRUE) SET(${var} TRUE) diff --git a/deal.II/cmake/macros/macro_deal_ii_add_c_library.cmake b/deal.II/cmake/macros/macro_deal_ii_add_c_library.cmake new file mode 100644 index 0000000000..613fc1c3eb --- /dev/null +++ b/deal.II/cmake/macros/macro_deal_ii_add_c_library.cmake @@ -0,0 +1,51 @@ + +# +# TODO: A comment +# + +MACRO(DEAL_II_ADD_C_LIBRARY name) + + IF(CMAKE_BUILD_TYPE MATCHES "Debug") + # + # and a debug target + # + ADD_LIBRARY(${name}.g + ${ARGN} + ) + + SET_TARGET_PROPERTIES(${name}.g PROPERTIES + LINK_FLAGS "${DEAL_II_SHARED_LINKER_FLAGS_DEBUG}" + COMPILE_DEFINITIONS "${DEAL_II_DEFINITIONS};${DEAL_II_DEFINITIONS_DEBUG}" + COMPILE_FLAGS "${DEAL_II_C_FLAGS_DEBUG}" + ) + + SET(deal_ii_objects.g + ${deal_ii_objects.g} + $ + PARENT_SCOPE + ) + + ENDIF() + + IF(CMAKE_BUILD_TYPE MATCHES "Release") + # + # Add a release target + # + ADD_LIBRARY(${name} + ${ARGN} + ) + + SET_TARGET_PROPERTIES(${name} PROPERTIES + LINK_FLAGS "${DEAL_II_SHARED_LINKER_FLAGS_RELEASE}" + COMPILE_DEFINITIONS "${DEAL_II_DEFINITIONS};${DEAL_II_DEFINITIONS_RELEASE}" + COMPILE_FLAGS "${DEAL_II_C_FLAGS_RELEASE}" + ) + + SET(deal_ii_objects + ${deal_ii_objects} + $ + PARENT_SCOPE + ) + ENDIF() + +ENDMACRO() diff --git a/deal.II/cmake/macros/macro_deal_ii_add_definitions.cmake b/deal.II/cmake/macros/macro_deal_ii_add_definitions.cmake new file mode 100644 index 0000000000..d01210b5eb --- /dev/null +++ b/deal.II/cmake/macros/macro_deal_ii_add_definitions.cmake @@ -0,0 +1,23 @@ + +# +# TODO: A comment +# + +MACRO(DEAL_II_ADD_DEFINITIONS name) + + IF(CMAKE_BUILD_TYPE MATCHES "Debug") + GET_TARGET_PROPERTY(macro_definitions ${name}.g COMPILE_DEFINITIONS) + SET_TARGET_PROPERTIES(${name}.g PROPERTIES + COMPILE_DEFINITIONS "${ARGN};${macro_definitions}" + ) + ENDIF() + + IF(CMAKE_BUILD_TYPE MATCHES "Release") + GET_TARGET_PROPERTY(macro_definitions ${name} COMPILE_DEFINITIONS) + SET_TARGET_PROPERTIES(${name} PROPERTIES + COMPILE_DEFINITIONS "${ARGN};${macro_definitions}" + ) + ENDIF() + +ENDMACRO() + diff --git a/deal.II/cmake/macros/macro_deal_ii_add_library.cmake b/deal.II/cmake/macros/macro_deal_ii_add_library.cmake index 3f8cdbc562..919bbd8e7d 100644 --- a/deal.II/cmake/macros/macro_deal_ii_add_library.cmake +++ b/deal.II/cmake/macros/macro_deal_ii_add_library.cmake @@ -18,6 +18,13 @@ MACRO(DEAL_II_ADD_LIBRARY name) COMPILE_DEFINITIONS "${DEAL_II_DEFINITIONS};${DEAL_II_DEFINITIONS_DEBUG}" COMPILE_FLAGS "${DEAL_II_CXX_FLAGS_DEBUG}" ) + + SET(deal_ii_objects.g + ${deal_ii_objects.g} + $ + PARENT_SCOPE + ) + ENDIF() IF(CMAKE_BUILD_TYPE MATCHES "Release") @@ -33,6 +40,12 @@ MACRO(DEAL_II_ADD_LIBRARY name) COMPILE_DEFINITIONS "${DEAL_II_DEFINITIONS};${DEAL_II_DEFINITIONS_RELEASE}" COMPILE_FLAGS "${DEAL_II_CXX_FLAGS_RELEASE}" ) + + SET(deal_ii_objects + ${deal_ii_objects} + $ + PARENT_SCOPE + ) ENDIF() ENDMACRO() diff --git a/deal.II/contrib/functionparser/CMakeLists.txt b/deal.II/contrib/functionparser/CMakeLists.txt index 6e1db2c67d..f6997c24d4 100644 --- a/deal.II/contrib/functionparser/CMakeLists.txt +++ b/deal.II/contrib/functionparser/CMakeLists.txt @@ -1 +1 @@ -ADD_LIBRARY(obj_functionparser OBJECT "fparser.cc") +DEAL_II_ADD_LIBRARY(obj_functionparser OBJECT "fparser.cc") diff --git a/deal.II/source/CMakeLists.txt b/deal.II/source/CMakeLists.txt index 66c8fb3322..5ecfd244e8 100644 --- a/deal.II/source/CMakeLists.txt +++ b/deal.II/source/CMakeLists.txt @@ -7,9 +7,6 @@ INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR}/include/ ) -# -# Each subdirectory specifies an OBJECT target: -# ADD_SUBDIRECTORY(base) ADD_SUBDIRECTORY(distributed) ADD_SUBDIRECTORY(dofs) @@ -20,47 +17,74 @@ ADD_SUBDIRECTORY(lac) ADD_SUBDIRECTORY(multigrid) ADD_SUBDIRECTORY(numerics) -# -# Combine all OBJECT targets to a library: -# -ADD_LIBRARY(${DEAL_II_BASE_NAME} - $ - $ - $ - $ - $ - $ - $ - $ - $ - - # for contrib stuff: - ${deal_ii_additional_object_files} - ) +IF(CMAKE_BUILD_TYPE MATCHES "Debug") -# -# Sonaming: Well... we just use the version number. -# No point to wrack one's brain over the question whether a new version of -# a C++ library is still ABI backwards compatible :-] -# -SET_TARGET_PROPERTIES(${DEAL_II_BASE_NAME} PROPERTIES - VERSION ${VERSION} - SOVERSION ${VERSION} - ) + # + # Combine all debug OBJECT targets to a debug library: + # + ADD_LIBRARY(${DEAL_II_BASE_NAME}${DEAL_II_DEBUG_SUFFIX} + ${deal_ii_objects.g} + ) -SET_TARGET_PROPERTIES(${DEAL_II_BASE_NAME} PROPERTIES - LINK_FLAGS "${deal_ii_required_linker_flags}" - ) + SET_TARGET_PROPERTIES(${DEAL_II_BASE_NAME}${DEAL_II_DEBUG_SUFFIX} + PROPERTIES + VERSION ${VERSION} + # + # Sonaming: Well... we just use the version number. + # No point to wrack one's brain over the question whether a new version of + # a C++ library is still ABI backwards compatible :-] + # + SOVERSION ${VERSION} + LINK_FLAGS "${DEAL_II_SHARED_LINKER_FLAGS_DEBUG}" + COMPILE_DEFINITIONS "${DEAL_II_DEFINITIONS};${DEAL_II_DEFINITIONS_DEBUG}" + COMPILE_FLAGS "${DEAL_II_CXX_FLAGS_DEBUG}" + ) -TARGET_LINK_LIBRARIES(${DEAL_II_BASE_NAME} ${DEAL_II_EXTERNAL_LIBRARIES}) + TARGET_LINK_LIBRARIES(${DEAL_II_BASE_NAME}${DEAL_II_DEBUG_SUFFIX} + "${DEAL_II_EXTERNAL_LIBRARIES};${DEAL_II_EXTERNAL_LIBRARIES_DEBUG}" + ) + INSTALL(TARGETS ${DEAL_II_BASE_NAME}${DEAL_II_DEBUG_SUFFIX} + LIBRARY + DESTINATION ${DEAL_II_LIBRARY_RELDIR} + COMPONENT library + ) -# -# Finally, add a rule how to install the library: -# -INSTALL(TARGETS ${DEAL_II_BASE_NAME} - LIBRARY - DESTINATION ${DEAL_II_LIBRARY_RELDIR} - COMPONENT library - ) +ENDIF() + + +IF(CMAKE_BUILD_TYPE MATCHES "Release") + + # + # Combine all debug OBJECT targets to a debug library: + # + ADD_LIBRARY(${DEAL_II_BASE_NAME} + ${deal_ii_objects} + ) + + SET_TARGET_PROPERTIES(${DEAL_II_BASE_NAME} + PROPERTIES + VERSION ${VERSION} + # + # Sonaming: Well... we just use the version number. + # No point to wrack one's brain over the question whether a new version of + # a C++ library is still ABI backwards compatible :-] + # + SOVERSION ${VERSION} + LINK_FLAGS "${DEAL_II_SHARED_LINKER_FLAGS_RELEASE}" + COMPILE_DEFINITIONS "${DEAL_II_DEFINITIONS};${DEAL_II_DEFINITIONS_RELEASE}" + COMPILE_FLAGS "${DEAL_II_CXX_FLAGS_RELEASE}" + ) + + TARGET_LINK_LIBRARIES(${DEAL_II_BASE_NAME} + "${DEAL_II_EXTERNAL_LIBRARIES};${DEAL_II_EXTERNAL_LIBRARIES_RELEASE}" + ) + + INSTALL(TARGETS ${DEAL_II_BASE_NAME} + LIBRARY + DESTINATION ${DEAL_II_LIBRARY_RELDIR} + COMPONENT library + ) + +ENDIF() -- 2.39.5