From: maier Date: Tue, 25 Sep 2012 17:23:33 +0000 (+0000) Subject: Code deduplication X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b1ed4ba9f430661d1ebdafcc008f22cd49ad3c19;p=dealii-svn.git Code deduplication git-svn-id: https://svn.dealii.org/branches/branch_cmake@26731 0785d39b-7218-0410-832d-ea1e28bc413d --- 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 index 4101364061..28a4cd894c 100644 --- a/deal.II/cmake/macros/macro_deal_ii_add_c_library.cmake +++ b/deal.II/cmake/macros/macro_deal_ii_add_c_library.cmake @@ -5,44 +5,23 @@ MACRO(DEAL_II_ADD_C_LIBRARY library) - IF(CMAKE_BUILD_TYPE MATCHES "Debug") - # - # and a debug target - # - ADD_LIBRARY(${library}_debug - ${ARGN} - ) - - SET_TARGET_PROPERTIES(${library}_debug 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}" - ) - - FILE(APPEND - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/deal_ii_objects_debug - "$\n" - ) - ENDIF() + FOREACH(build ${DEAL_II_BUILD_TYPES}) + STRING(TOLOWER ${build} build_lowercase) - IF(CMAKE_BUILD_TYPE MATCHES "Release") - # - # Add a release target - # - ADD_LIBRARY(${library} + ADD_LIBRARY(${library}.${build_lowercase} ${ARGN} ) - SET_TARGET_PROPERTIES(${library} 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_TARGET_PROPERTIES(${library}.${build_lowercase} PROPERTIES + LINK_FLAGS "${DEAL_II_SHARED_LINKER_FLAGS_${build}}" + COMPILE_DEFINITIONS "${DEAL_II_DEFINITIONS};${DEAL_II_DEFINITIONS_${build}}" + COMPILE_FLAGS "${DEAL_II_C_FLAGS_${build}}" ) FILE(APPEND - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/deal_ii_objects - "$\n" + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/deal_ii_objects_${build_lowercase} + "$\n" ) - ENDIF() + ENDFOREACH() 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 index 2320ff75f6..d99e9c8e86 100644 --- a/deal.II/cmake/macros/macro_deal_ii_add_definitions.cmake +++ b/deal.II/cmake/macros/macro_deal_ii_add_definitions.cmake @@ -5,19 +5,14 @@ MACRO(DEAL_II_ADD_DEFINITIONS name) - IF(CMAKE_BUILD_TYPE MATCHES "Debug") - GET_TARGET_PROPERTY(macro_definitions ${name}_debug COMPILE_DEFINITIONS) - SET_TARGET_PROPERTIES(${name}_debug PROPERTIES - COMPILE_DEFINITIONS "${ARGN};${macro_definitions}" - ) - ENDIF() + FOREACH(build ${DEAL_II_BUILD_TYPES}) + STRING(TOLOWER ${build} build_lowercase) - IF(CMAKE_BUILD_TYPE MATCHES "Release") - GET_TARGET_PROPERTY(macro_definitions ${name} COMPILE_DEFINITIONS) - SET_TARGET_PROPERTIES(${name} PROPERTIES + GET_TARGET_PROPERTY(macro_definitions ${name}.${build_lowercase} COMPILE_DEFINITIONS) + SET_TARGET_PROPERTIES(${name}.${build_lowercase} PROPERTIES COMPILE_DEFINITIONS "${ARGN};${macro_definitions}" ) - ENDIF() + ENDFOREACH() ENDMACRO() diff --git a/deal.II/cmake/macros/macro_deal_ii_add_dependencies.cmake b/deal.II/cmake/macros/macro_deal_ii_add_dependencies.cmake index e118017ef8..f9b3178d88 100644 --- a/deal.II/cmake/macros/macro_deal_ii_add_dependencies.cmake +++ b/deal.II/cmake/macros/macro_deal_ii_add_dependencies.cmake @@ -5,12 +5,11 @@ MACRO(DEAL_II_ADD_DEPENDENCIES name target) - IF(CMAKE_BUILD_TYPE MATCHES "Debug") - ADD_DEPENDENCIES(${name}_debug ${target}_debug) - ENDIF() - - IF(CMAKE_BUILD_TYPE MATCHES "Release") - ADD_DEPENDENCIES(${name} ${target}) - ENDIF() + FOREACH(build ${DEAL_II_BUILD_TYPES}) + STRING(TOLOWER ${build} build_lowercase) + ADD_DEPENDENCIES(${name}.${build_lowercase} + ${target}.${build_lowercase} + ) + ENDFOREACH() 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 8cf6c4dd46..364dab3435 100644 --- a/deal.II/cmake/macros/macro_deal_ii_add_library.cmake +++ b/deal.II/cmake/macros/macro_deal_ii_add_library.cmake @@ -5,44 +5,23 @@ MACRO(DEAL_II_ADD_LIBRARY library) - IF(CMAKE_BUILD_TYPE MATCHES "Debug") - # - # and a debug target - # - ADD_LIBRARY(${library}_debug - ${ARGN} - ) - - SET_TARGET_PROPERTIES(${library}_debug PROPERTIES - LINK_FLAGS "${DEAL_II_SHARED_LINKER_FLAGS_DEBUG}" - COMPILE_DEFINITIONS "${DEAL_II_DEFINITIONS};${DEAL_II_DEFINITIONS_DEBUG}" - COMPILE_FLAGS "${DEAL_II_CXX_FLAGS_DEBUG}" - ) - - FILE(APPEND - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/deal_ii_objects_debug - "$\n" - ) - ENDIF() + FOREACH(build ${DEAL_II_BUILD_TYPES}) + STRING(TOLOWER ${build} build_lowercase) - IF(CMAKE_BUILD_TYPE MATCHES "Release") - # - # Add a release target - # - ADD_LIBRARY(${library} + ADD_LIBRARY(${library}.${build_lowercase} ${ARGN} ) - SET_TARGET_PROPERTIES(${library} PROPERTIES - LINK_FLAGS "${DEAL_II_SHARED_LINKER_FLAGS_RELEASE}" - COMPILE_DEFINITIONS "${DEAL_II_DEFINITIONS};${DEAL_II_DEFINITIONS_RELEASE}" - COMPILE_FLAGS "${DEAL_II_CXX_FLAGS_RELEASE}" + SET_TARGET_PROPERTIES(${library}.${build_lowercase} PROPERTIES + LINK_FLAGS "${DEAL_II_SHARED_LINKER_FLAGS_${build}}" + COMPILE_DEFINITIONS "${DEAL_II_DEFINITIONS};${DEAL_II_DEFINITIONS_${build}}" + COMPILE_FLAGS "${DEAL_II_CXX_FLAGS_${build}}" ) FILE(APPEND - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/deal_ii_objects - "$\n" + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/deal_ii_objects_${build_lowercase} + "$\n" ) - ENDIF() + ENDFOREACH() ENDMACRO() diff --git a/deal.II/cmake/macros/macro_expand_instantiations.cmake b/deal.II/cmake/macros/macro_expand_instantiations.cmake index 7305d33d6a..f923b0d8c4 100644 --- a/deal.II/cmake/macros/macro_expand_instantiations.cmake +++ b/deal.II/cmake/macros/macro_expand_instantiations.cmake @@ -43,12 +43,10 @@ MACRO(EXPAND_INSTANTIATIONS target inst_in_files) # Add a dependency to target so that target.inst is fully generated # before target will be processed. # - IF(CMAKE_BUILD_TYPE MATCHES "Debug") - ADD_DEPENDENCIES(${target}_debug ${target}.inst) - ENDIF() - IF(CMAKE_BUILD_TYPE MATCHES "Release") - ADD_DEPENDENCIES(${target} ${target}.inst) - ENDIF() + FOREACH(build ${DEAL_II_BUILD_TYPES}) + STRING(TOLOWER ${build} build_lowercase) + ADD_DEPENDENCIES(${target}.${build_lowercase} ${target}.inst) + ENDFOREACH() ENDMACRO() diff --git a/deal.II/cmake/setup_deal_ii.cmake b/deal.II/cmake/setup_deal_ii.cmake index 10ea87d850..defcbdc1c8 100644 --- a/deal.II/cmake/setup_deal_ii.cmake +++ b/deal.II/cmake/setup_deal_ii.cmake @@ -20,6 +20,7 @@ # DEAL_II_PROJECT_CONFIG_NAME *) # DEAL_II_BASE_NAME *) # DEAL_II_DEBUG_SUFFIX *) +# DEAL_II_RELEASE_SUFFIX *) # DEAL_II_LIBRARY_NAME_DEBUG # DEAL_II_LIBRARY_NAME_RELEASE # @@ -33,6 +34,8 @@ # DEAL_II_INCLUDE_DIRS # DEAL_II_LIBRARIES # +# DEAL_II_BUILD_TYPES +# # *) Values marked with *) can be overwritten by the command line via # -D<...> # @@ -58,8 +61,8 @@ STRING(REGEX REPLACE SET(DEAL_II_PROJECT_CONFIG_NAME "${DEAL_II_PACKAGE_NAME}") SET_IF_EMPTY(DEAL_II_BASE_NAME "deal_II") - SET_IF_EMPTY(DEAL_II_DEBUG_SUFFIX ".g") +SET_IF_EMPTY(DEAL_II_RELEASE_SUFFIX "") SET(DEAL_II_PATH ${CMAKE_INSTALL_PREFIX}) @@ -112,6 +115,8 @@ IF(CMAKE_BUILD_TYPE MATCHES "Debug") DEBUG "${CMAKE_INSTALL_PREFIX}/${DEAL_II_LIBRARY_RELDIR}/${DEAL_II_LIBRARY_NAME_DEBUG}" ) + + LIST(APPEND DEAL_II_BUILD_TYPES "DEBUG") ENDIF() IF(CMAKE_BUILD_TYPE MATCHES "Release") @@ -122,5 +127,7 @@ IF(CMAKE_BUILD_TYPE MATCHES "Release") RELEASE "${CMAKE_INSTALL_PREFIX}/${DEAL_II_LIBRARY_RELDIR}/${DEAL_II_LIBRARY_NAME_RELEASE}" ) + + LIST(APPEND DEAL_II_BUILD_TYPES "RELEASE") ENDIF() diff --git a/deal.II/config/CMakeLists.txt b/deal.II/config/CMakeLists.txt index 063fa5700a..5188c823d3 100644 --- a/deal.II/config/CMakeLists.txt +++ b/deal.II/config/CMakeLists.txt @@ -53,18 +53,11 @@ IF(DEAL_II_COMPONENT_COMPAT_FILES) ${DEAL_II_INCLUDE_DIRS} ) - IF(CMAKE_BUILD_TYPE MATCHES "Debug") - LIST(APPEND MAKEFILE_BUILD_TYPES "DEBUG") - ENDIF() - IF(CMAKE_BUILD_TYPE MATCHES "Release") - LIST(APPEND MAKEFILE_BUILD_TYPES "RELEASE") - ENDIF() - - FOREACH(type ${MAKEFILE_BUILD_TYPES}) - TO_STRING_AND_ADD_PREFIX(MAKEFILE_DEFINITIONS_${type} + FOREACH(build ${DEAL_II_BUILD_TYPES}) + TO_STRING_AND_ADD_PREFIX(MAKEFILE_DEFINITIONS_${build} "-D" ${DEAL_II_USER_DEFINITIONS} - ${DEAL_II_USER_DEFINITIONS_${type}} + ${DEAL_II_USER_DEFINITIONS_${build}} ) # @@ -74,18 +67,18 @@ IF(DEAL_II_COMPONENT_COMPAT_FILES) # FOREACH(lib ${DEAL_II_EXTERNAL_LIBRARIES} - ${DEAL_II_EXTERNAL_LIBRARIES_${type}} - ${DEAL_II_LIBRARIES_${type}}) + ${DEAL_II_EXTERNAL_LIBRARIES_${build}} + ${DEAL_II_LIBRARIES_${build}}) GET_FILENAME_COMPONENT(path ${lib} PATH) - LIST(APPEND MAKEFILE_LIBS_${type} "-Wl,-rpath -Wl,${path}") - LIST(APPEND MAKEFILE_LIBS_${type} ${lib}) + LIST(APPEND MAKEFILE_LIBS_${build} "-Wl,-rpath -Wl,${path}") + LIST(APPEND MAKEFILE_LIBS_${build} ${lib}) ENDFOREACH() - TO_STRING(MAKEFILE_LIBS_${type} ${MAKEFILE_LIBS_${type}}) + TO_STRING(MAKEFILE_LIBS_${build} ${MAKEFILE_LIBS_${build}}) # # Put our linker flags directly in front of this string: # - SET(MAKEFILE_LIBS_${type} - "${CMAKE_SHARED_LINKER_FLAGS} ${DEAL_II_SHARED_LINKER_FLAGS_${type}} ${MAKEFILE_LIBS_${type}}" + SET(MAKEFILE_LIBS_${build} + "${CMAKE_SHARED_LINKER_FLAGS} ${DEAL_II_SHARED_LINKER_FLAGS_${build}} ${MAKEFILE_LIBS_${build}}" ) ENDFOREACH() diff --git a/deal.II/source/CMakeLists.txt b/deal.II/source/CMakeLists.txt index e10083a3f5..9f31091d15 100644 --- a/deal.II/source/CMakeLists.txt +++ b/deal.II/source/CMakeLists.txt @@ -17,61 +17,22 @@ ADD_SUBDIRECTORY(lac) ADD_SUBDIRECTORY(multigrid) ADD_SUBDIRECTORY(numerics) -IF(CMAKE_BUILD_TYPE MATCHES "Debug") - # - # Combine all debug OBJECT targets to a debug library: - # - FILE(STRINGS - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/deal_ii_objects_debug - deal_ii_objects_debug - ) - ADD_LIBRARY(${DEAL_II_BASE_NAME}${DEAL_II_DEBUG_SUFFIX} - ${deal_ii_objects_debug} - ) - - 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_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 - ) - -ENDIF() - - -IF(CMAKE_BUILD_TYPE MATCHES "Release") +FOREACH(build ${DEAL_II_BUILD_TYPES}) + STRING(TOLOWER ${build} build_lowercase) # - # Combine all release OBJECT targets to a release library: + # Combine all ${build} OBJECT targets to a ${build} library: # FILE(STRINGS - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/deal_ii_objects - deal_ii_objects + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/deal_ii_objects_${build_lowercase} + deal_ii_objects_${build_lowercase} ) - ADD_LIBRARY(${DEAL_II_BASE_NAME} - ${deal_ii_objects} + ADD_LIBRARY(${DEAL_II_BASE_NAME}${DEAL_II_${build}_SUFFIX} + ${deal_ii_objects_${build_lowercase}} ) - SET_TARGET_PROPERTIES(${DEAL_II_BASE_NAME} + SET_TARGET_PROPERTIES(${DEAL_II_BASE_NAME}${DEAL_II_${build}_SUFFIX} PROPERTIES VERSION ${VERSION} # @@ -80,20 +41,21 @@ IF(CMAKE_BUILD_TYPE MATCHES "Release") # 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}" + LINK_FLAGS "${DEAL_II_SHARED_LINKER_FLAGS_${build}}" + COMPILE_DEFINITIONS "${DEAL_II_DEFINITIONS};${DEAL_II_DEFINITIONS_${build}}" + COMPILE_FLAGS "${DEAL_II_CXX_FLAGS_${build}}" ) - TARGET_LINK_LIBRARIES(${DEAL_II_BASE_NAME} + TARGET_LINK_LIBRARIES(${DEAL_II_BASE_NAME}${DEAL_II_${build}_SUFFIX} ${DEAL_II_EXTERNAL_LIBRARIES} - ${DEAL_II_EXTERNAL_LIBRARIES_RELEASE} + ${DEAL_II_EXTERNAL_LIBRARIES_${build}} ) - INSTALL(TARGETS ${DEAL_II_BASE_NAME} + INSTALL(TARGETS ${DEAL_II_BASE_NAME}${DEAL_II_${build}_SUFFIX} LIBRARY DESTINATION ${DEAL_II_LIBRARY_RELDIR} COMPONENT library ) -ENDIF() +ENDFOREACH() +