From 4791732bd6000b55b342132e084ce847e9e27754 Mon Sep 17 00:00:00 2001 From: Sebastian Ehlert <28669218+awvwgk@users.noreply.github.com> Date: Thu, 24 Mar 2022 13:47:30 +0100 Subject: [PATCH 1/2] Fix linking issue with shared libraries --- src/tests/hash_functions/CMakeLists.txt | 34 ++++++++++--------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/src/tests/hash_functions/CMakeLists.txt b/src/tests/hash_functions/CMakeLists.txt index db8f9b0fa..570f450d9 100755 --- a/src/tests/hash_functions/CMakeLists.txt +++ b/src/tests/hash_functions/CMakeLists.txt @@ -1,25 +1,19 @@ #ADDTEST(hash_functions) -set(SRC -nmhash_scalar.c -pengyhash.c -SpookyV2.cpp -SpookyV2Test.cpp -waterhash.c -generate_hash_arrays.cpp -) - enable_language(CXX) enable_language(C) -add_library(libc_hash ${SRC}) - -set(CMAKE_FORTRAN_LINK_EXECUTABLE " -o ") - -add_executable(test_hash_functions test_hash_functions.f90) -target_link_libraries(test_hash_functions "${PROJECT_NAME}" "test-drive::test-drive" "libc_hash") -add_test(NAME hash_functions - COMMAND $ ${CMAKE_CURRENT_BINARY_DIR} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) - -set_target_properties(test_hash_functions PROPERTIES LINKER_LANGUAGE FORTRAN) +ADDTEST(hash_functions) +target_sources( + test_hash_functions + PRIVATE + nmhash_scalar.c + pengyhash.c + SpookyV2.cpp + SpookyV2Test.cpp + waterhash.c + generate_hash_arrays.cpp +) +if(CMAKE_Fortran_COMPILER_ID MATCHES "^Intel") + set_target_properties(test_hash_functions PROPERTIES LINKER_LANGUAGE Fortran) +endif() From 0f88076854a4583758d195155a7ba82002a7ee3f Mon Sep 17 00:00:00 2001 From: Sebastian Ehlert <28669218+awvwgk@users.noreply.github.com> Date: Sat, 26 Mar 2022 09:55:27 +0100 Subject: [PATCH 2/2] Add no range check option to target --- config/DefaultFlags.cmake | 1 - src/CMakeLists.txt | 8 ++++++++ src/tests/hash_functions/CMakeLists.txt | 7 +++++++ src/tests/hash_functions_perf/CMakeLists.txt | 8 ++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/config/DefaultFlags.cmake b/config/DefaultFlags.cmake index f8c8d5367..eafe7a409 100644 --- a/config/DefaultFlags.cmake +++ b/config/DefaultFlags.cmake @@ -3,7 +3,6 @@ if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU") CMAKE_Fortran_FLAGS_INIT "-fimplicit-none" "-ffree-line-length-132" - "-fno-range-check" ) set( CMAKE_Fortran_FLAGS_RELEASE_INIT diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d48975a4e..78270a559 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -94,6 +94,14 @@ set(SRC add_library(${PROJECT_NAME} ${SRC}) +if(CMAKE_Fortran_COMPILER_ID STREQUAL GNU AND CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 10.0) + target_compile_options( + ${PROJECT_NAME} + PRIVATE + $<$:-fno-range-check> + ) +endif() + set(LIB_MOD_DIR ${CMAKE_CURRENT_BINARY_DIR}/mod_files/) # We need the module directory before we finish the configure stage since the # build interface might resolve before the module directory is generated by CMake diff --git a/src/tests/hash_functions/CMakeLists.txt b/src/tests/hash_functions/CMakeLists.txt index 570f450d9..eacdd727e 100755 --- a/src/tests/hash_functions/CMakeLists.txt +++ b/src/tests/hash_functions/CMakeLists.txt @@ -17,3 +17,10 @@ target_sources( if(CMAKE_Fortran_COMPILER_ID MATCHES "^Intel") set_target_properties(test_hash_functions PROPERTIES LINKER_LANGUAGE Fortran) endif() +if(CMAKE_Fortran_COMPILER_ID STREQUAL GNU AND CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 10.0) + target_compile_options( + test_hash_functions + PRIVATE + $<$:-fno-range-check> + ) +endif() diff --git a/src/tests/hash_functions_perf/CMakeLists.txt b/src/tests/hash_functions_perf/CMakeLists.txt index 459719c32..1c14ccbf8 100755 --- a/src/tests/hash_functions_perf/CMakeLists.txt +++ b/src/tests/hash_functions_perf/CMakeLists.txt @@ -1,2 +1,10 @@ ADDTEST(32_bit_hash_performance) ADDTEST(64_bit_hash_performance) + +if(CMAKE_Fortran_COMPILER_ID STREQUAL GNU AND CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 10.0) + target_compile_options( + test_64_bit_hash_performance + PRIVATE + $<$:-fno-range-check> + ) +endif()