Skip to content

[GEN][ZH] Implement file info generation for Generals executables #1291

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 49 additions & 33 deletions Generals/Code/Main/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,57 @@
# Product version definitions
set(BUILD_USER "")
set(BUILD_LOCATION "")
set(PRODUCT_VERSION_MAJOR 1)
if (IS_VS6_BUILD)
set(PRODUCT_VERSION_MINOR 7)
else()
set(PRODUCT_VERSION_MINOR 8)
endif()
set(PRODUCT_VERSION_PATCH 0)
set(PRODUCT_VERSION_TWEAK 0)
set(PRODUCT_VERSION_STRING "${PRODUCT_VERSION_MAJOR}.${PRODUCT_VERSION_MINOR}.${PRODUCT_VERSION_PATCH}.${PRODUCT_VERSION_TWEAK}")
set(PRODUCT_NAME "Command & Conquer Generals")
set(FILE_VERSION_MAJOR ${PRODUCT_VERSION_MAJOR}) # TODO come up with a file version?
set(FILE_VERSION_MINOR ${PRODUCT_VERSION_MINOR})
set(FILE_VERSION_PATCH ${PRODUCT_VERSION_PATCH})
set(FILE_VERSION_TWEAK ${PRODUCT_VERSION_TWEAK})
set(FILE_VERSION_STRING "${FILE_VERSION_MAJOR}.${FILE_VERSION_MINOR}.${FILE_VERSION_PATCH}.${FILE_VERSION_TWEAK}")
set(FILE_DESCRIPTION "Community Version")
set(FILE_NAME "GeneralsV")

# TODO Originally referred to build host and user, replace with git info perhaps?
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/GeneratedVersion.h
"#pragma once

#define VERSION_LOCALBUILDNUM 0
#define VERSION_BUILDUSER \"${BUILD_USER}\"
#define VERSION_BUILDLOC \"${BUILD_LOCATION}\"
"
)

file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/BuildVersion.h
"#pragma once

#define VERSION_MAJOR ${PRODUCT_VERSION_MAJOR}
#define VERSION_MINOR ${PRODUCT_VERSION_MINOR}
#define VERSION_BUILDNUM ${PRODUCT_VERSION_PATCH}
"
)

# Configure Version rc file
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Version.rc.in
${CMAKE_CURRENT_BINARY_DIR}/Version.rc)



add_executable(g_generals WIN32)

# Use a binary name that doesn't conflict with original game.
if("${CMAKE_SYSTEM}" MATCHES "Windows")
set_target_properties(g_generals PROPERTIES OUTPUT_NAME generalsv)
set_target_properties(g_generals PROPERTIES OUTPUT_NAME ${FILE_NAME})
else()
set_target_properties(g_generals PROPERTIES OUTPUT_NAME generalsv)
string(TOLOWER ${FILE_NAME} FILE_NAME_LOWER)
set_target_properties(g_generals PROPERTIES OUTPUT_NAME ${FILE_NAME_LOWER})
endif()

target_link_libraries(g_generals PRIVATE
Expand All @@ -24,37 +71,6 @@ target_link_libraries(g_generals PRIVATE
winmm
)

# TODO Originally referred to build host and user, replace with git info perhaps?
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/GeneratedVersion.h
"#pragma once

#define VERSION_LOCALBUILDNUM 0
#define VERSION_BUILDUSER \"\"
#define VERSION_BUILDLOC \"\"
"
)

# Based on original binary values for these variables.
if (IS_VS6_BUILD)
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/BuildVersion.h
"#pragma once

#define VERSION_MAJOR 1
#define VERSION_MINOR 7
#define VERSION_BUILDNUM 601
"
)
else()
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/BuildVersion.h
"#pragma once

#define VERSION_MAJOR 1
#define VERSION_MINOR 8
#define VERSION_BUILDNUM 601
"
)
endif()

target_link_options(g_generals PRIVATE "/NODEFAULTLIB:libci.lib")

target_include_directories(g_generals PRIVATE
Expand Down
5 changes: 4 additions & 1 deletion Generals/Code/Main/RTS.RC
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#include "version.rc"

//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
Expand Down Expand Up @@ -65,7 +67,8 @@ IDB_LOAD_SCREEN BITMAP DISCARDABLE "Install_Final.bmp"
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////

// Add manifest to specify that the app is DPI aware and prevent forced scaling by the system
// TheSuperHackers @tweak Adds manifest to specify that the app is DPI aware
// and prevent forced scaling by the system.
1 24 "app.manifest"


Expand Down
33 changes: 33 additions & 0 deletions Generals/Code/Main/Version.rc.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#include <winver.h>

VS_VERSION_INFO VERSIONINFO
FILEVERSION @FILE_VERSION_MAJOR@,@FILE_VERSION_MINOR@,@FILE_VERSION_PATCH@,@FILE_VERSION_TWEAK@
PRODUCTVERSION @PRODUCT_VERSION_MAJOR@,@PRODUCT_VERSION_MINOR@,@PRODUCT_VERSION_PATCH@,@PRODUCT_VERSION_TWEAK@
FILEFLAGSMASK 0x3fL
#if RTS_DEBUG
FILEFLAGS VS_FF_DEBUG
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x0L

BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "FileDescription", "@FILE_DESCRIPTION@\0"
VALUE "FileVersion", "@FILE_VERSION_STRING@\0"
VALUE "ProductName", "@PRODUCT_NAME@\0"
VALUE "ProductVersion", "@PRODUCT_VERSION_STRING@\0"
VALUE "OriginalFilename", "@FILE_NAME@.exe\0"
VALUE "LegalCopyright", "@BUILD_USER@\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
67 changes: 45 additions & 22 deletions GeneralsMD/Code/Main/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,53 @@
# Product version definitions
set(BUILD_USER "")
set(BUILD_LOCATION "")
set(PRODUCT_VERSION_MAJOR 1)
set(PRODUCT_VERSION_MINOR 4)
set(PRODUCT_VERSION_PATCH 0)
set(PRODUCT_VERSION_TWEAK 0)
set(PRODUCT_VERSION_STRING "${PRODUCT_VERSION_MAJOR}.${PRODUCT_VERSION_MINOR}.${PRODUCT_VERSION_PATCH}.${PRODUCT_VERSION_TWEAK}")
set(PRODUCT_NAME "Command & Conquer Generals Zero Hour")
set(FILE_VERSION_MAJOR ${PRODUCT_VERSION_MAJOR}) # TODO come up with a file version?
set(FILE_VERSION_MINOR ${PRODUCT_VERSION_MINOR})
set(FILE_VERSION_PATCH ${PRODUCT_VERSION_PATCH})
set(FILE_VERSION_TWEAK ${PRODUCT_VERSION_TWEAK})
set(FILE_VERSION_STRING "${FILE_VERSION_MAJOR}.${FILE_VERSION_MINOR}.${FILE_VERSION_PATCH}.${FILE_VERSION_TWEAK}")
set(FILE_DESCRIPTION "Community Version")
set(FILE_NAME "GeneralsZH")

# TODO Originally referred to build host and user, replace with git info perhaps?
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/GeneratedVersion.h
"#pragma once

#define VERSION_LOCALBUILDNUM 0
#define VERSION_BUILDUSER \"${BUILD_USER}\"
#define VERSION_BUILDLOC \"${BUILD_LOCATION}\"
"
)

file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/BuildVersion.h
"#pragma once

#define VERSION_MAJOR ${PRODUCT_VERSION_MAJOR}
#define VERSION_MINOR ${PRODUCT_VERSION_MINOR}
#define VERSION_BUILDNUM ${PRODUCT_VERSION_PATCH}
"
)

# Configure Version rc file
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Version.rc.in
${CMAKE_CURRENT_BINARY_DIR}/Version.rc)



add_executable(z_generals WIN32)

# Use a binary name that doesn't conflict with original game.
if("${CMAKE_SYSTEM}" MATCHES "Windows")
set_target_properties(z_generals PROPERTIES OUTPUT_NAME generalszh)
set_target_properties(z_generals PROPERTIES OUTPUT_NAME ${FILE_NAME})
else()
set_target_properties(z_generals PROPERTIES OUTPUT_NAME generalszh)
string(TOLOWER ${FILE_NAME} FILE_NAME_LOWER)
set_target_properties(z_generals PROPERTIES OUTPUT_NAME ${FILE_NAME_LOWER})
endif()

target_link_libraries(z_generals PRIVATE
Expand All @@ -26,26 +69,6 @@ target_link_libraries(z_generals PRIVATE
zi_always
)

# TODO Originally referred to build host and user, replace with git info perhaps?
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/GeneratedVersion.h
"#pragma once

#define VERSION_LOCALBUILDNUM 0
#define VERSION_BUILDUSER \"\"
#define VERSION_BUILDLOC \"\"
"
)

# Based on original binary values for these variables.
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/BuildVersion.h
"#pragma once

#define VERSION_MAJOR 1
#define VERSION_MINOR 4
#define VERSION_BUILDNUM 601
"
)

target_link_options(z_generals PRIVATE "/NODEFAULTLIB:libci.lib")

target_include_directories(z_generals PRIVATE
Expand Down
5 changes: 4 additions & 1 deletion GeneralsMD/Code/Main/RTS.RC
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#include "version.rc"

//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
Expand Down Expand Up @@ -58,7 +60,8 @@ IDI_ApplicationIcon ICON DISCARDABLE "GENERALS.ICO"
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////

// Add manifest to specify that the app is DPI aware and prevent forced scaling by the system
// TheSuperHackers @tweak Adds manifest to specify that the app is DPI aware
// and prevent forced scaling by the system.
1 24 "app.manifest"


Expand Down
33 changes: 33 additions & 0 deletions GeneralsMD/Code/Main/Version.rc.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#include <winver.h>

VS_VERSION_INFO VERSIONINFO
FILEVERSION @FILE_VERSION_MAJOR@,@FILE_VERSION_MINOR@,@FILE_VERSION_PATCH@,@FILE_VERSION_TWEAK@
PRODUCTVERSION @PRODUCT_VERSION_MAJOR@,@PRODUCT_VERSION_MINOR@,@PRODUCT_VERSION_PATCH@,@PRODUCT_VERSION_TWEAK@
FILEFLAGSMASK 0x3fL
#if RTS_DEBUG
FILEFLAGS VS_FF_DEBUG
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x0L

BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "FileDescription", "@FILE_DESCRIPTION@\0"
VALUE "FileVersion", "@FILE_VERSION_STRING@\0"
VALUE "ProductName", "@PRODUCT_NAME@\0"
VALUE "ProductVersion", "@PRODUCT_VERSION_STRING@\0"
VALUE "OriginalFilename", "@FILE_NAME@.exe\0"
VALUE "LegalCopyright", "@BUILD_USER@\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
Loading