From a1b4a8287bc65342857effd095f45725ceb4aa33 Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Thu, 15 Apr 2021 16:28:27 +0200
Subject: [PATCH] [cmake] Added function ogs_add_executable for proper warning
 levels.

---
 scripts/cmake/Functions.cmake | 34 ++++++++++++++++++++++++++++++----
 1 file changed, 30 insertions(+), 4 deletions(-)

diff --git a/scripts/cmake/Functions.cmake b/scripts/cmake/Functions.cmake
index bc47dff8255..1f8213cdd0c 100644
--- a/scripts/cmake/Functions.cmake
+++ b/scripts/cmake/Functions.cmake
@@ -12,9 +12,6 @@ macro(GET_SOURCE_FILES source_files)
     file(GLOB GET_SOURCE_FILES_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
          CONFIGURE_DEPENDS ${DIR}/*.h
     )
-    file(GLOB GET_SOURCE_FILES_TEMPLATES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
-         CONFIGURE_DEPENDS ${DIR}/*.tpp
-    )
     file(GLOB GET_SOURCE_FILES_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
          CONFIGURE_DEPENDS ${DIR}/*.cpp
     )
@@ -81,7 +78,7 @@ function(add_autogen_include target)
     endif()
 endfunction()
 
-# Replacement for add_library() for ogs targets
+# Replacement for add_library() for ogs libraries
 function(ogs_add_library targetName)
     set(options STATIC SHARED)
     cmake_parse_arguments(ogs_add_library "${options}" "" "" ${ARGN})
@@ -132,6 +129,35 @@ function(ogs_add_library targetName)
     GroupSourcesByFolder(${targetName})
 endfunction()
 
+# Replacement for ogs_add_executable() for ogs executables
+function(ogs_add_executable targetName)
+    cmake_parse_arguments(ogs_add_executable "" "" "" ${ARGN})
+
+    foreach(file ${ogs_add_executable_UNPARSED_ARGUMENTS})
+        get_filename_component(file_path ${file} REALPATH)
+        list(APPEND files ${file_path})
+    endforeach()
+
+    add_executable(${targetName} ${files})
+
+    target_compile_options(
+        ${targetName}
+        PRIVATE # OR does not work with cotire
+                # $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>,
+                # $<CXX_COMPILER_ID:GNU>>:-Wall -Wextra>
+                $<$<CXX_COMPILER_ID:Clang>:-Wall
+                -Wextra
+                -Wunreachable-code>
+                $<$<CXX_COMPILER_ID:AppleClang>:-Wall
+                -Wextra
+                -Wunreachable-code>
+                $<$<CXX_COMPILER_ID:GNU>:-Wall
+                -Wextra
+                -Wunreachable-code>
+                $<$<CXX_COMPILER_ID:MSVC>:/W3>
+    )
+endfunction()
+
 # Parses current directory into a list
 function(current_dir_as_list baseDir outList)
     file(RELATIVE_PATH REL_DIR ${PROJECT_SOURCE_DIR}/${baseDir}
-- 
GitLab