From 99c684b26e46d673ecc01f59201e1faea6d5284d Mon Sep 17 00:00:00 2001 From: kj16609 Date: Tue, 15 Apr 2025 01:08:30 -0400 Subject: [PATCH 1/5] Remove CXX_MODULES from target sources --- modules/helpers.cmake | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/modules/helpers.cmake b/modules/helpers.cmake index 545ebbf..53bc2cd 100644 --- a/modules/helpers.cmake +++ b/modules/helpers.cmake @@ -13,9 +13,6 @@ function(PostSetup) endfunction() function(AddFGLExecutable NAME SRC_SOURCES_LOCATION) - set(CMAKE_CXX_STANDARD 23) - set(CMAKE_CXX_STANDARD_REQUIRED ON) - file(GLOB_RECURSE M_SOURCES CONFIGURE_DEPENDS ${SRC_SOURCES_LOCATION}/**.cppm) @@ -28,7 +25,7 @@ function(AddFGLExecutable NAME SRC_SOURCES_LOCATION) add_executable(${NAME}) target_sources(${NAME} PUBLIC ${SOURCES}) - target_sources(${NAME} PUBLIC FILE_SET modules TYPE CXX_MODULES FILES ${M_SOURCES}) + # target_sources(${NAME} PUBLIC FILE_SET modules TYPE CXX_MODULES FILES ${M_SOURCES}) target_include_directories(${NAME} PRIVATE ${SRC_SOURCES_LOCATION}) set_target_properties(${NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") From 4f760aa88d06d22cc8a3d8a486e90ec2b0650ac6 Mon Sep 17 00:00:00 2001 From: kj16609 Date: Sun, 1 Jun 2025 19:51:42 -0400 Subject: [PATCH 2/5] Warning Fixes --- modules/compiler/gcc.cmake | 26 ++++++++++++++------------ modules/helpers.cmake | 9 +++++++++ 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/modules/compiler/gcc.cmake b/modules/compiler/gcc.cmake index e07cba1..ad7dfae 100644 --- a/modules/compiler/gcc.cmake +++ b/modules/compiler/gcc.cmake @@ -103,6 +103,9 @@ AppendWarningFlag("-Wuse-after-free") #Warns about accessing a value after calling 'free' on it AppendWarningFlag("-Wuseless-cast") #Warns about a cast that is useless. + AppendWarningFlag("-Wno-non-virtual-dtor") + + AppendWarningFlag("-Wno-terminate") # Disables -Wterminate errors, These are kinda weird and I tend to use throw inside of dtors with the intent of it terminating after. So we'll just silence them. # Starting other weird flags AppendWarningFlag("-fdiagnostics-show-template-tree") # Shows the template diagnostic info as a tree instead. @@ -112,30 +115,29 @@ string(TOUPPER ${CMAKE_BUILD_TYPE} UPPER_BUILD_TYPE) - if (NOT DEFINED STATIC_ANAYLSIS) - set(STATIC_ANYLSIS 1) + if (NOT DEFINED FGL_STATIC_ANALYSIS) + set(FGL_STATIC_ANALYSIS 0) endif () - - # if (STATIC_ANALYSIS EQUAL 1 AND UPPER_BUILD_TYPE STREQUAL "DEBUG") - # list(APPEND FGL_CONFIG "-fanalyzer") - # if (NOT DEFINED USE_WERROR OR NOT USE_WERROR) - # list(APPEND FGL_CONFIG "-Wanalyzer-too-complex") - # endif () - # elseif (NOT UPPER_BUILD_TYPE STREQUAL "DEBUG") - if (NOT UPPER_BUILD_TYPE STREQUAL "DEBUG") + if (FGL_STATIC_ANALYSIS EQUAL 1) + list(APPEND FGL_CONFIG "-fanalyzer") + # list(APPEND FGL_CONFIG "-Wanalyzer-too-complex") + # Breaks more often then it is helpful + list(APPEND FGL_CONFIG "-Wno-analyzer-use-of-uninitialized-value") + list(APPEND FGL_CONFIG "-Wno-analyzer-malloc-leak") + elseif (NOT UPPER_BUILD_TYPE STREQUAL "DEBUG") list(APPEND FGL_CONFIG "-flto=auto") endif () list(APPEND FGL_CONFIG "-ftree-vectorize") - list(APPEND FGL_CONFIG "-fmax-errors=6") + list(APPEND FGL_CONFIG "-fmax-errors=2") LIST(APPEND FGL_CONFIG "-fmodules-ts") LIST(APPEND FGL_CONFIG "-std=c++23") #AppendWarningFlag("-fanalyzer") #AppendWarningFlag("-Wanalyzer-too-complex") - if (DEFINED USE_WERROR AND USE_WERROR) + if (DEFINED FGL_STRICT_WARNINGS AND FGL_STRICT_WARNINGS) list(APPEND FGL_CONFIG "-Werror") endif () diff --git a/modules/helpers.cmake b/modules/helpers.cmake index 53bc2cd..aa2c25d 100644 --- a/modules/helpers.cmake +++ b/modules/helpers.cmake @@ -32,6 +32,14 @@ function(AddFGLExecutable NAME SRC_SOURCES_LOCATION) SetFGLFlags(${NAME}) endfunction() +function(addFGLFlags NAME) + + if (DEFINED FGL_STRICT_WARNINGS AND FGL_STRICT_WARNINGS) + target_compile_definitions(${NAME} PUBLIC "-DFGL_STRICT_WARNINGS=1") + endif () + +endfunction() + function(AddFGLLibrary NAME MODE SRC_SOURCES_LOCATION INCLUDE_SOURCES_LOCATION) file(GLOB_RECURSE CPP_SOURCES CONFIGURE_DEPENDS ${SRC_SOURCES_LOCATION}/**.cpp) file(GLOB_RECURSE HPP_SOURCES CONFIGURE_DEPENDS ${SRC_SOURCES_LOCATION}/**.hpp) @@ -40,6 +48,7 @@ function(AddFGLLibrary NAME MODE SRC_SOURCES_LOCATION INCLUDE_SOURCES_LOCATION) target_include_directories(${NAME} PUBLIC ${INCLUDE_SOURCES_LOCATION}) target_include_directories(${NAME} PRIVATE ${SRC_SOURCES_LOCATION}) SetFGLFlags(${NAME}) + addFGLFlags(${NAME}) endfunction() function(AddFGLChildLibrary NAME MODE SRC_SOURCES_LOCATION INCLUDE_SOURCES_LOCATION) From 2073a3e3b26d915fe702f1afc44eb070042c5a27 Mon Sep 17 00:00:00 2001 From: kj16609 Date: Sun, 1 Jun 2025 19:52:06 -0400 Subject: [PATCH 3/5] Descriptor cloning & copying --- modules/compiler/gcc.cmake | 9 ++++----- modules/helpers.cmake | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/modules/compiler/gcc.cmake b/modules/compiler/gcc.cmake index ad7dfae..2432f8b 100644 --- a/modules/compiler/gcc.cmake +++ b/modules/compiler/gcc.cmake @@ -165,14 +165,14 @@ list(APPEND FGL_FLAGS ${FGL_CONFIG}) list(APPEND FGL_FLAGS ${FGL_FINAL_FLAGS_${UPPER_BUILD_TYPE}}) - # list(APPEND FGL_FLAGS ${FGL_WARNINGS}) + list(APPEND FGL_FLAGS ${FGL_WARNINGS}) list(APPEND FGL_CHILD_FLAGS ${FGL_FINAL_FLAGS_${UPPER_BUILD_TYPE}}) # Final sets - #set(FGL_FLAGS "${FGL_CONFIG};${FGL_FINAL_FLAGS_${UPPER_BUILD_TYPE}};${FGL_WARNINGS}") # Flags for our shit - #set(FGL_FLAGS "${FGL_OPTIMIZATION_FLAGS_${UPPER_BUILD_TYPE}}" PARENT_SCOPE) - #set(FGL_CHILD_FLAGS "${FGL_FINAL_FLAGS_RELEASE}") # Child flags for adding optimization to anything we build ourselves but doesn't follow our standard + set(FGL_FLAGS "${FGL_CONFIG};${FGL_FINAL_FLAGS_${UPPER_BUILD_TYPE}};${FGL_WARNINGS}") # Flags for our shit + set(FGL_FLAGS "${FGL_OPTIMIZATION_FLAGS_${UPPER_BUILD_TYPE}}" PARENT_SCOPE) + set(FGL_CHILD_FLAGS "${FGL_FINAL_FLAGS_RELEASE}") # Child flags for adding optimization to anything we build ourselves but doesn't follow our standard # We use release flags since we really don't need to be using debug flags for anything not ours SET_PROPERTY(GLOBAL PROPERTY FGL_FLAGS ${FGL_FLAGS}) @@ -180,7 +180,6 @@ message("-- FGL_FLAGS: ${FGL_FLAGS}") message("-- FGL_CHILD_FLAGS: ${FGL_CHILD_FLAGS}") - endif () endfunction() diff --git a/modules/helpers.cmake b/modules/helpers.cmake index aa2c25d..625f8b4 100644 --- a/modules/helpers.cmake +++ b/modules/helpers.cmake @@ -58,5 +58,5 @@ function(AddFGLChildLibrary NAME MODE SRC_SOURCES_LOCATION INCLUDE_SOURCES_LOCAT add_library(${NAME} ${MODE} ${CPP_SOURCES} ${HPP_SOURCES} ${INCLUDE_SOURCES_LOCATION}) target_include_directories(${NAME} PUBLIC ${INCLUDE_SOURCES_LOCATION}) target_include_directories(${NAME} PRIVATE ${SRC_SOURCES_LOCATION}) - # SetFGLFlags(${NAME}) + addFGLFlags(${NAME}) endfunction() From cf145a41b5f27d88aaadeb4734a1fa81b6db46c4 Mon Sep 17 00:00:00 2001 From: kj16609 Date: Mon, 2 Jun 2025 15:38:32 -0400 Subject: [PATCH 4/5] Add in proper module support for projects in the future --- modules/helpers.cmake | 63 ++++++++++++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 21 deletions(-) diff --git a/modules/helpers.cmake b/modules/helpers.cmake index 625f8b4..57be7ed 100644 --- a/modules/helpers.cmake +++ b/modules/helpers.cmake @@ -12,6 +12,21 @@ function(PostSetup) CompilerPostSetup() endfunction() + +function(ConfigureFGLTarget NAME SRC_DIR INCLUDE_DIR) + if (INCLUDE_DIR) + target_include_directories(${NAME} PUBLIC ${INCLUDE_DIR}) + endif () + + target_include_directories(${NAME} PRIVATE ${SRC_DIR}) + if (DEFINED FGL_STRICT_WARNINGS AND FGL_STRICT_WARNINGS) + target_compile_definitions(${NAME} PUBLIC "-DFGL_STRICT_WARNINGS=1") + endif () + + set_target_properties(${NAME} PROPERTIES CXX_MODULE_STD 1) + target_compile_features(${NAME} PUBLIC cxx_std_23) +endfunction() + function(AddFGLExecutable NAME SRC_SOURCES_LOCATION) file(GLOB_RECURSE M_SOURCES CONFIGURE_DEPENDS ${SRC_SOURCES_LOCATION}/**.cppm) @@ -21,34 +36,40 @@ function(AddFGLExecutable NAME SRC_SOURCES_LOCATION) ${SRC_SOURCES_LOCATION}/**.hpp ) - message("Compiling ${NAME} WITH ${M_SOURCES} as modules") - - add_executable(${NAME}) + add_executable(${NAME} ${SOURCES}) target_sources(${NAME} PUBLIC ${SOURCES}) - # target_sources(${NAME} PUBLIC FILE_SET modules TYPE CXX_MODULES FILES ${M_SOURCES}) + target_sources(${NAME} PUBLIC FILE_SET modules TYPE CXX_MODULES FILES ${M_SOURCES}) + + ConfigureFGLTarget(${NAME} ${SRC_SOURCES_LOCATION} "") - target_include_directories(${NAME} PRIVATE ${SRC_SOURCES_LOCATION}) set_target_properties(${NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") - SetFGLFlags(${NAME}) -endfunction() - -function(addFGLFlags NAME) - - if (DEFINED FGL_STRICT_WARNINGS AND FGL_STRICT_WARNINGS) - target_compile_definitions(${NAME} PUBLIC "-DFGL_STRICT_WARNINGS=1") - endif () - endfunction() function(AddFGLLibrary NAME MODE SRC_SOURCES_LOCATION INCLUDE_SOURCES_LOCATION) - file(GLOB_RECURSE CPP_SOURCES CONFIGURE_DEPENDS ${SRC_SOURCES_LOCATION}/**.cpp) - file(GLOB_RECURSE HPP_SOURCES CONFIGURE_DEPENDS ${SRC_SOURCES_LOCATION}/**.hpp) + + file(GLOB_RECURSE M_SOURCES CONFIGURE_DEPENDS + ${SRC_SOURCES_LOCATION}/**.cppm) + + file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS + ${SRC_SOURCES_LOCATION}/**.cpp + ${SRC_SOURCES_LOCATION}/**.hpp + ) + + file(GLOB_RECURSE INCLUDE_MODULE_SOURCES CONFIGURE_DEPENDS ${INCLUDE_SOURCES_LOCATION}/**.cppm) file(GLOB_RECURSE INCLUDE_HPP_SOURCES CONFIGURE_DEPENDS ${INCLUDE_SOURCES_LOCATION}/**.hpp) - add_library(${NAME} ${MODE} ${CPP_SOURCES} ${HPP_SOURCES} ${INCLUDE_SOURCES_LOCATION}) - target_include_directories(${NAME} PUBLIC ${INCLUDE_SOURCES_LOCATION}) - target_include_directories(${NAME} PRIVATE ${SRC_SOURCES_LOCATION}) + + add_library(${NAME} ${MODE}) + target_sources(${NAME} PUBLIC ${SOURCES}) + target_sources(${NAME} PUBLIC FILE_SET modules TYPE CXX_MODULES FILES ${INCLUDE_MODULE_SOURCES}) + + message("=== ${NAME} sources ${SOURCES}") + message("=== ${NAME} sources ${M_SOURCES}") + message("=== ${NAME} sources ${INCLUDE_MODULE_SOURCES}") + message("=== ${NAME} sources ${INCLUDE_HPP_SOURCES}") + + ConfigureFGLTarget(${NAME} ${SRC_SOURCES_LOCATION} ${INCLUDE_SOURCES_LOCATION}) + SetFGLFlags(${NAME}) - addFGLFlags(${NAME}) endfunction() function(AddFGLChildLibrary NAME MODE SRC_SOURCES_LOCATION INCLUDE_SOURCES_LOCATION) @@ -58,5 +79,5 @@ function(AddFGLChildLibrary NAME MODE SRC_SOURCES_LOCATION INCLUDE_SOURCES_LOCAT add_library(${NAME} ${MODE} ${CPP_SOURCES} ${HPP_SOURCES} ${INCLUDE_SOURCES_LOCATION}) target_include_directories(${NAME} PUBLIC ${INCLUDE_SOURCES_LOCATION}) target_include_directories(${NAME} PRIVATE ${SRC_SOURCES_LOCATION}) - addFGLFlags(${NAME}) + ConfigureFGLTarget(${NAME} ${SRC_SOURCES_LOCATION} ${INCLUDE_SOURCES_LOCATION}) endfunction() From 9f5f2ab4c8cb5a77c216329706faa3710fe683a6 Mon Sep 17 00:00:00 2001 From: kj16609 Date: Thu, 26 Jun 2025 16:33:38 -0400 Subject: [PATCH 5/5] Remove cxx_modules flag again from targets --- modules/helpers.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/helpers.cmake b/modules/helpers.cmake index 6180fe0..127b6a8 100644 --- a/modules/helpers.cmake +++ b/modules/helpers.cmake @@ -23,7 +23,6 @@ function(ConfigureFGLTarget NAME SRC_DIR INCLUDE_DIR) target_compile_definitions(${NAME} PUBLIC "-DFGL_STRICT_WARNINGS=1") endif () - set_target_properties(${NAME} PROPERTIES CXX_MODULE_STD 1) target_compile_features(${NAME} PUBLIC cxx_std_23) endfunction()