Fixes cmake functions for handling UI files, Also adds GitInfo to the executable through defines

This commit is contained in:
2025-07-13 21:20:35 -04:00
parent 6dd2e2e6a3
commit b8a561872b
3 changed files with 98 additions and 1 deletions

View File

@@ -1,6 +1,7 @@
include(helpers)
include(git/commit)
if ((${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") OR (${CMAKE_CXX_PLATFORM_ID} STREQUAL "MinGW"))
include(compiler/gcc)

87
modules/git/commit.cmake Normal file
View File

@@ -0,0 +1,87 @@
function(getCommitHash OUTPUT_VARIABLE)
find_package(Git QUIET)
if (GIT_FOUND)
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_HASH
ERROR_VARIABLE GIT_ERROR
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE
)
if (NOT GIT_ERROR)
set(${OUTPUT_VARIABLE} ${GIT_HASH} PARENT_SCOPE)
else ()
set(${OUTPUT_VARIABLE} "unknown" PARENT_SCOPE)
endif ()
else ()
set(${OUTPUT_VARIABLE} "unknown" PARENT_SCOPE)
endif ()
endfunction()
function(getBranchName OUTPUT_VARIABLE)
find_package(Git QUIET)
if (GIT_FOUND)
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_BRANCH
ERROR_VARIABLE GIT_ERROR
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE
)
if (NOT GIT_ERROR)
set(${OUTPUT_VARIABLE} ${GIT_BRANCH} PARENT_SCOPE)
else ()
set(${OUTPUT_VARIABLE} "unknown" PARENT_SCOPE)
endif ()
else ()
set(${OUTPUT_VARIABLE} "unknown" PARENT_SCOPE)
endif ()
endfunction()
function(addGitCommitDefine TARGET)
getCommitHash(GIT_HASH)
target_compile_definitions(${TARGET} PRIVATE FGL_GIT_COMMIT="${GIT_HASH}")
endfunction()
function(addGitBranchDefine TARGET)
getBranchName(GIT_BRANCH)
target_compile_definitions(${TARGET} PRIVATE FGL_GIT_BRANCH="${GIT_BRANCH}")
endfunction()
function(getIsDirty OUTPUT_VARIABLE)
find_package(Git QUIET)
if (GIT_FOUND)
execute_process(
COMMAND ${GIT_EXECUTABLE} status --porcelain
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_STATUS
ERROR_VARIABLE GIT_ERROR
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE
)
if (NOT GIT_ERROR)
if (GIT_STATUS)
set(${OUTPUT_VARIABLE} "1" PARENT_SCOPE)
else ()
set(${OUTPUT_VARIABLE} "0" PARENT_SCOPE)
endif ()
else ()
set(${OUTPUT_VARIABLE} "-1" PARENT_SCOPE)
endif ()
else ()
set(${OUTPUT_VARIABLE} "-1" PARENT_SCOPE)
endif ()
endfunction()
function(addGitDirtyDefine TARGET)
getIsDirty(GIT_DIRTY)
target_compile_definitions(${TARGET} PRIVATE FGL_GIT_DIRTY=${GIT_DIRTY})
endfunction()
function(AddGitInfo TARGET)
addGitCommitDefine(${TARGET})
addGitBranchDefine(${TARGET})
addGitDirtyDefine(${TARGET})
endfunction()

View File

@@ -24,10 +24,13 @@ function(AddFGLExecutable NAME SRC_SOURCES_LOCATION)
${SRC_SOURCES_LOCATION}/**.hpp
)
file(GLOB_RECURSE UI_SOURCES CONFIGURE_DEPENDS
${SRC_SOURCES_LOCATION}/**.ui)
message("Compiling ${NAME} WITH ${M_SOURCES} as modules")
add_executable(${NAME})
target_sources(${NAME} PUBLIC ${SOURCES})
target_sources(${NAME} PUBLIC ${SOURCES} ${UI_SOURCES})
target_sources(${NAME} PUBLIC FILE_SET modules TYPE CXX_MODULES FILES ${M_SOURCES})
target_include_directories(${NAME} PRIVATE ${SRC_SOURCES_LOCATION})
@@ -35,6 +38,8 @@ function(AddFGLExecutable NAME SRC_SOURCES_LOCATION)
set_target_properties(${NAME} PROPERTIES CXX_STANDARD 23)
set_target_properties(${NAME} PROPERTIES CXX_STANDARD_REQUIRED ON)
SetFGLFlags(${NAME})
AddGitInfo(${NAME})
target_compile_definitions(${NAME} PRIVATE FGL_BUILD_TYPE="${CMAKE_BUILD_TYPE}")
endfunction()
function(AddFGLLibrary NAME MODE SRC_SOURCES_LOCATION INCLUDE_SOURCES_LOCATION)
@@ -48,6 +53,8 @@ function(AddFGLLibrary NAME MODE SRC_SOURCES_LOCATION INCLUDE_SOURCES_LOCATION)
set_target_properties(${NAME} PROPERTIES CXX_STANDARD 23)
set_target_properties(${NAME} PROPERTIES CXX_STANDARD_REQUIRED ON)
SetFGLFlags(${NAME})
AddGitInfo(${NAME})
target_compile_definitions(${NAME} PRIVATE FGL_BUILD_TYPE="${CMAKE_BUILD_TYPE}")
endfunction()
function(AddFGLModule NAME SRC_SOURCES_LOCATION)
@@ -56,6 +63,8 @@ function(AddFGLModule NAME SRC_SOURCES_LOCATION)
add_library(${NAME} MODULE ${CPP_SOURCES} ${HPP_SOURCES})
target_include_directories(${NAME} PRIVATE ${SRC_SOURCES_LOCATION})
SetFGLFlags(${NAME})
AddGitInfo(${NAME})
target_compile_definitions(${NAME} PRIVATE FGL_BUILD_TYPE="${CMAKE_BUILD_TYPE}")
endfunction()
function(AddFGLChildLibrary NAME MODE SRC_SOURCES_LOCATION INCLUDE_SOURCES_LOCATION)