From 68389ebe7bd5d1e97f54963d4163bd1b55f5b1f4 Mon Sep 17 00:00:00 2001
From: thorstenhater <24411438+thorstenhater@users.noreply.github.com>
Date: Thu, 4 Feb 2021 12:02:44 +0100
Subject: [PATCH] Do not build/use dynamic catalogue tests if not built with
 -fPIC (#1341)

Fixes #1340.
---
 test/unit/CMakeLists.txt   | 23 ++++++++++++-----------
 test/unit/test_mechcat.cpp |  3 +++
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt
index dfda9efc..b2474313 100644
--- a/test/unit/CMakeLists.txt
+++ b/test/unit/CMakeLists.txt
@@ -174,16 +174,6 @@ set(unit_sources
     unit_test_catalogue.cpp
 )
 
-
-# for unit testing
-make_catalogue(
-  NAME dummy
-  SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/dummy"
-  OUTPUT "CAT_DUMMY_SOURCES"
-  MECHS dummy
-  ARBOR "${PROJECT_SOURCE_DIR}"
-  STANDALONE ON)
-
 if(ARB_WITH_GPU)
     list(APPEND unit_sources
         test_intrin.cu
@@ -215,7 +205,18 @@ endif()
 add_executable(unit EXCLUDE_FROM_ALL ${unit_sources} ${test_mech_sources})
 add_dependencies(unit build_test_mods)
 add_dependencies(tests unit)
-add_dependencies(unit dummy-catalogue)
+
+if(${CMAKE_POSITION_INDEPENDENT_CODE})
+  make_catalogue(
+    NAME dummy
+    SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/dummy"
+    OUTPUT "CAT_DUMMY_SOURCES"
+    MECHS dummy
+    ARBOR "${PROJECT_SOURCE_DIR}"
+    STANDALONE ON)
+  target_compile_definitions(unit PRIVATE USE_DYNAMIC_CATALOGUES)
+  add_dependencies(unit dummy-catalogue)
+endif()
 
 if(ARB_WITH_NVCC)
     target_compile_options(unit PRIVATE -DARB_CUDA)
diff --git a/test/unit/test_mechcat.cpp b/test/unit/test_mechcat.cpp
index 2b6b1a64..2809b31d 100644
--- a/test/unit/test_mechcat.cpp
+++ b/test/unit/test_mechcat.cpp
@@ -291,6 +291,7 @@ TEST(mechcat, names) {
     }
 }
 
+#ifdef USE_DYNAMIC_CATALOGUES
 TEST(mechcat, loading) {
     EXPECT_THROW(load_catalogue(LIBDIR "/does-not-exist-catalogue.so"), file_not_found_error);
     EXPECT_THROW(load_catalogue(LIBDIR "/libarbor.a"), bad_catalogue_error);
@@ -298,7 +299,9 @@ TEST(mechcat, loading) {
     EXPECT_NO_THROW(cat = &load_catalogue(LIBDIR "/dummy-catalogue.so"));
     ASSERT_NE(cat, nullptr);
     EXPECT_EQ(std::vector<std::string>{"dummy"}, cat->mechanism_names());
+
 }
+#endif
 
 TEST(mechcat, derived_info) {
     auto cat = build_fake_catalogue();
-- 
GitLab