You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
3.2 KiB
100 lines
3.2 KiB
|
|
macro(configure_files srcDir destDir)
|
|
message(STATUS "Configuring directory ${destDir}")
|
|
make_directory(${destDir})
|
|
|
|
file(GLOB templateFiles RELATIVE ${srcDir} ${srcDir}/*)
|
|
foreach(templateFile ${templateFiles})
|
|
set(srcTemplatePath ${srcDir}/${templateFile})
|
|
if(NOT IS_DIRECTORY ${srcTemplatePath})
|
|
message(STATUS "Configuring file ${templateFile}")
|
|
configure_file(
|
|
${srcTemplatePath}
|
|
${destDir}/${templateFile}
|
|
@ONLY)
|
|
endif(NOT IS_DIRECTORY ${srcTemplatePath})
|
|
endforeach(templateFile)
|
|
endmacro(configure_files)
|
|
|
|
macro(create_git_version)
|
|
# Get the current working branch
|
|
execute_process(
|
|
COMMAND git rev-parse --abbrev-ref HEAD
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_BRANCH
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
# http://xit0.org/2013/04/cmake-use-git-branch-and-commit-details-in-project/
|
|
# Get the latest abbreviated commit hash of the working branch
|
|
execute_process(
|
|
COMMAND git log -1 --format=%h
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_COMMIT_HASH
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
# Get the date and time of last commit
|
|
execute_process(
|
|
COMMAND git log -1 --format=%cd --date=short
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_COMMIT_DATETIME
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
# Get current branch name
|
|
execute_process(
|
|
COMMAND git rev-parse --abbrev-ref HEAD
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_BRANCH_NAME
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
configure_file(
|
|
${CMAKE_SOURCE_DIR}/src/version.h.in
|
|
${CMAKE_BINARY_DIR}/gen/version.h
|
|
)
|
|
|
|
include_directories(${CMAKE_BINARY_DIR}/gen)
|
|
|
|
endmacro(create_git_version)
|
|
|
|
|
|
|
|
macro(resource_dir srcDir)
|
|
# Scan through resource folder for updated files and copy if none existing or changed
|
|
file (GLOB_RECURSE resources "${srcDir}/*.*")
|
|
|
|
foreach(resource ${resources})
|
|
get_filename_component(filename ${resource} NAME)
|
|
get_filename_component(dir ${resource} DIRECTORY)
|
|
get_filename_component(dirname ${dir} NAME)
|
|
|
|
# message("${dirname} ${srcDir}")
|
|
|
|
set(topdir ${dirname})
|
|
|
|
set(output "")
|
|
|
|
while(NOT ${dirname} STREQUAL ${srcDir})
|
|
get_filename_component(path_component ${dir} NAME)
|
|
set (output "${path_component}/${output}")
|
|
get_filename_component(dir ${dir} DIRECTORY)
|
|
get_filename_component(dirname ${dir} NAME)
|
|
endwhile()
|
|
|
|
set(output "${CMAKE_CURRENT_BINARY_DIR}/${topdir}/${filename}")
|
|
|
|
add_custom_command(
|
|
COMMENT "Moving updated resource-file '${filename}' to ${output}"
|
|
OUTPUT ${output}
|
|
DEPENDS ${resource}
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
|
${resource}
|
|
${output}
|
|
)
|
|
add_custom_target("${dirname}${filename}" ALL DEPENDS ${resource} ${output})
|
|
|
|
endforeach()
|
|
endmacro(resource_dir)
|