From 82909772f9425b7b1856caca294b9371715fc839 Mon Sep 17 00:00:00 2001 From: maier Date: Mon, 10 Sep 2012 13:02:29 +0000 Subject: [PATCH] CMAKE Build environment for Umfpack git-svn-id: https://svn.dealii.org/branches/branch_cmake@26262 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/CMakeLists.txt | 2 +- .../cmake/modules/prepare_umfpack.cmake | 6 +- .../contrib/umfpack/AMD/Source/CMakeLists.txt | 10 +- .../umfpack/UMFPACK/Source/CMakeLists.txt | 147 +++++++++++++++--- 4 files changed, 136 insertions(+), 29 deletions(-) diff --git a/deal.II/CMakeLists.txt b/deal.II/CMakeLists.txt index fedb57c2e2..26f7d857cd 100644 --- a/deal.II/CMakeLists.txt +++ b/deal.II/CMakeLists.txt @@ -14,7 +14,7 @@ SET(CMAKE_INCLUDE_CURRENT_DIR true) OPTION(DEAL_II_USE_CONTRIB "Build and use contrib libraries bundled with the source tarball." - OFF + ON ) OPTION(DEAL_II_WITH_THREADS "Build deal.II with support for threads. This pulls in libtbb as a dependency." diff --git a/deal.II/contrib/cmake/modules/prepare_umfpack.cmake b/deal.II/contrib/cmake/modules/prepare_umfpack.cmake index 0b0a3b0c5b..abbb96ea6b 100644 --- a/deal.II/contrib/cmake/modules/prepare_umfpack.cmake +++ b/deal.II/contrib/cmake/modules/prepare_umfpack.cmake @@ -15,8 +15,10 @@ IF(DEAL_II_USE_CONTRIB) ) LIST(APPEND deal_ii_additional_object_files - $ - $ + ${obj_umfpack_object_files} + $ + $ + $ ) ELSE() FIND_PACKAGE(Umfpack REQUIRED) diff --git a/deal.II/contrib/umfpack/AMD/Source/CMakeLists.txt b/deal.II/contrib/umfpack/AMD/Source/CMakeLists.txt index cab431af89..48e90d6bdd 100644 --- a/deal.II/contrib/umfpack/AMD/Source/CMakeLists.txt +++ b/deal.II/contrib/umfpack/AMD/Source/CMakeLists.txt @@ -5,7 +5,6 @@ SET(src_amd amd_control.c amd_defaults.c amd_dump.c - amd_global.c amd_info.c amd_order.c amd_postorder.c @@ -14,4 +13,11 @@ SET(src_amd amd_valid.c ) -ADD_LIBRARY(obj_amd OBJECT ${src_amd}) + +ADD_LIBRARY(obj_amd_int OBJECT ${src_amd}) +SET_TARGET_PROPERTIES(obj_amd_int PROPERTIES COMPILE_FLAGS "-DDINT") + +ADD_LIBRARY(obj_amd_long OBJECT ${src_amd}) +SET_TARGET_PROPERTIES(obj_amd_long PROPERTIES COMPILE_FLAGS "-DDLONG") + +ADD_LIBRARY(obj_amd_global OBJECT "amd_global.c") diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/CMakeLists.txt b/deal.II/contrib/umfpack/UMFPACK/Source/CMakeLists.txt index a2fc174ee8..403923e9d6 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/CMakeLists.txt +++ b/deal.II/contrib/umfpack/UMFPACK/Source/CMakeLists.txt @@ -1,4 +1,9 @@ -SET(src_umfpack +# +# Logic copied from the distributed UMFPACK Makefile. (... where everything +# is explained contrary to this... mess) +# + +SET(src_umfpack_UMF umf_2by2.c umf_analyze.c umf_apply_order.c @@ -29,6 +34,28 @@ SET(src_umfpack umf_mem_free_tail_block.c umf_mem_init_memoryspace.c umf_multicompile.c + umf_realloc.c + umf_report_perm.c + umf_report_vector.c + umf_row_search.c + umf_scale.c + umf_scale_column.c + umf_set_stats.c + umf_singletons.c + umf_solve.c + umf_start_front.c + umf_store_lu.c + umf_symbolic_usage.c + umf_transpose.c + umf_triplet.c + umf_tuple_lengths.c + umf_usolve.c + umf_utsolve.c + umf_valid_numeric.c + umf_valid_symbolic.c + ) + +SET(src_umfpack_UMFPACK umfpack_col_to_triplet.c umfpack_defaults.c umfpack_free_numeric.c @@ -60,28 +87,100 @@ SET(src_umfpack umfpack_timer.c umfpack_transpose.c umfpack_triplet_to_col.c - umf_realloc.c - umf_report_perm.c - umf_report_vector.c - umf_row_search.c - umf_scale.c - umf_scale_column.c - umf_set_stats.c - umf_singletons.c - umf_solve.c - umf_start_front.c - umf_store_lu.c - umf_symbolic_usage.c - umf_transpose.c - umf_triplet.c - umf_tuple_lengths.c - umf_usolve.c - umf_utsolve.c - umf_valid_numeric.c - umf_valid_symbolic.c ) -# -# TODO: This would be way too easy... -# We must set also set a lot of DEFINES via TARGET_PROPERTIES -ADD_LIBRARY(obj_umfpack OBJECT ${src_umfpack}) + +#------------------------------------------------------------------------------- +# compile each int and long routine (with no real/complex version) +#------------------------------------------------------------------------------- + +ADD_LIBRARY(obj_umfpack_I_UMF OBJECT ${src_umfpack_UMF}) +SET_TARGET_PROPERTIES(obj_umfpack_I_UMF PROPERTIES COMPILE_FLAGS "-DDINT") + +ADD_LIBRARY(obj_umfpack_L_UMF OBJECT ${src_umfpack_UMF}) +SET_TARGET_PROPERTIES(obj_umfpack_L_UMF PROPERTIES COMPILE_FLAGS "-DDLONG") + +ADD_LIBRARY(obj_umfpack_I_UMFPACK OBJECT ${src_umfpack_UMFPACK}) +SET_TARGET_PROPERTIES(obj_umfpack_I_UMFPACK PROPERTIES COMPILE_FLAGS "-DDINT") + +ADD_LIBRARY(obj_umfpack_L_UMFPACK OBJECT ${src_umfpack_UMFPACK}) +SET_TARGET_PROPERTIES(obj_umfpack_L_UMFPACK PROPERTIES COMPILE_FLAGS "-DDLONG") + +#------------------------------------------------------------------------------- +# compile each routine in the DI version +#------------------------------------------------------------------------------- + +ADD_LIBRARY(obj_umfpack_DI_TSOLVE OBJECT umf_ltsolve.c umf_utsolve.c) +SET_TARGET_PROPERTIES(obj_umfpack_DI_TSOLVE PROPERTIES COMPILE_FLAGS "-DDINT -DCONJUGATE_SOLVE") + +ADD_LIBRARY(obj_umfpack_DI_TRIPLET_MAP_NOX OBJECT umf_triplet.c) +SET_TARGET_PROPERTIES(obj_umfpack_DI_TRIPLET_MAP_NOX PROPERTIES COMPILE_FLAGS "-DDINT -DDO_MAP") + +ADD_LIBRARY(obj_umfpack_DI_TRIPLET_MAP_X OBJECT umf_triplet.c) +SET_TARGET_PROPERTIES(obj_umfpack_DI_TRIPLET_MAP_X PROPERTIES COMPILE_FLAGS "-DDINT -DDO_MAP -DDO_VALUES") + +ADD_LIBRARY(obj_umfpack_DI_TRIPLET_NOMAP_X OBJECT umf_triplet.c) +SET_TARGET_PROPERTIES(obj_umfpack_DI_TRIPLET_NOMAP_X PROPERTIES COMPILE_FLAGS "-DDINT -DDO_VALUES") + +ADD_LIBRARY(obj_umfpack_DI_STORE OBJECT umf_store_lu.c) +SET_TARGET_PROPERTIES(obj_umfpack_DI_STORE PROPERTIES COMPILE_FLAGS "-DDINT -DDROP") + +ADD_LIBRARY(obj_umfpack_DI_ASSEMBLE OBJECT umf_assemble.c) +SET_TARGET_PROPERTIES(obj_umfpack_DI_ASSEMBLE PROPERTIES COMPILE_FLAGS "-DDINT -DFIXQ") + +ADD_LIBRARY(obj_umfpack_DI_SOLVE OBJECT umfpack_solve.c) +SET_TARGET_PROPERTIES(obj_umfpack_DI_SOLVE PROPERTIES COMPILE_FLAGS "-DDINT -DWSOLVE") + +#------------------------------------------------------------------------------- +# compile each routine in the DL version +#------------------------------------------------------------------------------- + +ADD_LIBRARY(obj_umfpack_DL_TSOLVE OBJECT umf_ltsolve.c umf_utsolve.c) +SET_TARGET_PROPERTIES(obj_umfpack_DL_TSOLVE PROPERTIES COMPILE_FLAGS "-DDLONG -DCONJUGATE_SOLVE") + +ADD_LIBRARY(obj_umfpack_DL_TRIPLET_MAP_NOX OBJECT umf_triplet.c) +SET_TARGET_PROPERTIES(obj_umfpack_DL_TRIPLET_MAP_NOX PROPERTIES COMPILE_FLAGS "-DDLONG -DDO_MAP") + +ADD_LIBRARY(obj_umfpack_DL_TRIPLET_MAP_X OBJECT umf_triplet.c) +SET_TARGET_PROPERTIES(obj_umfpack_DL_TRIPLET_MAP_X PROPERTIES COMPILE_FLAGS "-DDLONG -DDO_MAP -DDO_VALUES") + +ADD_LIBRARY(obj_umfpack_DL_TRIPLET_NOMAP_X OBJECT umf_triplet.c) +SET_TARGET_PROPERTIES(obj_umfpack_DL_TRIPLET_NOMAP_X PROPERTIES COMPILE_FLAGS "-DDLONG -DDO_VALUES") + +ADD_LIBRARY(obj_umfpack_DL_STORE OBJECT umf_store_lu.c) +SET_TARGET_PROPERTIES(obj_umfpack_DL_STORE PROPERTIES COMPILE_FLAGS "-DDLONG -DDROP") + +ADD_LIBRARY(obj_umfpack_DL_ASSEMBLE OBJECT umf_assemble.c) +SET_TARGET_PROPERTIES(obj_umfpack_DL_ASSEMBLE PROPERTIES COMPILE_FLAGS "-DDLONG -DFIXQ") + +ADD_LIBRARY(obj_umfpack_DL_SOLVE OBJECT umfpack_solve.c) +SET_TARGET_PROPERTIES(obj_umfpack_DL_SOLVE PROPERTIES COMPILE_FLAGS "-DDLONG -DWSOLVE") + +#------------------------------------------------------------------------------- +# Create the generic routines (GN) using a generic rule +#------------------------------------------------------------------------------- + +ADD_LIBRARY(obj_umfpack_GENERIC OBJECT ${src_umfpack_UMFPACK}) + + +SET(obj_umfpack_object_files + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + ) -- 2.39.5