Fixes cmake functions for handling UI files, Also adds GitInfo to the executable through defines
This commit is contained in:
@@ -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
87
modules/git/commit.cmake
Normal 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()
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user