From fcb285e075940a5bd8bc6e53d75b3f7a3fab2b79 Mon Sep 17 00:00:00 2001
From: Dan Vonk <daniel.vonk@tum.de>
Date: Tue, 2 Apr 2024 12:57:01 +0200
Subject: [PATCH] Generate SassenaConfig.h only once

---
 CMakeLists.txt                             | 30 ++++++++++++++++++++++
 {src/app => cmake}/SassenaConfig.hpp.cmake |  0
 src/app/CMakeLists.txt                     | 27 -------------------
 src/core/CMakeLists.txt                    |  2 +-
 4 files changed, 31 insertions(+), 28 deletions(-)
 rename {src/app => cmake}/SassenaConfig.hpp.cmake (100%)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 352bf28..62ab32e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -23,11 +23,41 @@ if(SASS_ENABLE_SANITIZERS)
     endif()
 endif()
 
+# Add the "-Werror" compiler flag to the specified target
+function(add_werror target)
+    if(NOT MSVC)
+        target_compile_options(${target} PRIVATE -Werror -Wno-error=deprecated-declarations -Wundef)
+        check_cxx_compiler_flag("-Werror -Wsuggest-override" CXX_SUPPORTS_SUGGEST_OVERRIDE)
+        if(CXX_SUPPORTS_SUGGEST_OVERRIDE)
+            target_compile_options(${target} PRIVATE "-Wsuggest-override")
+        endif()
+        # If we call directly -Wimplicit-fallthrough it's use it as a error ! not a warning
+        # we need to tell gcc that we can't want to manage it as error
+        # If code is ok we need to add [[fallthrough]]; before code
+        if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+            target_compile_options(${target} PRIVATE -Wno-error=implicit-fallthrough -Wimplicit-fallthrough)
+        endif()
+    endif()
+endfunction()
+
+if(SASS_USE_WERROR)
+    add_werror(SassenaCore)
+    add_werror(sassena)
+endif()
+
+if (SASS_BUILD_DOCS)
+    add_subdirectory(docs)
+endif()
+
 include(ExternalProject)
 include(FeatureSummary)
 include(GenerateExportHeader)
 include(GNUInstallDirs)
 
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+configure_file(cmake/SassenaConfig.hpp.cmake ${CMAKE_CURRENT_BINARY_DIR}/generated/SassenaConfig.hpp @ONLY)
+
 if(USE_DEVELOPER_MODE)
     find_package(Doxygen)
     set_package_properties(
diff --git a/src/app/SassenaConfig.hpp.cmake b/cmake/SassenaConfig.hpp.cmake
similarity index 100%
rename from src/app/SassenaConfig.hpp.cmake
rename to cmake/SassenaConfig.hpp.cmake
diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt
index 6581286..603c90a 100644
--- a/src/app/CMakeLists.txt
+++ b/src/app/CMakeLists.txt
@@ -1,41 +1,15 @@
-
-configure_file(
-  "SassenaConfig.hpp.cmake"
-  "SassenaConfig.hpp" @ONLY
-)
-
-set(sassena_SRCS
-  s_stage.cpp
-  sassena.cpp
-  s_maketnx.cpp
-)
-
-set(common_SRCS
-  common.hpp
-  common.cpp
-)
-
 add_executable(sassena
     sassena.cpp
-    ${common_SRCS}
 )
 
 add_executable(s_stage
    s_stage.cpp
-   ${common_SRCS}
 )
 
-
 add_executable(s_maketnx
    s_maketnx.cpp
-   ${common_SRCS}
 )
 
-# ADD_EXECUTABLE(unit_broadcast
-# 	src/common.cpp
-#     tests/unit_broadcast.cpp
-# )
-
 target_link_libraries (sassena
   PRIVATE
   SassenaCore
@@ -54,5 +28,4 @@ TARGET_LINK_LIBRARIES (s_stage
   SassenaCore
 )
 
-
 install(TARGETS sassena s_maketnx s_stage)
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index e64b0b7..413d658 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -1,4 +1,3 @@
-
 if(CRAY)
   set(CMAKE_CXX_COMPILER /opt/cray/xt-asyncpe/3.7/bin/CC)
   message(STATUS "Cray is chosen.")
@@ -126,6 +125,7 @@ target_include_directories(
   $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/sample>
   $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/stager>
   $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/scatter_devices>
+  $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/generated>
   PRIVATE
   ${CMAKE_CURRENT_SOURCE_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}/math
-- 
GitLab