mirror of
https://github.com/hedge-dev/UnleashedRecomp.git
synced 2025-10-30 07:11:05 +00:00
Added Win32 file info (#198)
This commit is contained in:
parent
d2d8c541e1
commit
dee2a36d0f
4 changed files with 196 additions and 83 deletions
|
|
@ -247,11 +247,48 @@ set(UNLEASHED_RECOMP_CXX_SOURCES
|
|||
${UNLEASHED_RECOMP_USER_CXX_SOURCES}
|
||||
${UNLEASHED_RECOMP_MOD_CXX_SOURCES}
|
||||
${UNLEASHED_RECOMP_THIRDPARTY_SOURCES}
|
||||
)
|
||||
)
|
||||
|
||||
include("version.cmake")
|
||||
|
||||
set(VERSION_TXT "${PROJECT_SOURCE_DIR}/res/version.txt")
|
||||
|
||||
# Only show Git info and build type if not Release.
|
||||
set(SHOW_GIT_INFO_AND_BUILD_TYPE 0)
|
||||
if (NOT ${CMAKE_BUILD_TYPE} MATCHES "Release")
|
||||
set(SHOW_GIT_INFO_AND_BUILD_TYPE 1)
|
||||
endif()
|
||||
|
||||
GenerateVersionSources(
|
||||
OUTPUT_DIR ${PROJECT_SOURCE_DIR}
|
||||
VERSION_TXT ${VERSION_TXT}
|
||||
H_TEMPLATE "${PROJECT_SOURCE_DIR}/res/version.h.template"
|
||||
CXX_TEMPLATE "${PROJECT_SOURCE_DIR}/res/version.cpp.template"
|
||||
BUILD_TYPE ${CMAKE_BUILD_TYPE}
|
||||
SHOW_GIT_INFO ${SHOW_GIT_INFO_AND_BUILD_TYPE}
|
||||
SHOW_BUILD_TYPE ${SHOW_GIT_INFO_AND_BUILD_TYPE}
|
||||
)
|
||||
|
||||
if (WIN32)
|
||||
# Set up Win32 resources for application icon.
|
||||
set(ICON_PATH "${PROJECT_SOURCE_DIR}/../UnleashedRecompResources/images/game_icon.ico")
|
||||
# Create binary version number for Win32 integer attributes.
|
||||
CreateVersionString(
|
||||
VERSION_TXT ${VERSION_TXT}
|
||||
OUTPUT_CSV 1
|
||||
OUTPUT_VAR WIN32_VERSION_BINARY
|
||||
)
|
||||
|
||||
# Create string version number for Win32 detailed attributes.
|
||||
CreateVersionString(
|
||||
VERSION_TXT ${VERSION_TXT}
|
||||
BUILD_TYPE ${CMAKE_BUILD_TYPE}
|
||||
SHOW_GIT_INFO ${SHOW_GIT_INFO_AND_BUILD_TYPE}
|
||||
SHOW_BUILD_TYPE ${SHOW_GIT_INFO_AND_BUILD_TYPE}
|
||||
OUTPUT_VAR WIN32_VERSION_STRING
|
||||
)
|
||||
|
||||
# Set Win32 icon path.
|
||||
set(WIN32_ICON_PATH "${PROJECT_SOURCE_DIR}/../UnleashedRecompResources/images/game_icon.ico")
|
||||
|
||||
configure_file("res/win32/res.rc.template" "${CMAKE_BINARY_DIR}/res.rc" @ONLY)
|
||||
add_executable(UnleashedRecomp ${UNLEASHED_RECOMP_CXX_SOURCES} "${CMAKE_BINARY_DIR}/res.rc")
|
||||
else()
|
||||
|
|
@ -409,23 +446,6 @@ generate_aggregate_header(
|
|||
"${CMAKE_CURRENT_SOURCE_DIR}/api/SWA.h"
|
||||
)
|
||||
|
||||
# Only show build type if not Release.
|
||||
set(SHOW_GIT_INFO_AND_BUILD_TYPE 0)
|
||||
if (NOT ${CMAKE_BUILD_TYPE} MATCHES "Release")
|
||||
set(SHOW_GIT_INFO_AND_BUILD_TYPE 1)
|
||||
endif()
|
||||
|
||||
include("version.cmake")
|
||||
GenerateVersionSources(
|
||||
OUTPUT_DIR "${PROJECT_SOURCE_DIR}"
|
||||
VERSION_TXT "${PROJECT_SOURCE_DIR}/res/version.txt"
|
||||
H_TEMPLATE "${PROJECT_SOURCE_DIR}/res/version.h.template"
|
||||
CXX_TEMPLATE "${PROJECT_SOURCE_DIR}/res/version.cpp.template"
|
||||
BUILD_TYPE ${CMAKE_BUILD_TYPE}
|
||||
SHOW_GIT_INFO ${SHOW_GIT_INFO_AND_BUILD_TYPE}
|
||||
SHOW_BUILD_TYPE ${SHOW_GIT_INFO_AND_BUILD_TYPE}
|
||||
)
|
||||
|
||||
set(RESOURCES_SOURCE_PATH "${PROJECT_SOURCE_DIR}/../UnleashedRecompResources")
|
||||
set(RESOURCES_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/res")
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ inline const char* g_credits[] =
|
|||
"RadiantDerg",
|
||||
"PTKay",
|
||||
"DeaThProj",
|
||||
"SuperSonic16",
|
||||
"NextinHKRY",
|
||||
"M&M",
|
||||
"saguinee",
|
||||
|
|
|
|||
|
|
@ -1 +1,40 @@
|
|||
IDI_ICON1 ICON "@ICON_PATH@"
|
||||
#include <windows.h>
|
||||
|
||||
#define UNLEASHED_RECOMP_VERSION_BIN @WIN32_VERSION_BINARY@
|
||||
#define UNLEASHED_RECOMP_VERSION_STR "@WIN32_VERSION_STRING@"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define UNLEASHED_RECOMP_FILE_FLAGS VS_FF_DEBUG
|
||||
#else
|
||||
#define UNLEASHED_RECOMP_FILE_FLAGS 0
|
||||
#endif
|
||||
|
||||
IDI_ICON1 ICON "@WIN32_ICON_PATH@"
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION UNLEASHED_RECOMP_VERSION_BIN
|
||||
PRODUCTVERSION UNLEASHED_RECOMP_VERSION_BIN
|
||||
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
|
||||
FILEFLAGS UNLEASHED_RECOMP_FILE_FLAGS
|
||||
FILEOS VOS_NT_WINDOWS32
|
||||
FILETYPE VFT_APP
|
||||
FILESUBTYPE VFT2_UNKNOWN
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "080904B0" // English (UK), Unicode
|
||||
BEGIN
|
||||
VALUE "ProductName", "Unleashed Recompiled"
|
||||
VALUE "FileDescription", "Unleashed Recompiled"
|
||||
VALUE "CompanyName", "hedge-dev"
|
||||
VALUE "FileVersion", UNLEASHED_RECOMP_VERSION_STR
|
||||
VALUE "ProductVersion", UNLEASHED_RECOMP_VERSION_STR
|
||||
VALUE "InternalName", "UnleashedRecomp"
|
||||
VALUE "OriginalFilename", "SWA.exe"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x0809, 0x04B0
|
||||
END
|
||||
END
|
||||
|
|
|
|||
|
|
@ -31,6 +31,113 @@ function(CheckOutputFile OUTPUT_FILE TEMPLATE_FILE)
|
|||
endif()
|
||||
endfunction()
|
||||
|
||||
# VERSION_TXT : the input text file containing the milestone, major, minor and revision variables.
|
||||
function(ParseVersionInfo VERSION_TXT)
|
||||
if (NOT VERSION_TXT)
|
||||
message(FATAL_ERROR "VERSION_TXT not specified.")
|
||||
endif()
|
||||
|
||||
if (NOT EXISTS "${VERSION_TXT}")
|
||||
message(FATAL_ERROR "No such file: ${VERSION_TXT}")
|
||||
endif()
|
||||
|
||||
file(READ "${VERSION_TXT}" FILE_CONTENT)
|
||||
string(REGEX REPLACE "\r?\n" ";" FILE_LINES "${FILE_CONTENT}")
|
||||
|
||||
foreach(LINE ${FILE_LINES})
|
||||
if (LINE STREQUAL "")
|
||||
continue()
|
||||
endif()
|
||||
|
||||
# Find key/value pair match.
|
||||
string(REGEX MATCH "([A-Za-z_]+)=\\\"?([^\"]+)\\\"?" MATCH "${LINE}")
|
||||
|
||||
if (MATCH)
|
||||
# Extract key/value pairs.
|
||||
string(REGEX REPLACE "([A-Za-z_]+)=.*" "\\1" KEY "${MATCH}")
|
||||
string(REGEX REPLACE "[A-Za-z_]+=\\\"?([^\"]+)\\\"?" "\\1" VALUE "${MATCH}")
|
||||
|
||||
# Set environment variable.
|
||||
set("${KEY}" "${VALUE}" CACHE INTERNAL "${KEY}")
|
||||
endif()
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
# VERSION_TXT : the input text file containing the milestone, major, minor and revision variables.
|
||||
# OUTPUT_CSV : the output string will be formatted as #,#,# without any alphabetic characters (optional).
|
||||
# BUILD_TYPE : the current build configuration (e.g. "Release", "RelWithDebInfo", "Debug") (optional).
|
||||
# SHOW_GIT_INFO : the Git commit hash and branch name should be appended to the version string (optional).
|
||||
# SHOW_BUILD_TYPE : the build type should be appended to the version string (optional).
|
||||
# OUTPUT_VAR : the output variable to store the version string in.
|
||||
function(CreateVersionString)
|
||||
cmake_parse_arguments(ARGS "" "VERSION_TXT;OUTPUT_CSV;BUILD_TYPE;SHOW_GIT_INFO;SHOW_BUILD_TYPE;OUTPUT_VAR" "" ${ARGN})
|
||||
|
||||
if (NOT ARGS_VERSION_TXT)
|
||||
message(FATAL_ERROR "VERSION_TXT not specified.")
|
||||
endif()
|
||||
|
||||
if (NOT ARGS_OUTPUT_VAR)
|
||||
message(FATAL_ERROR "OUTPUT_VAR not specified.")
|
||||
endif()
|
||||
|
||||
ParseVersionInfo("${ARGS_VERSION_TXT}")
|
||||
|
||||
if (ARGS_OUTPUT_CSV)
|
||||
set(VERSION_STRING "${VERSION_MAJOR},${VERSION_MINOR},${VERSION_REVISION}")
|
||||
else()
|
||||
set(VERSION_STRING "v${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}")
|
||||
|
||||
if (VERSION_MILESTONE)
|
||||
string(PREPEND VERSION_STRING "${VERSION_MILESTONE} ")
|
||||
endif()
|
||||
|
||||
if (ARGS_SHOW_GIT_INFO)
|
||||
find_package(Git REQUIRED)
|
||||
|
||||
# Get Git branch name.
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
|
||||
OUTPUT_VARIABLE BRANCH_NAME
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
set(BRANCH_NAME ${BRANCH_NAME} CACHE INTERNAL "BRANCH_NAME")
|
||||
|
||||
# Get Git commit hash.
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
|
||||
OUTPUT_VARIABLE COMMIT_HASH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
set(COMMIT_HASH ${COMMIT_HASH} CACHE INTERNAL "COMMIT_HASH")
|
||||
|
||||
# Get short Git commit hash.
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
|
||||
OUTPUT_VARIABLE COMMIT_HASH_SHORT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
set(COMMIT_HASH_SHORT ${COMMIT_HASH_SHORT} CACHE INTERNAL "COMMIT_HASH_SHORT")
|
||||
|
||||
# Append commit hash and branch.
|
||||
if (COMMIT_HASH_SHORT AND BRANCH_NAME)
|
||||
string(APPEND VERSION_STRING ".${COMMIT_HASH_SHORT}-${BRANCH_NAME}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Append build configuration.
|
||||
if (ARGS_BUILD_TYPE AND ARGS_SHOW_BUILD_TYPE)
|
||||
string(APPEND VERSION_STRING " (${ARGS_BUILD_TYPE})")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (ARGS_OUTPUT_VAR)
|
||||
set(${ARGS_OUTPUT_VAR} ${VERSION_STRING} PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# OUTPUT_DIR : the output directory of the resulting *.h/*.cpp files.
|
||||
# VERSION_TXT : the input text file containing the milestone, major, minor and revision variables.
|
||||
# H_TEMPLATE : the input template for the header.
|
||||
|
|
@ -59,70 +166,16 @@ function(GenerateVersionSources)
|
|||
message(FATAL_ERROR "CXX_TEMPLATE not specified.")
|
||||
endif()
|
||||
|
||||
# Required for *.cpp template.
|
||||
set(BUILD_TYPE ${ARGS_BUILD_TYPE})
|
||||
|
||||
if (ARGS_SHOW_GIT_INFO)
|
||||
find_package(Git REQUIRED)
|
||||
|
||||
# Get Git branch name.
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
|
||||
OUTPUT_VARIABLE BRANCH_NAME
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
# Get Git commit hash.
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
|
||||
OUTPUT_VARIABLE COMMIT_HASH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
# Get short Git commit hash.
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
|
||||
OUTPUT_VARIABLE COMMIT_HASH_SHORT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
endif()
|
||||
|
||||
file(READ "${ARGS_VERSION_TXT}" FILE_CONTENT)
|
||||
string(REGEX REPLACE "\r?\n" ";" FILE_LINES "${FILE_CONTENT}")
|
||||
|
||||
foreach(LINE ${FILE_LINES})
|
||||
if (LINE STREQUAL "")
|
||||
continue()
|
||||
endif()
|
||||
|
||||
# Find key/value pair match.
|
||||
string(REGEX MATCH "([A-Za-z_]+)=\\\"?([^\"]+)\\\"?" MATCH "${LINE}")
|
||||
|
||||
if (MATCH)
|
||||
# Extract key/value pairs.
|
||||
string(REGEX REPLACE "([A-Za-z_]+)=.*" "\\1" KEY "${MATCH}")
|
||||
string(REGEX REPLACE "[A-Za-z_]+=\\\"?([^\"]+)\\\"?" "\\1" VALUE "${MATCH}")
|
||||
|
||||
# Set environment variable.
|
||||
set("${KEY}" "${VALUE}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(VERSION_STRING "v${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}")
|
||||
|
||||
# Prepend version milestone.
|
||||
if (VERSION_MILESTONE)
|
||||
string(PREPEND VERSION_STRING "${VERSION_MILESTONE} ")
|
||||
endif()
|
||||
|
||||
# Append commit hash and branch.
|
||||
if (COMMIT_HASH_SHORT)
|
||||
string(APPEND VERSION_STRING ".${COMMIT_HASH_SHORT}-${BRANCH_NAME}")
|
||||
endif()
|
||||
|
||||
# Append build configuration.
|
||||
if (ARGS_BUILD_TYPE AND ARGS_SHOW_BUILD_TYPE)
|
||||
string(APPEND VERSION_STRING " (${ARGS_BUILD_TYPE})")
|
||||
endif()
|
||||
CreateVersionString(
|
||||
VERSION_TXT ${ARGS_VERSION_TXT}
|
||||
BUILD_TYPE ${ARGS_BUILD_TYPE}
|
||||
SHOW_GIT_INFO ${ARGS_SHOW_GIT_INFO}
|
||||
SHOW_BUILD_TYPE ${ARGS_SHOW_BUILD_TYPE}
|
||||
OUTPUT_VAR VERSION_STRING
|
||||
)
|
||||
|
||||
message("-- Build: ${VERSION_STRING}")
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue