From cf145a41b5f27d88aaadeb4734a1fa81b6db46c4 Mon Sep 17 00:00:00 2001 From: kj16609 Date: Mon, 2 Jun 2025 15:38:32 -0400 Subject: [PATCH] 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()