From cc88048e2b66d3e0fe8562b7da27199f9acba2f1 Mon Sep 17 00:00:00 2001
From: Andreas Adelmann <andreas.adelmann@psi.ch>
Date: Mon, 24 Jun 2024 21:02:42 +0200
Subject: [PATCH] small tweeks

---
 CMakeLists.txt     | 58 ++++++++++++++++++++++------------------------
 src/CMakeLists.txt | 10 +++++---
 2 files changed, 35 insertions(+), 33 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b93945630..09a156cac 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,7 @@
 cmake_minimum_required (VERSION 3.20.3)
 project (OPALX VERSION 2024.1.00 LANGUAGES C CXX)
+include(FetchContent)
+link_directories(LINK_DIRECTORIES)
 set (PROJECT_BUGREPORT opal@lists.psi.ch)
 
 set (OPALX_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
@@ -27,7 +29,7 @@ endif ()
 add_compile_options (-Wall)
 add_compile_options (-Wunused)
 add_compile_options (-Wextra)
-add_compile_options (-Werror)
+# add_compile_options (-Werror)
 add_compile_options (-Wno-unused-parameter)
 add_compile_options (-Wno-error=unused-variable)
 
@@ -40,24 +42,27 @@ message (STATUS "Build type is: " ${CMAKE_BUILD_TYPE})
 
 # Select flags.
 set (CMAKE_CXX_STANDARD 20)
+set (CMAKE_CUDA_EXTENSIONS OFF)
 set (CMAKE_CXX_STANDARD_REQUIRED ON)
-set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g ")
-set (CMAKE_CXX_FLAGS_RELEASE "-O3")
-set (CMAKE_CXX_FLAGS_DEBUG  "-O0 -g")
+set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g  -O3")
+set (CMAKE_CXX_FLAGS_RELEASE "-g -O3 ")
+set (CMAKE_CXX_FLAGS_DEBUG  "-g")
 
+if (NOT "${IPPL_PLATFORMS}" STREQUAL "CUDA" AND CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
+    # Use sanitizer flags for GCC or Clang only
+     set (CMAKE_CXX_FLAGS_DEBUG  "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address,undefined")
+endif ()
 
-if ("${Kokkos_DEVICES}" MATCHES "CUDA")
-    set (CMAKE_CXX_FLAGS_DEBUG "-O0 -g -G --diag-suppress=20011")
-endif()
+#if ("${IPPL_PLATFORMS}" STREQUAL "CUDA")
+#    set (CMAKE_CXX_FLAGS_DEBUG  "${CMAKE_CXX_FLAGS_DEBUG} -G") #-diag-suppress=611")
+#endif()
+
+message (STATUS "CMAKE_CXX_FLAGS_DEBUG: ${CMAKE_CXX_FLAGS_DEBUG}")
 
 # Disable compile time assert (used by IPPL)
 add_definitions (-DNOCTAssert)
 
 #add_compile_options (-ferror-limit=1)
-
-#add_compile_options (-Wno-deprecated-declarations)
-#add_compile_options (-Wno-unused)
-#add_compile_options (-Wextra)
 add_compile_options (-Wno-error=uninitialized)
 add_compile_options (-Wno-error=restrict)
 add_compile_options (-Wno-error=unused-function)
@@ -81,26 +86,19 @@ message (STATUS "The C++ compiler version is: ${CMAKE_CXX_COMPILER_VERSION}")
 message (STATUS "The MPI C++ compiler is: ${MPI_CXX_COMPILER}")
 message (STATUS "The underlying C++ compiler is: ${CMAKE_CXX_COMPILER}")
 
-find_package(Heffte 2.2.0 REQUIRED)
-message (STATUS "Found Heffte_DIR: ${Heffte_DIR}")
-find_library(HEFFTE_LIBRARY heffte HINTS ${Heffte_DIR}/../..)
-message (STATUS "Found HEFFTE lib: ${HEFFTE_LIBRARY}")
-
-
-find_package(Kokkos REQUIRED)
-message (STATUS "Found Kokkos_DIR: ${Kokkos_DIR}")
-if ("${Kokkos_DEVICES}" MATCHES "CUDA")
-    set (CMAKE_CXX_FLAGS_DEBUG "-O0 -g -G --diag-suppress=20011")
-endif()
-find_library(KOKKOS_LIBRARY1 NAMES kokkoscore HINTS ${Kokkos_DIR}/../..)
-find_library(KOKKOS_LIBRARY2 NAMES kokkoscontainers HINTS ${Kokkos_DIR}/../..)
-find_library(KOKKOS_LIBRARY3 NAMES kokkossimd HINTS ${Kokkos_DIR}/../..)
-message (STATUS "Found Kokkos lib: ${KOKKOS_LIBRARY1}:${KOKKOS_LIBRARY2}:${KOKKOS_LIBRARY3}")
-
-find_package (Ippl REQUIRED)
 message (STATUS "Found IPPL_DIR: ${IPPL_DIR}")
-
-find_library(IPPL_LIBRARY ippl HINTS ${IPPL_LIBRARY_DIR}) 
+if(NOT IPPL_VERSION)
+    set(IPPL_VERSION "3.2.0")
+    message(STATUS "Defaulting to IPPL-${IPPL_VERSION}")
+endif()
+FetchContent_Declare(ippl
+    #URL https://github.com/IPPL-framework/ippl/archive/refs/tags/IPPL-${IPPL_VERSION}.tar.gz
+    GIT_REPOSITORY https://github.com/IPPL-framework/ippl.git
+    GIT_SHALLOW True
+    DOWNLOAD_EXTRACT_TIMESTAMP True
+)
+FetchContent_MakeAvailable(ippl)
+include_directories("${IPPL_SOURCE_DIR}/src")
 
 message (STATUS "Found Ippl_INC: ${IPPL_INCLUDE_DIR}")
 message (STATUS "Found Ippl_LIB: ${IPPL_LIBRARY}")
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index d51355a0c..5cb7f1fdf 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -89,14 +89,18 @@ add_library (libOPAL ${OPAL_SRCS})
 set_target_properties (libOPAL PROPERTIES OUTPUT_NAME OPAL)
 
 target_link_libraries (libOPAL
+    PUBLIC
     ${MPI_CXX_LIBRARIES}
-    )
+    ippl
+    Heffte
+)
 
 message (STATUS "OPAL_LIBS is: " ${CMAKE_BINARY_DIR})
 
 add_executable (opalx Main.cpp)
 target_link_libraries( opalx
-    ${CMAKE_BINARY_DIR}/src/libOPAL.a
+    PUBLIC
+    libOPAL
     ${KOKKOS_LIBRARY1}
     ${KOKKOS_LIBRARY2}
     ${KOKKOS_LIBRARY3}
@@ -133,4 +137,4 @@ set (HDRS
     changes.h
     )
 
-install (FILES ${HDRS} DESTINATION "${CMAKE_INSTALL_PREFIX}/include/src")
\ No newline at end of file
+install (FILES ${HDRS} DESTINATION "${CMAKE_INSTALL_PREFIX}/include/src")
-- 
GitLab