From 08450e517a910a4bfdd4aa1b9bfe940357a95166 Mon Sep 17 00:00:00 2001 From: Izaak Beekman Date: Sun, 20 Jan 2019 20:31:02 -0500 Subject: [PATCH] Use static libs for C code instead of object libs - Try adding headers back to fakempi.c --- CMakeLists.txt | 38 ++++++++++++++++++++++++++++++++++---- base/modules/fakempi.c | 4 +++- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bdd5f33e5..4c458eaf2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -377,8 +377,23 @@ endif() # cbind.a, util.a krylov.a prec.a base.a include(${CMAKE_CURRENT_LIST_DIR}/base/CMakeLists.txt) -add_library(base_C OBJECT ${base_source_C_files}) -add_library(base ${base_source_files} $) +if(WIN32) + add_library(psb_base_C STATIC ${base_source_C_files}) + target_compile_definitions(psb_base_C + PRIVATE -DWIN32 -D_LIB -DWIN64) + set_target_properties(psb_base_C + PROPERTIES + LINKER_LANGUAGE C + POSITION_INDEPENDENT_CODE TRUE) + target_link_libraries(psb_base_C + PUBLIC kernel32 user32 shell32) + add_library(base ${base_source_files}) + target_link_libraries(base + PUBLIC psb_base_C) +else() + add_library(base_C OBJECT ${base_source_C_files}) + add_library(base ${base_source_files} $) +endif() set_target_properties(base PROPERTIES Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}" @@ -425,8 +440,23 @@ target_include_directories(krylov PUBLIC target_link_libraries(krylov PUBLIC base prec) include(${CMAKE_CURRENT_LIST_DIR}/util/CMakeLists.txt) -add_library(util_C OBJECT ${util_source_C_files}) -add_library(util ${util_source_files} $) +if(WIN32) + add_library(psb_util_C STATIC ${util_source_C_files}) + target_compile_definitions(psb_util_C + PRIVATE -DWIN32 -D_LIB -DWIN64) + set_target_properties(psb_util_C + PROPERTIES + LINKER_LANGUAGE C + POSITION_INDEPENDENT_CODE TRUE) + target_link_libraries(psb_util_C + PUBLIC kernel32 user32 shell32) + add_library(util ${util_source_files}) + target_link_libraries(util + PUBLIC psb_util_C) +else() + add_library(util_C OBJECT ${util_source_C_files}) + add_library(util ${util_source_files} $) +endif() set_target_properties(util PROPERTIES Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}" diff --git a/base/modules/fakempi.c b/base/modules/fakempi.c index b50fb1d4b..02aef6d3e 100644 --- a/base/modules/fakempi.c +++ b/base/modules/fakempi.c @@ -1,4 +1,6 @@ #if !(defined(_WIN32) || defined(WIN32)) +#include +#include #include #endif #include @@ -107,7 +109,7 @@ double mpi_wtime() { #if defined(WIN32) || defined(_WIN32) - __int64 tim, freq; + LARGE_INTEGER tim, freq; double seconds; QueryPerformanceCounter(&tim);