CMake: Generate scmrev.h at build time instead of configure time.
This commit is contained in:
parent
61c45e8d68
commit
2a6f4d879c
|
@ -0,0 +1,53 @@
|
||||||
|
cmake_minimum_required(VERSION 3.13)
|
||||||
|
|
||||||
|
# for revision info
|
||||||
|
if(GIT_FOUND)
|
||||||
|
# defines DOLPHIN_WC_REVISION
|
||||||
|
execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
|
||||||
|
OUTPUT_VARIABLE DOLPHIN_WC_REVISION
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
# defines DOLPHIN_WC_DESCRIBE
|
||||||
|
execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} describe --always --long --dirty
|
||||||
|
OUTPUT_VARIABLE DOLPHIN_WC_DESCRIBE
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
|
# remove hash (and trailing "-0" if needed) from description
|
||||||
|
string(REGEX REPLACE "(-0)?-[^-]+((-dirty)?)$" "\\2" DOLPHIN_WC_DESCRIBE "${DOLPHIN_WC_DESCRIBE}")
|
||||||
|
|
||||||
|
# defines DOLPHIN_WC_BRANCH
|
||||||
|
execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
|
||||||
|
OUTPUT_VARIABLE DOLPHIN_WC_BRANCH
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# version number
|
||||||
|
set(DOLPHIN_VERSION_MAJOR "5")
|
||||||
|
set(DOLPHIN_VERSION_MINOR "0")
|
||||||
|
if(DOLPHIN_WC_BRANCH STREQUAL "stable")
|
||||||
|
set(DOLPHIN_VERSION_PATCH "0")
|
||||||
|
else()
|
||||||
|
set(DOLPHIN_VERSION_PATCH ${DOLPHIN_WC_REVISION})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# If Dolphin is not built from a Git repository, default the version info to
|
||||||
|
# reasonable values.
|
||||||
|
if(NOT DOLPHIN_WC_REVISION)
|
||||||
|
set(DOLPHIN_WC_DESCRIBE "${DOLPHIN_VERSION_MAJOR}.${DOLPHIN_VERSION_MINOR}")
|
||||||
|
set(DOLPHIN_WC_REVISION "${DOLPHIN_WC_DESCRIBE} (no further info)")
|
||||||
|
set(DOLPHIN_WC_BRANCH "master")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(DOLPHIN_WC_BRANCH STREQUAL "master" OR DOLPHIN_WC_BRANCH STREQUAL "stable")
|
||||||
|
set(DOLPHIN_WC_IS_STABLE "1")
|
||||||
|
else()
|
||||||
|
set(DOLPHIN_WC_IS_STABLE "0")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
"${PROJECT_SOURCE_DIR}/Source/Core/Common/scmrev.h.in"
|
||||||
|
"${PROJECT_BINARY_DIR}/Source/Core/Common/scmrev.h.tmp"
|
||||||
|
)
|
||||||
|
|
||||||
|
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PROJECT_BINARY_DIR}/Source/Core/Common/scmrev.h.tmp" "${PROJECT_BINARY_DIR}/Source/Core/Common/scmrev.h")
|
||||||
|
|
||||||
|
file(REMOVE "${PROJECT_BINARY_DIR}/Source/Core/Common/scmrev.h.tmp")
|
|
@ -196,59 +196,6 @@ endif()
|
||||||
# setup CCache
|
# setup CCache
|
||||||
include(CCache)
|
include(CCache)
|
||||||
|
|
||||||
# for revision info
|
|
||||||
find_package(Git)
|
|
||||||
if(GIT_FOUND)
|
|
||||||
# make sure version information gets re-run when the current Git HEAD changes
|
|
||||||
execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-parse --git-path HEAD
|
|
||||||
OUTPUT_VARIABLE dolphin_git_head_filename
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${dolphin_git_head_filename}")
|
|
||||||
|
|
||||||
execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-parse --symbolic-full-name HEAD
|
|
||||||
OUTPUT_VARIABLE dolphin_git_head_symbolic
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
||||||
COMMAND ${GIT_EXECUTABLE} rev-parse --git-path ${dolphin_git_head_symbolic}
|
|
||||||
OUTPUT_VARIABLE dolphin_git_head_symbolic_filename
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${dolphin_git_head_symbolic_filename}")
|
|
||||||
|
|
||||||
# defines DOLPHIN_WC_REVISION
|
|
||||||
execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
|
|
||||||
OUTPUT_VARIABLE DOLPHIN_WC_REVISION
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
# defines DOLPHIN_WC_DESCRIBE
|
|
||||||
execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} describe --always --long --dirty
|
|
||||||
OUTPUT_VARIABLE DOLPHIN_WC_DESCRIBE
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
|
|
||||||
# remove hash (and trailing "-0" if needed) from description
|
|
||||||
string(REGEX REPLACE "(-0)?-[^-]+((-dirty)?)$" "\\2" DOLPHIN_WC_DESCRIBE "${DOLPHIN_WC_DESCRIBE}")
|
|
||||||
|
|
||||||
# defines DOLPHIN_WC_BRANCH
|
|
||||||
execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
|
|
||||||
OUTPUT_VARIABLE DOLPHIN_WC_BRANCH
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# version number
|
|
||||||
set(DOLPHIN_VERSION_MAJOR "5")
|
|
||||||
set(DOLPHIN_VERSION_MINOR "0")
|
|
||||||
if(DOLPHIN_WC_BRANCH STREQUAL "stable")
|
|
||||||
set(DOLPHIN_VERSION_PATCH "0")
|
|
||||||
else()
|
|
||||||
set(DOLPHIN_VERSION_PATCH ${DOLPHIN_WC_REVISION})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# If Dolphin is not built from a Git repository, default the version info to
|
|
||||||
# reasonable values.
|
|
||||||
if(NOT DOLPHIN_WC_REVISION)
|
|
||||||
set(DOLPHIN_WC_DESCRIBE "${DOLPHIN_VERSION_MAJOR}.${DOLPHIN_VERSION_MINOR}")
|
|
||||||
set(DOLPHIN_WC_REVISION "${DOLPHIN_WC_DESCRIBE} (no further info)")
|
|
||||||
set(DOLPHIN_WC_BRANCH "master")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Architecture detection and arch specific settings
|
# Architecture detection and arch specific settings
|
||||||
message(STATUS "Detected architecture: ${CMAKE_SYSTEM_PROCESSOR}")
|
message(STATUS "Detected architecture: ${CMAKE_SYSTEM_PROCESSOR}")
|
||||||
|
|
||||||
|
@ -1012,20 +959,28 @@ endif()
|
||||||
########################################
|
########################################
|
||||||
# Pre-build events: Define configuration variables and write SCM info header
|
# Pre-build events: Define configuration variables and write SCM info header
|
||||||
#
|
#
|
||||||
if(DOLPHIN_WC_BRANCH STREQUAL "master" OR DOLPHIN_WC_BRANCH STREQUAL "stable")
|
|
||||||
set(DOLPHIN_WC_IS_STABLE "1")
|
|
||||||
else()
|
|
||||||
set(DOLPHIN_WC_IS_STABLE "0")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Remove in-tree revision information generated by Visual Studio
|
# Remove in-tree revision information generated by Visual Studio
|
||||||
# This is because the compiler will check in-tree first and use this, even if it is outdated
|
# This is because the compiler will check in-tree first and use this, even if it is outdated
|
||||||
file(REMOVE "${PROJECT_SOURCE_DIR}/Source/Core/Common/scmrev.h")
|
file(REMOVE "${PROJECT_SOURCE_DIR}/Source/Core/Common/scmrev.h")
|
||||||
|
|
||||||
configure_file(
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Source/Core/Common)
|
||||||
"${PROJECT_SOURCE_DIR}/Source/Core/Common/scmrev.h.in"
|
if (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/Source/Core/Common/scmrev.h)
|
||||||
"${PROJECT_BINARY_DIR}/Source/Core/Common/scmrev.h"
|
file(TOUCH ${CMAKE_CURRENT_BINARY_DIR}/Source/Core/Common/scmrev.h)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package(Git)
|
||||||
|
if(NOT GIT_FOUND)
|
||||||
|
set(GIT_EXECUTABLE "")
|
||||||
|
endif()
|
||||||
|
add_custom_target(
|
||||||
|
dolphin_scmrev
|
||||||
|
${CMAKE_COMMAND} -DPROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR} -DPROJECT_BINARY_DIR=${PROJECT_BINARY_DIR} -DDISTRIBUTOR=${DISTRIBUTOR} -DDOLPHIN_DEFAULT_UPDATE_TRACK=${DOLPHIN_DEFAULT_UPDATE_TRACK} -DGIT_FOUND=${GIT_FOUND} -DGIT_EXECUTABLE=${GIT_EXECUTABLE} -P ${CMAKE_SOURCE_DIR}/CMake/ScmRevGen.cmake
|
||||||
|
BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/Source/Core/Common/scmrev.h
|
||||||
|
VERBATIM
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# This is here so #include "Common/scmrev.h" finds the generated header.
|
||||||
include_directories("${PROJECT_BINARY_DIR}/Source/Core")
|
include_directories("${PROJECT_BINARY_DIR}/Source/Core")
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
|
|
|
@ -135,6 +135,8 @@ add_library(common
|
||||||
WorkQueueThread.h
|
WorkQueueThread.h
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_dependencies(common dolphin_scmrev)
|
||||||
|
|
||||||
if(NOT MSVC AND _M_ARM_64)
|
if(NOT MSVC AND _M_ARM_64)
|
||||||
set_source_files_properties(
|
set_source_files_properties(
|
||||||
Crypto/AES.cpp
|
Crypto/AES.cpp
|
||||||
|
|
Loading…
Reference in New Issue