mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-07 23:00:46 +01:00
e05b033dd2
Some generators (like Unix Makefiles and Xcode) copy an app's Info.plist at configure time. This causes a problem when we need to generate the Info.plist at build time, like how we currently do it with ScmRevGen. Instead of generating the Info.plist directly in ScmRevGen, provide an Info.plist without any version information to CMake at configure time, have ScmRevGen generate a separate plist file with the version information at build time, and then merge the two together to create the final Info.plist.
70 lines
2.5 KiB
CMake
70 lines
2.5 KiB
CMake
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)
|
|
# defines DOLPHIN_WC_COMMITS_AHEAD_MASTER
|
|
execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-list --count HEAD ^master
|
|
OUTPUT_VARIABLE DOLPHIN_WC_COMMITS_AHEAD_MASTER
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
# defines DOLPHIN_WC_TAG
|
|
execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} describe --exact-match HEAD
|
|
OUTPUT_VARIABLE DOLPHIN_WC_TAG
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_QUIET)
|
|
endif()
|
|
|
|
# version number
|
|
set(DOLPHIN_VERSION_MAJOR "2412")
|
|
set(DOLPHIN_VERSION_MINOR "0")
|
|
set(DOLPHIN_VERSION_PATCH ${DOLPHIN_WC_REVISION})
|
|
|
|
# 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")
|
|
set(DOLPHIN_WC_COMMITS_AHEAD_MASTER 0)
|
|
endif()
|
|
|
|
# If this is a tag (i.e. a release), then set the current patch version and
|
|
# the number of commits ahead to zero.
|
|
if(DOLPHIN_WC_TAG)
|
|
set(DOLPHIN_VERSION_PATCH "0")
|
|
set(DOLPHIN_WC_COMMITS_AHEAD_MASTER 0)
|
|
endif()
|
|
|
|
function(configure_source_file path)
|
|
configure_file(
|
|
"${PROJECT_SOURCE_DIR}/${path}.in"
|
|
"${PROJECT_BINARY_DIR}/${path}.tmp"
|
|
)
|
|
|
|
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PROJECT_BINARY_DIR}/${path}.tmp" "${PROJECT_BINARY_DIR}/${path}")
|
|
|
|
file(REMOVE "${PROJECT_BINARY_DIR}/${path}.tmp")
|
|
endfunction()
|
|
|
|
configure_source_file("Source/Core/Common/scmrev.h")
|
|
|
|
if(APPLE)
|
|
configure_source_file("Source/Core/VersionInfo.plist")
|
|
endif()
|