From 4f66134d267987dc06bff4f9367396a6fa20729d Mon Sep 17 00:00:00 2001
From: Maximilian Reininghaus <maximilian.reininghaus@kit.edu>
Date: Tue, 14 Mar 2023 15:43:56 +0100
Subject: [PATCH] fix build when C8_FLUKALIB is undefined

---
 modules/fluka/CMakeLists.txt       | 20 ++++++++++----------
 src/modules/fluka/strip_flukahp.sh |  5 +++++
 tests/modules/CMakeLists.txt       |  2 +-
 3 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/modules/fluka/CMakeLists.txt b/modules/fluka/CMakeLists.txt
index 8c9c17fb4..d760442bf 100644
--- a/modules/fluka/CMakeLists.txt
+++ b/modules/fluka/CMakeLists.txt
@@ -1,15 +1,19 @@
 set(C8_FLUKALIB CACHE STRING "path to libflukahp.a")
 
-if (DEFINED C8_FLUKALIB)
+if (EXISTS "${C8_FLUKALIB}")
     set (input_dir ${PROJECT_SOURCE_DIR}/src/modules/fluka)
     
     # we remove flrndm_.o from the original libflukahp.a and save the result as libflukahp-norndm.a
-    add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/libflukahp-norndm.a COMMAND ${input_dir}/strip_flukahp.sh ${C8_FLUKALIB} ${CMAKE_BINARY_DIR})
-    add_custom_target(generate_libfluka-norndm DEPENDS ${CMAKE_BINARY_DIR}/libflukahp-norndm.a)
+    add_custom_command(
+        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/libflukahp-norndm.a
+        COMMAND ${input_dir}/strip_flukahp.sh ${C8_FLUKALIB} ${CMAKE_CURRENT_BINARY_DIR}
+    )
+    add_custom_target(generate_libfluka-norndm DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/libflukahp-norndm.a)
 
     add_library(flukahp-norndm STATIC IMPORTED)
     add_dependencies(flukahp-norndm generate_libfluka-norndm)
-    set_property(TARGET flukahp-norndm PROPERTY IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/libflukahp-norndm.a)
+    set_property(TARGET flukahp-norndm PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/libflukahp-norndm.a)
+
     find_library(MATH_LIBRARY m)
     target_link_libraries(flukahp-norndm INTERFACE gfortran ${MATH_LIBRARY})
     target_include_directories (flukahp-norndm INTERFACE
@@ -29,12 +33,6 @@ if (DEFINED C8_FLUKALIB)
       $<INSTALL_INTERFACE:include/corsika_modules/fluka>
       )
     
-    set_target_properties (
-      fluka
-      PROPERTIES
-      POSITION_INDEPENDENT_CODE 1
-      )
-    
     install (
       FILES
       fluka.hpp
@@ -51,4 +49,6 @@ if (DEFINED C8_FLUKALIB)
     # add fluka to corsika8 build
     add_dependencies (CORSIKA8 fluka)
     target_link_libraries (CORSIKA8 INTERFACE fluka)
+else()
+    message("C8_FLUKALIB not set/invalid, building without FLUKA support")
 endif()
diff --git a/src/modules/fluka/strip_flukahp.sh b/src/modules/fluka/strip_flukahp.sh
index 0599ca987..61367bce1 100755
--- a/src/modules/fluka/strip_flukahp.sh
+++ b/src/modules/fluka/strip_flukahp.sh
@@ -14,6 +14,11 @@
 flukalibOrig="$1"
 target="$2"
 
+if [ ! -r "$flukalibOrig" ]; then
+    echo "\"$flukalibOrig\" not readable" 1>&2
+    exit 1
+fi
+
 tmpdir=`mktemp -d fluka_objectsXXXXXX`
 
 echo "extracting objects from $1 into `realpath $tmpdir`..."
diff --git a/tests/modules/CMakeLists.txt b/tests/modules/CMakeLists.txt
index a677ff581..16a0e66f0 100644
--- a/tests/modules/CMakeLists.txt
+++ b/tests/modules/CMakeLists.txt
@@ -17,7 +17,7 @@ set (test_modules_sources
   testSophia.cpp
 )
   
-if (DEFINED C8_FLUKALIB)
+if (EXISTS "${C8_FLUKALIB}")
     list(APPEND test_modules_sources "testFluka.cpp")
 endif()
 
-- 
GitLab