Skip to content

Commit 7ba2742

Browse files
committed
Fix CMake install path to use nested EA game directory structure
1 parent f5c8fab commit 7ba2742

File tree

2 files changed

+66
-34
lines changed

2 files changed

+66
-34
lines changed

Generals/CMakeLists.txt

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,42 +32,58 @@ if("${CMAKE_HOST_SYSTEM}" MATCHES "Windows" AND "${CMAKE_SYSTEM}" MATCHES "Windo
3232
endif()
3333

3434
if(RTS_INSTALL_PREFIX_GENERALS AND NOT "${RTS_INSTALL_PREFIX_GENERALS}" STREQUAL "/registry")
35-
install(TARGETS g_generals RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_GENERALS}")
36-
install(FILES $<TARGET_PDB_FILE:g_generals> DESTINATION "${RTS_INSTALL_PREFIX_GENERALS}" OPTIONAL)
35+
get_filename_component(INSTALL_BASENAME "${RTS_INSTALL_PREFIX_GENERALS}" NAME)
36+
get_filename_component(INSTALL_PARENT "${RTS_INSTALL_PREFIX_GENERALS}" DIRECTORY)
37+
get_filename_component(INSTALL_PARENT_BASENAME "${INSTALL_PARENT}" NAME)
38+
39+
if("${INSTALL_BASENAME}" STREQUAL "Command and Conquer Generals" AND
40+
"${INSTALL_PARENT_BASENAME}" STREQUAL "Command and Conquer Generals Zero Hour")
41+
set(RTS_INSTALL_PATH "${RTS_INSTALL_PREFIX_GENERALS}")
42+
else()
43+
set(NESTED_PATH "${RTS_INSTALL_PREFIX_GENERALS}/Command and Conquer Generals")
44+
if(EXISTS "${NESTED_PATH}")
45+
set(RTS_INSTALL_PATH "${NESTED_PATH}")
46+
else()
47+
set(RTS_INSTALL_PATH "${RTS_INSTALL_PREFIX_GENERALS}")
48+
endif()
49+
endif()
50+
51+
install(TARGETS g_generals RUNTIME DESTINATION "${RTS_INSTALL_PATH}")
52+
install(FILES $<TARGET_PDB_FILE:g_generals> DESTINATION "${RTS_INSTALL_PATH}" OPTIONAL)
3753

3854
if(TARGET g_worldbuilder)
39-
install(TARGETS g_worldbuilder RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_GENERALS}")
40-
install(FILES $<TARGET_PDB_FILE:g_worldbuilder> DESTINATION "${RTS_INSTALL_PREFIX_GENERALS}" OPTIONAL)
55+
install(TARGETS g_worldbuilder RUNTIME DESTINATION "${RTS_INSTALL_PATH}")
56+
install(FILES $<TARGET_PDB_FILE:g_worldbuilder> DESTINATION "${RTS_INSTALL_PATH}" OPTIONAL)
4157
endif()
4258

4359
if(TARGET g_particleeditor)
44-
install(TARGETS g_particleeditor RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_GENERALS}")
45-
install(FILES $<TARGET_PDB_FILE:g_particleeditor> DESTINATION "${RTS_INSTALL_PREFIX_GENERALS}" OPTIONAL)
60+
install(TARGETS g_particleeditor RUNTIME DESTINATION "${RTS_INSTALL_PATH}")
61+
install(FILES $<TARGET_PDB_FILE:g_particleeditor> DESTINATION "${RTS_INSTALL_PATH}" OPTIONAL)
4662
endif()
4763

4864
if(TARGET g_debugwindow)
49-
install(TARGETS g_debugwindow RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_GENERALS}")
50-
install(FILES $<TARGET_PDB_FILE:g_debugwindow> DESTINATION "${RTS_INSTALL_PREFIX_GENERALS}" OPTIONAL)
65+
install(TARGETS g_debugwindow RUNTIME DESTINATION "${RTS_INSTALL_PATH}")
66+
install(FILES $<TARGET_PDB_FILE:g_debugwindow> DESTINATION "${RTS_INSTALL_PATH}" OPTIONAL)
5167
endif()
5268

5369
if(TARGET g_guiedit)
54-
install(TARGETS g_guiedit RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_GENERALS}")
55-
install(FILES $<TARGET_PDB_FILE:g_guiedit> DESTINATION "${RTS_INSTALL_PREFIX_GENERALS}" OPTIONAL)
70+
install(TARGETS g_guiedit RUNTIME DESTINATION "${RTS_INSTALL_PATH}")
71+
install(FILES $<TARGET_PDB_FILE:g_guiedit> DESTINATION "${RTS_INSTALL_PATH}" OPTIONAL)
5672
endif()
5773

5874
if(TARGET g_imagepacker)
59-
install(TARGETS g_imagepacker RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_GENERALS}")
60-
install(FILES $<TARGET_PDB_FILE:g_imagepacker> DESTINATION "${RTS_INSTALL_PREFIX_GENERALS}" OPTIONAL)
75+
install(TARGETS g_imagepacker RUNTIME DESTINATION "${RTS_INSTALL_PATH}")
76+
install(FILES $<TARGET_PDB_FILE:g_imagepacker> DESTINATION "${RTS_INSTALL_PATH}" OPTIONAL)
6177
endif()
6278

6379
if(TARGET g_mapcachebuilder)
64-
install(TARGETS g_mapcachebuilder RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_GENERALS}")
65-
install(FILES $<TARGET_PDB_FILE:g_mapcachebuilder> DESTINATION "${RTS_INSTALL_PREFIX_GENERALS}" OPTIONAL)
80+
install(TARGETS g_mapcachebuilder RUNTIME DESTINATION "${RTS_INSTALL_PATH}")
81+
install(FILES $<TARGET_PDB_FILE:g_mapcachebuilder> DESTINATION "${RTS_INSTALL_PATH}" OPTIONAL)
6682
endif()
6783

6884
if(TARGET g_w3dview)
69-
install(TARGETS g_w3dview RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_GENERALS}")
70-
install(FILES $<TARGET_PDB_FILE:g_w3dview> DESTINATION "${RTS_INSTALL_PREFIX_GENERALS}" OPTIONAL)
85+
install(TARGETS g_w3dview RUNTIME DESTINATION "${RTS_INSTALL_PATH}")
86+
install(FILES $<TARGET_PDB_FILE:g_w3dview> DESTINATION "${RTS_INSTALL_PATH}" OPTIONAL)
7187
endif()
7288
else()
7389
message(STATUS "Generals install path not found. Registry keys for 'Generals' not found. "

GeneralsMD/CMakeLists.txt

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -31,47 +31,63 @@ if("${CMAKE_HOST_SYSTEM}" MATCHES "Windows" AND "${CMAKE_SYSTEM}" MATCHES "Windo
3131
endif()
3232

3333
if(RTS_INSTALL_PREFIX_ZEROHOUR AND NOT "${RTS_INSTALL_PREFIX_ZEROHOUR}" STREQUAL "/registry")
34-
install(TARGETS z_generals RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}")
35-
install(FILES $<TARGET_PDB_FILE:z_generals> DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}" OPTIONAL)
34+
get_filename_component(INSTALL_BASENAME "${RTS_INSTALL_PREFIX_ZEROHOUR}" NAME)
35+
get_filename_component(INSTALL_PARENT "${RTS_INSTALL_PREFIX_ZEROHOUR}" DIRECTORY)
36+
get_filename_component(INSTALL_PARENT_BASENAME "${INSTALL_PARENT}" NAME)
37+
38+
if("${INSTALL_BASENAME}" STREQUAL "Command and Conquer Generals Zero Hour" AND
39+
"${INSTALL_PARENT_BASENAME}" STREQUAL "Command and Conquer Generals Zero Hour")
40+
set(RTS_INSTALL_PATH "${RTS_INSTALL_PREFIX_ZEROHOUR}")
41+
else()
42+
set(NESTED_PATH "${RTS_INSTALL_PREFIX_ZEROHOUR}/Command and Conquer Generals Zero Hour")
43+
if(EXISTS "${NESTED_PATH}")
44+
set(RTS_INSTALL_PATH "${NESTED_PATH}")
45+
else()
46+
set(RTS_INSTALL_PATH "${RTS_INSTALL_PREFIX_ZEROHOUR}")
47+
endif()
48+
endif()
49+
50+
install(TARGETS z_generals RUNTIME DESTINATION "${RTS_INSTALL_PATH}")
51+
install(FILES $<TARGET_PDB_FILE:z_generals> DESTINATION "${RTS_INSTALL_PATH}" OPTIONAL)
3652

3753
if(TARGET z_worldbuilder)
38-
install(TARGETS z_worldbuilder RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}")
39-
install(FILES $<TARGET_PDB_FILE:z_worldbuilder> DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}" OPTIONAL)
54+
install(TARGETS z_worldbuilder RUNTIME DESTINATION "${RTS_INSTALL_PATH}")
55+
install(FILES $<TARGET_PDB_FILE:z_worldbuilder> DESTINATION "${RTS_INSTALL_PATH}" OPTIONAL)
4056
endif()
4157

4258
if(TARGET z_particleeditor)
43-
install(TARGETS z_particleeditor RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}")
44-
install(FILES $<TARGET_PDB_FILE:z_particleeditor> DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}" OPTIONAL)
59+
install(TARGETS z_particleeditor RUNTIME DESTINATION "${RTS_INSTALL_PATH}")
60+
install(FILES $<TARGET_PDB_FILE:z_particleeditor> DESTINATION "${RTS_INSTALL_PATH}" OPTIONAL)
4561
endif()
4662

4763
if(TARGET z_debugwindow)
48-
install(TARGETS z_debugwindow RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}")
49-
install(FILES $<TARGET_PDB_FILE:z_debugwindow> DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}" OPTIONAL)
64+
install(TARGETS z_debugwindow RUNTIME DESTINATION "${RTS_INSTALL_PATH}")
65+
install(FILES $<TARGET_PDB_FILE:z_debugwindow> DESTINATION "${RTS_INSTALL_PATH}" OPTIONAL)
5066
endif()
5167

5268
if(TARGET z_guiedit)
53-
install(TARGETS z_guiedit RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}")
54-
install(FILES $<TARGET_PDB_FILE:z_guiedit> DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}" OPTIONAL)
69+
install(TARGETS z_guiedit RUNTIME DESTINATION "${RTS_INSTALL_PATH}")
70+
install(FILES $<TARGET_PDB_FILE:z_guiedit> DESTINATION "${RTS_INSTALL_PATH}" OPTIONAL)
5571
endif()
5672

5773
if(TARGET z_imagepacker)
58-
install(TARGETS z_imagepacker RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}")
59-
install(FILES $<TARGET_PDB_FILE:z_imagepacker> DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}" OPTIONAL)
74+
install(TARGETS z_imagepacker RUNTIME DESTINATION "${RTS_INSTALL_PATH}")
75+
install(FILES $<TARGET_PDB_FILE:z_imagepacker> DESTINATION "${RTS_INSTALL_PATH}" OPTIONAL)
6076
endif()
6177

6278
if(TARGET z_mapcachebuilder)
63-
install(TARGETS z_mapcachebuilder RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}")
64-
install(FILES $<TARGET_PDB_FILE:z_mapcachebuilder> DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}" OPTIONAL)
79+
install(TARGETS z_mapcachebuilder RUNTIME DESTINATION "${RTS_INSTALL_PATH}")
80+
install(FILES $<TARGET_PDB_FILE:z_mapcachebuilder> DESTINATION "${RTS_INSTALL_PATH}" OPTIONAL)
6581
endif()
6682

6783
if(TARGET z_w3dview)
68-
install(TARGETS z_w3dview RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}")
69-
install(FILES $<TARGET_PDB_FILE:z_w3dview> DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}" OPTIONAL)
84+
install(TARGETS z_w3dview RUNTIME DESTINATION "${RTS_INSTALL_PATH}")
85+
install(FILES $<TARGET_PDB_FILE:z_w3dview> DESTINATION "${RTS_INSTALL_PATH}" OPTIONAL)
7086
endif()
7187

7288
if(TARGET z_wdump)
73-
install(TARGETS z_wdump RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}")
74-
install(FILES $<TARGET_PDB_FILE:z_wdump> DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}" OPTIONAL)
89+
install(TARGETS z_wdump RUNTIME DESTINATION "${RTS_INSTALL_PATH}")
90+
install(FILES $<TARGET_PDB_FILE:z_wdump> DESTINATION "${RTS_INSTALL_PATH}" OPTIONAL)
7591
endif()
7692
else()
7793
message(STATUS "Zero Hour install path not found. Registry keys for 'Command and Conquer Generals Zero Hour' not found. "

0 commit comments

Comments
 (0)