From bf1ded0859c3be7fb2089c30c0aaebe337dd3d83 Mon Sep 17 00:00:00 2001 From: Soeren Peters <peters@irmb.tu-bs.de> Date: Fri, 4 Sep 2020 16:01:28 +0200 Subject: [PATCH] Add 3rd library cmake functions. --- CMake/3rd.cmake | 5 +++++ CMake/3rd/OpenMP.cmake | 19 ++++++++----------- CMake/3rd/boost.cmake | 5 +++-- CMake/3rd/cuda.cmake | 10 +++++----- CMake/3rd/gmock.cmake | 21 +++++++++++---------- CMake/3rd/mpi.cmake | 13 ++++++------- CMake/VirtualFluidsMacros.cmake | 2 +- CMakeLists.txt | 1 + src/basics/CMakeLists.txt | 3 ++- src/basics/Core/Input/Input.h | 2 ++ src/gpu/GksGpu/CMakeLists.txt | 6 +++--- src/gpu/GridGenerator/CMakeLists.txt | 5 ++--- src/gpu/VirtualFluids_GPU/CMakeLists.txt | 3 +-- 13 files changed, 50 insertions(+), 45 deletions(-) create mode 100644 CMake/3rd.cmake diff --git a/CMake/3rd.cmake b/CMake/3rd.cmake new file mode 100644 index 000000000..6cc488f94 --- /dev/null +++ b/CMake/3rd.cmake @@ -0,0 +1,5 @@ +include(${VF_CMAKE_DIR}/3rd/boost.cmake) +include(${VF_CMAKE_DIR}/3rd/cuda.cmake) +include(${VF_CMAKE_DIR}/3rd/gmock.cmake) +include(${VF_CMAKE_DIR}/3rd/mpi.cmake) +include(${VF_CMAKE_DIR}/3rd/OpenMP.cmake) \ No newline at end of file diff --git a/CMake/3rd/OpenMP.cmake b/CMake/3rd/OpenMP.cmake index fce16693d..bd7781b95 100644 --- a/CMake/3rd/OpenMP.cmake +++ b/CMake/3rd/OpenMP.cmake @@ -1,13 +1,10 @@ +function (linkOpenMP) -find_package(OpenMP) -if (OPENMP_FOUND) - #set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") - #set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") - #set (CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler ${OpenMP_CXX_FLAGS}") -endif() + find_package(OpenMP REQUIRED) -#message (Cuda Flags: ${OpenMP_CXX_FLAGS}) -vf_get_library_name(library_name) -if(OpenMP_CXX_FOUND) - target_link_libraries(${library_name} PUBLIC OpenMP::OpenMP_CXX) -endif() + if(OpenMP_CXX_FOUND) + vf_get_library_name(library_name) + target_link_libraries(${library_name} PUBLIC OpenMP::OpenMP_CXX) + endif() + +endfunction() \ No newline at end of file diff --git a/CMake/3rd/boost.cmake b/CMake/3rd/boost.cmake index fae5cdf65..544ae2d97 100644 --- a/CMake/3rd/boost.cmake +++ b/CMake/3rd/boost.cmake @@ -1,4 +1,4 @@ -macro(linkBoost components) +function(linkBoost components) if(BUILD_SHARED_LIBS) if (WIN32) set(Boost_USE_STATIC_LIBS ON) @@ -17,8 +17,9 @@ macro(linkBoost components) add_definitions( -DBOOST_ALL_NO_LIB ) # add_definitions( -DBOOST_ALL_DYN_LINK ) endif() + vf_get_library_name(library_name) find_package( Boost REQUIRED COMPONENTS ${components}) target_include_directories(${library_name} PRIVATE ${Boost_INCLUDE_DIR}) target_link_libraries(${library_name} PRIVATE ${Boost_LIBRARIES}) -endmacro(linkBoost) +endfunction() diff --git a/CMake/3rd/cuda.cmake b/CMake/3rd/cuda.cmake index 32b2e82d4..f39e4c417 100644 --- a/CMake/3rd/cuda.cmake +++ b/CMake/3rd/cuda.cmake @@ -1,4 +1,5 @@ +function(linkCUDA) find_path(CUDA_CUT_INCLUDE_DIR helper_cuda.h @@ -11,8 +12,7 @@ vf_get_library_name(library_name) target_include_directories(${library_name} PRIVATE ${CUDA_INCLUDE_DIRS} ${CUDA_CUT_INCLUDE_DIR}) - #set_property(TARGET ${targetName} PROPERTY CUDA_SEPARABLE_COMPILATION ON) - #set_property(TARGET ${targetName} PROPERTY CUDA_64_BIT_DEVICE_CODE ON) - - #set(CUDA_NVCC_FLAGS "-G" CACHE TYPE INTERNAL FORCE) - #set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS}; -gencode arch=compute_13,code=sm_13 ) + # set the following properties only for specific targets + # set_property(TARGET ${targetName} PROPERTY CUDA_SEPARABLE_COMPILATION ON) + # set_property(TARGET ${targetName} PROPERTY CUDA_64_BIT_DEVICE_CODE ON) +endfunction() \ No newline at end of file diff --git a/CMake/3rd/gmock.cmake b/CMake/3rd/gmock.cmake index b87f28492..205a3b9a1 100644 --- a/CMake/3rd/gmock.cmake +++ b/CMake/3rd/gmock.cmake @@ -3,14 +3,15 @@ # Note: gmock has to be build by the project itself (Located in 3rd). ################################################################################# -vf_get_library_test_name(library_name) -target_link_libraries(${library_name} PRIVATE gtest gmock gmock_main) +function (linkGMOCK) + vf_get_library_test_name(library_name) + target_link_libraries(${library_name} PRIVATE gtest gmock gmock_main) - -if(BUILD_SHARED_LIBS) - # add compile option according to - # https://github.com/google/googletest/blob/master/googletest/README.md#as-a-shared-library-dll - set_target_properties(${library_name} - PROPERTIES - COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1") -endif() + if(BUILD_SHARED_LIBS) + # add compile option according to + # https://github.com/google/googletest/blob/master/googletest/README.md#as-a-shared-library-dll + set_target_properties(${library_name} + PROPERTIES + COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1") + endif() +endfunction() \ No newline at end of file diff --git a/CMake/3rd/mpi.cmake b/CMake/3rd/mpi.cmake index a3c8826b6..93b3ee386 100644 --- a/CMake/3rd/mpi.cmake +++ b/CMake/3rd/mpi.cmake @@ -1,10 +1,9 @@ +function (linkMPI) + find_package(MPI REQUIRED) -vf_get_library_name(library_name) + vf_get_library_name(library_name) + target_include_directories(${library_name} PUBLIC ${MPI_CXX_INCLUDE_PATH}) + target_link_libraries(${library_name} PRIVATE MPI::MPI_CXX) -find_package(MPI REQUIRED) -target_include_directories(${library_name} PUBLIC ${MPI_CXX_INCLUDE_PATH}) - -#target_link_libraries(${library_name} PUBLIC ${MPI_CXX_LIBRARIES}) - -target_link_libraries(${library_name} PRIVATE MPI::MPI_CXX) +endfunction() \ No newline at end of file diff --git a/CMake/VirtualFluidsMacros.cmake b/CMake/VirtualFluidsMacros.cmake index 721d56b89..83274c2fb 100644 --- a/CMake/VirtualFluidsMacros.cmake +++ b/CMake/VirtualFluidsMacros.cmake @@ -222,7 +222,7 @@ function(vf_add_tests) target_include_directories(${library_test_name} PRIVATE ${VF_SRC_DIR}) # link googlemock - include(${VF_CMAKE_DIR}/3rd/gmock.cmake) + linkGMOCK() endfunction() diff --git a/CMakeLists.txt b/CMakeLists.txt index 4219695ee..9faf348c0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -53,6 +53,7 @@ include(CMakePrintHelpers) include(${VF_CMAKE_DIR}/CMakeCABMacros.cmake) include(${VF_CMAKE_DIR}/FileUtilities.cmake) include(${VF_CMAKE_DIR}/VirtualFluidsMacros.cmake) +include(${VF_CMAKE_DIR}/3rd.cmake) include(${VF_CMAKE_DIR}/CMakeMacros_old/general/FindCompiler.cmake) configure_file(src/basics/VirtualFluidsDefinitions.in.h ${CMAKE_BINARY_DIR}/VirtualFluidsDefinitions.h) diff --git a/src/basics/CMakeLists.txt b/src/basics/CMakeLists.txt index eb1ef8d2a..30fc6e9d1 100644 --- a/src/basics/CMakeLists.txt +++ b/src/basics/CMakeLists.txt @@ -17,6 +17,7 @@ IF(MSVC) target_compile_definitions(${library_name} PUBLIC NOMINMAX) # Disable Min/Max-Macros ENDIF(MSVC) -include (${VF_CMAKE_DIR}/3rd/mpi.cmake) + +linkMPI() vf_add_tests() \ No newline at end of file diff --git a/src/basics/Core/Input/Input.h b/src/basics/Core/Input/Input.h index 7adbc305f..9c95e2a16 100644 --- a/src/basics/Core/Input/Input.h +++ b/src/basics/Core/Input/Input.h @@ -15,6 +15,8 @@ namespace input public: static BASICS_EXPORT std::unique_ptr<Input> makeInput(std::istream &stream, const std::string &inputType); + virtual ~Input() = default; + virtual bool hasValue(const std::string &key) const = 0; virtual std::string getValue(const std::string &key) = 0; }; diff --git a/src/gpu/GksGpu/CMakeLists.txt b/src/gpu/GksGpu/CMakeLists.txt index 682bcccab..353a5c842 100644 --- a/src/gpu/GksGpu/CMakeLists.txt +++ b/src/gpu/GksGpu/CMakeLists.txt @@ -1,6 +1,6 @@ vf_add_library(BUILDTYPE shared DEPENDS basics GksMeshAdapter) -include (${VF_CMAKE_DIR}/3rd/cuda.cmake) -include (${VF_CMAKE_DIR}/3rd/mpi.cmake) -include (${VF_CMAKE_DIR}/3rd/OpenMP.cmake) +linkCUDA() +linkMPI() +linkOpenMP() diff --git a/src/gpu/GridGenerator/CMakeLists.txt b/src/gpu/GridGenerator/CMakeLists.txt index c974d02d6..86b49cc47 100644 --- a/src/gpu/GridGenerator/CMakeLists.txt +++ b/src/gpu/GridGenerator/CMakeLists.txt @@ -2,8 +2,7 @@ vf_add_library(BUILDTYPE shared DEPENDS basics) -include (${VF_CMAKE_DIR}/3rd/cuda.cmake) -include (${VF_CMAKE_DIR}/3rd/OpenMP.cmake) - +linkCUDA() +linkOpenMP() set_property(TARGET ${library_name} PROPERTY CUDA_SEPARABLE_COMPILATION ON) \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/CMakeLists.txt b/src/gpu/VirtualFluids_GPU/CMakeLists.txt index ebe26edce..be3a46dfc 100644 --- a/src/gpu/VirtualFluids_GPU/CMakeLists.txt +++ b/src/gpu/VirtualFluids_GPU/CMakeLists.txt @@ -9,8 +9,7 @@ ENDIF(MSVC) vf_add_library(BUILDTYPE shared DEPENDS ${libsToLink}) -include (${VF_CMAKE_DIR}/3rd/cuda.cmake) - +linkCUDA() #SET(TPN_WIN32 "/EHsc") #https://stackoverflow.com/questions/6832666/lnk2019-when-including-asio-headers-solution-generated-with-cmake -- GitLab