Skip to content

Commit 87c7987

Browse files
committed
[GEN][ZH] Implement file info generation for Generals executables
1 parent a86ed98 commit 87c7987

6 files changed

Lines changed: 168 additions & 57 deletions

File tree

Generals/Code/Main/CMakeLists.txt

Lines changed: 49 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,57 @@
1+
# Product version definitions
2+
set(BUILD_USER "")
3+
set(BUILD_LOCATION "")
4+
set(PRODUCT_VERSION_MAJOR 1)
5+
if (IS_VS6_BUILD)
6+
set(PRODUCT_VERSION_MINOR 7)
7+
else()
8+
set(PRODUCT_VERSION_MINOR 8)
9+
endif()
10+
set(PRODUCT_VERSION_PATCH 0)
11+
set(PRODUCT_VERSION_TWEAK 0)
12+
set(PRODUCT_VERSION_STRING "${PRODUCT_VERSION_MAJOR}.${PRODUCT_VERSION_MINOR}.${PRODUCT_VERSION_PATCH}.${PRODUCT_VERSION_TWEAK}")
13+
set(PRODUCT_NAME "Command & Conquer Generals")
14+
set(FILE_VERSION_MAJOR ${PRODUCT_VERSION_MAJOR}) # TODO come up with a file version?
15+
set(FILE_VERSION_MINOR ${PRODUCT_VERSION_MINOR})
16+
set(FILE_VERSION_PATCH ${PRODUCT_VERSION_PATCH})
17+
set(FILE_VERSION_TWEAK ${PRODUCT_VERSION_TWEAK})
18+
set(FILE_VERSION_STRING "${FILE_VERSION_MAJOR}.${FILE_VERSION_MINOR}.${FILE_VERSION_PATCH}.${FILE_VERSION_TWEAK}")
19+
set(FILE_DESCRIPTION "Community Version")
20+
set(FILE_NAME "GeneralsV")
21+
22+
# TODO Originally referred to build host and user, replace with git info perhaps?
23+
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/GeneratedVersion.h
24+
"#pragma once
25+
26+
#define VERSION_LOCALBUILDNUM 0
27+
#define VERSION_BUILDUSER \"${BUILD_USER}\"
28+
#define VERSION_BUILDLOC \"${BUILD_LOCATION}\"
29+
"
30+
)
31+
32+
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/BuildVersion.h
33+
"#pragma once
34+
35+
#define VERSION_MAJOR ${PRODUCT_VERSION_MAJOR}
36+
#define VERSION_MINOR ${PRODUCT_VERSION_MINOR}
37+
#define VERSION_BUILDNUM ${PRODUCT_VERSION_PATCH}
38+
"
39+
)
40+
41+
# Configure Version rc file
42+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Version.rc.in
43+
${CMAKE_CURRENT_BINARY_DIR}/Version.rc)
44+
45+
46+
147
add_executable(g_generals WIN32)
248

349
# Use a binary name that doesn't conflict with original game.
450
if("${CMAKE_SYSTEM}" MATCHES "Windows")
5-
set_target_properties(g_generals PROPERTIES OUTPUT_NAME generalsv)
51+
set_target_properties(g_generals PROPERTIES OUTPUT_NAME ${FILE_NAME})
652
else()
7-
set_target_properties(g_generals PROPERTIES OUTPUT_NAME generalsv)
53+
string(TOLOWER ${FILE_NAME} FILE_NAME_LOWER)
54+
set_target_properties(g_generals PROPERTIES OUTPUT_NAME ${FILE_NAME_LOWER})
855
endif()
956

1057
target_link_libraries(g_generals PRIVATE
@@ -24,37 +71,6 @@ target_link_libraries(g_generals PRIVATE
2471
winmm
2572
)
2673

27-
# TODO Originally referred to build host and user, replace with git info perhaps?
28-
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/GeneratedVersion.h
29-
"#pragma once
30-
31-
#define VERSION_LOCALBUILDNUM 0
32-
#define VERSION_BUILDUSER \"\"
33-
#define VERSION_BUILDLOC \"\"
34-
"
35-
)
36-
37-
# Based on original binary values for these variables.
38-
if (IS_VS6_BUILD)
39-
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/BuildVersion.h
40-
"#pragma once
41-
42-
#define VERSION_MAJOR 1
43-
#define VERSION_MINOR 7
44-
#define VERSION_BUILDNUM 601
45-
"
46-
)
47-
else()
48-
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/BuildVersion.h
49-
"#pragma once
50-
51-
#define VERSION_MAJOR 1
52-
#define VERSION_MINOR 8
53-
#define VERSION_BUILDNUM 601
54-
"
55-
)
56-
endif()
57-
5874
target_link_options(g_generals PRIVATE "/NODEFAULTLIB:libci.lib")
5975

6076
target_include_directories(g_generals PRIVATE

Generals/Code/Main/RTS.RC

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#include "version.rc"
2+
13
//Microsoft Developer Studio generated resource script.
24
//
35
#include "resource.h"
@@ -65,7 +67,8 @@ IDB_LOAD_SCREEN BITMAP DISCARDABLE "Install_Final.bmp"
6567
#endif // English (U.S.) resources
6668
/////////////////////////////////////////////////////////////////////////////
6769

68-
// Add manifest to specify that the app is DPI aware and prevent forced scaling by the system
70+
// TheSuperHackers @tweak Adds manifest to specify that the app is DPI aware
71+
// and prevent forced scaling by the system.
6972
1 24 "app.manifest"
7073

7174

Generals/Code/Main/Version.rc.in

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#include <winver.h>
2+
3+
VS_VERSION_INFO VERSIONINFO
4+
FILEVERSION @FILE_VERSION_MAJOR@,@FILE_VERSION_MINOR@,@FILE_VERSION_PATCH@,@FILE_VERSION_TWEAK@
5+
PRODUCTVERSION @PRODUCT_VERSION_MAJOR@,@PRODUCT_VERSION_MINOR@,@PRODUCT_VERSION_PATCH@,@PRODUCT_VERSION_TWEAK@
6+
FILEFLAGSMASK 0x3fL
7+
#if RTS_DEBUG
8+
FILEFLAGS VS_FF_DEBUG
9+
#else
10+
FILEFLAGS 0x0L
11+
#endif
12+
FILEOS 0x40004L
13+
FILETYPE 0x1L
14+
FILESUBTYPE 0x0L
15+
16+
BEGIN
17+
BLOCK "StringFileInfo"
18+
BEGIN
19+
BLOCK "040904b0"
20+
BEGIN
21+
VALUE "FileDescription", "@FILE_DESCRIPTION@\0"
22+
VALUE "FileVersion", "@FILE_VERSION_STRING@\0"
23+
VALUE "ProductName", "@PRODUCT_NAME@\0"
24+
VALUE "ProductVersion", "@PRODUCT_VERSION_STRING@\0"
25+
VALUE "OriginalFilename", "@FILE_NAME@.exe\0"
26+
VALUE "LegalCopyright", "@BUILD_USER@\0"
27+
END
28+
END
29+
BLOCK "VarFileInfo"
30+
BEGIN
31+
VALUE "Translation", 0x409, 1200
32+
END
33+
END

GeneralsMD/Code/Main/CMakeLists.txt

Lines changed: 45 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,53 @@
1+
# Product version definitions
2+
set(BUILD_USER "")
3+
set(BUILD_LOCATION "")
4+
set(PRODUCT_VERSION_MAJOR 1)
5+
set(PRODUCT_VERSION_MINOR 4)
6+
set(PRODUCT_VERSION_PATCH 0)
7+
set(PRODUCT_VERSION_TWEAK 0)
8+
set(PRODUCT_VERSION_STRING "${PRODUCT_VERSION_MAJOR}.${PRODUCT_VERSION_MINOR}.${PRODUCT_VERSION_PATCH}.${PRODUCT_VERSION_TWEAK}")
9+
set(PRODUCT_NAME "Command & Conquer Generals Zero Hour")
10+
set(FILE_VERSION_MAJOR ${PRODUCT_VERSION_MAJOR}) # TODO come up with a file version?
11+
set(FILE_VERSION_MINOR ${PRODUCT_VERSION_MINOR})
12+
set(FILE_VERSION_PATCH ${PRODUCT_VERSION_PATCH})
13+
set(FILE_VERSION_TWEAK ${PRODUCT_VERSION_TWEAK})
14+
set(FILE_VERSION_STRING "${FILE_VERSION_MAJOR}.${FILE_VERSION_MINOR}.${FILE_VERSION_PATCH}.${FILE_VERSION_TWEAK}")
15+
set(FILE_DESCRIPTION "Community Version")
16+
set(FILE_NAME "GeneralsZH")
17+
18+
# TODO Originally referred to build host and user, replace with git info perhaps?
19+
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/GeneratedVersion.h
20+
"#pragma once
21+
22+
#define VERSION_LOCALBUILDNUM 0
23+
#define VERSION_BUILDUSER \"${BUILD_USER}\"
24+
#define VERSION_BUILDLOC \"${BUILD_LOCATION}\"
25+
"
26+
)
27+
28+
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/BuildVersion.h
29+
"#pragma once
30+
31+
#define VERSION_MAJOR ${PRODUCT_VERSION_MAJOR}
32+
#define VERSION_MINOR ${PRODUCT_VERSION_MINOR}
33+
#define VERSION_BUILDNUM ${PRODUCT_VERSION_PATCH}
34+
"
35+
)
36+
37+
# Configure Version rc file
38+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Version.rc.in
39+
${CMAKE_CURRENT_BINARY_DIR}/Version.rc)
40+
41+
42+
143
add_executable(z_generals WIN32)
244

345
# Use a binary name that doesn't conflict with original game.
446
if("${CMAKE_SYSTEM}" MATCHES "Windows")
5-
set_target_properties(z_generals PROPERTIES OUTPUT_NAME generalszh)
47+
set_target_properties(z_generals PROPERTIES OUTPUT_NAME ${FILE_NAME})
648
else()
7-
set_target_properties(z_generals PROPERTIES OUTPUT_NAME generalszh)
49+
string(TOLOWER ${FILE_NAME} FILE_NAME_LOWER)
50+
set_target_properties(z_generals PROPERTIES OUTPUT_NAME ${FILE_NAME_LOWER})
851
endif()
952

1053
target_link_libraries(z_generals PRIVATE
@@ -26,26 +69,6 @@ target_link_libraries(z_generals PRIVATE
2669
zi_always
2770
)
2871

29-
# TODO Originally referred to build host and user, replace with git info perhaps?
30-
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/GeneratedVersion.h
31-
"#pragma once
32-
33-
#define VERSION_LOCALBUILDNUM 0
34-
#define VERSION_BUILDUSER \"\"
35-
#define VERSION_BUILDLOC \"\"
36-
"
37-
)
38-
39-
# Based on original binary values for these variables.
40-
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/BuildVersion.h
41-
"#pragma once
42-
43-
#define VERSION_MAJOR 1
44-
#define VERSION_MINOR 4
45-
#define VERSION_BUILDNUM 601
46-
"
47-
)
48-
4972
target_link_options(z_generals PRIVATE "/NODEFAULTLIB:libci.lib")
5073

5174
target_include_directories(z_generals PRIVATE

GeneralsMD/Code/Main/RTS.RC

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#include "version.rc"
2+
13
//Microsoft Developer Studio generated resource script.
24
//
35
#include "resource.h"
@@ -58,7 +60,8 @@ IDI_ApplicationIcon ICON DISCARDABLE "GENERALS.ICO"
5860
#endif // English (U.S.) resources
5961
/////////////////////////////////////////////////////////////////////////////
6062

61-
// Add manifest to specify that the app is DPI aware and prevent forced scaling by the system
63+
// TheSuperHackers @tweak Adds manifest to specify that the app is DPI aware
64+
// and prevent forced scaling by the system.
6265
1 24 "app.manifest"
6366

6467

GeneralsMD/Code/Main/Version.rc.in

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#include <winver.h>
2+
3+
VS_VERSION_INFO VERSIONINFO
4+
FILEVERSION @FILE_VERSION_MAJOR@,@FILE_VERSION_MINOR@,@FILE_VERSION_PATCH@,@FILE_VERSION_TWEAK@
5+
PRODUCTVERSION @PRODUCT_VERSION_MAJOR@,@PRODUCT_VERSION_MINOR@,@PRODUCT_VERSION_PATCH@,@PRODUCT_VERSION_TWEAK@
6+
FILEFLAGSMASK 0x3fL
7+
#if RTS_DEBUG
8+
FILEFLAGS VS_FF_DEBUG
9+
#else
10+
FILEFLAGS 0x0L
11+
#endif
12+
FILEOS 0x40004L
13+
FILETYPE 0x1L
14+
FILESUBTYPE 0x0L
15+
16+
BEGIN
17+
BLOCK "StringFileInfo"
18+
BEGIN
19+
BLOCK "040904b0"
20+
BEGIN
21+
VALUE "FileDescription", "@FILE_DESCRIPTION@\0"
22+
VALUE "FileVersion", "@FILE_VERSION_STRING@\0"
23+
VALUE "ProductName", "@PRODUCT_NAME@\0"
24+
VALUE "ProductVersion", "@PRODUCT_VERSION_STRING@\0"
25+
VALUE "OriginalFilename", "@FILE_NAME@.exe\0"
26+
VALUE "LegalCopyright", "@BUILD_USER@\0"
27+
END
28+
END
29+
BLOCK "VarFileInfo"
30+
BEGIN
31+
VALUE "Translation", 0x409, 1200
32+
END
33+
END

0 commit comments

Comments
 (0)