Skip to content
Merged
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
33 changes: 18 additions & 15 deletions Generals/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,28 +15,31 @@ add_subdirectory(Code)

# If we are building on windows for windows, try and get the game install path from the registry.
if("${CMAKE_HOST_SYSTEM}" MATCHES "Windows" AND "${CMAKE_SYSTEM}" MATCHES "Windows")
# Check the CD registry path
if(NOT RTS_INSTALL_PREFIX_GENERALS)
get_filename_component(RTS_INSTALL_PREFIX_GENERALS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Electronic Arts\\EA Games\\Generals;InstallPath]" ABSOLUTE CACHE)
endif()
include(${CMAKE_SOURCE_DIR}/cmake/registry.cmake)

# Check the WOW6432Node registry path (for EA App on 64-bit Windows)
if(NOT RTS_INSTALL_PREFIX_GENERALS OR "${RTS_INSTALL_PREFIX_GENERALS}" STREQUAL "/registry")
get_filename_component(RTS_INSTALL_PREFIX_GENERALS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Electronic Arts\\EA Games\\Generals;InstallPath]" ABSOLUTE CACHE)
endif()
# Check the EA App/CD registry path
fetch_registry_value(
"HKEY_LOCAL_MACHINE/SOFTWARE/Electronic Arts/EA Games/Generals"
"InstallPath"
RTS_INSTALL_PREFIX_GENERALS
"Generals install path from registry")

# Check the "First Decade" registry path
if(NOT RTS_INSTALL_PREFIX_GENERALS OR "${RTS_INSTALL_PREFIX_GENERALS}" STREQUAL "/registry")
get_filename_component(RTS_INSTALL_PREFIX_GENERALS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Electronic Arts\\EA Games\\Command and Conquer The First Decade;gr_folder]" ABSOLUTE CACHE)
endif()
fetch_registry_value(
"HKEY_LOCAL_MACHINE/SOFTWARE/Electronic Arts/EA Games/Command and Conquer The First Decade"
"gr_folder"
RTS_INSTALL_PREFIX_GENERALS
"Generals install path from registry")

# Check the Steam registry path
if(NOT RTS_INSTALL_PREFIX_GENERALS OR "${RTS_INSTALL_PREFIX_GENERALS}" STREQUAL "/registry")
get_filename_component(RTS_INSTALL_PREFIX_GENERALS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Electronic Arts\\EA Games\\Generals;installPath]" ABSOLUTE CACHE)
endif()
fetch_registry_value(
"HKEY_LOCAL_MACHINE/SOFTWARE/Electronic Arts/EA Games/Generals"
"installPath"
RTS_INSTALL_PREFIX_GENERALS
"Generals install path from registry")
endif()

if(RTS_INSTALL_PREFIX_GENERALS AND NOT "${RTS_INSTALL_PREFIX_GENERALS}" STREQUAL "/registry")
if(RTS_INSTALL_PREFIX_GENERALS)
install(TARGETS g_generals RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_GENERALS}")
install(FILES $<TARGET_PDB_FILE:g_generals> DESTINATION "${RTS_INSTALL_PREFIX_GENERALS}" OPTIONAL)

Expand Down
32 changes: 18 additions & 14 deletions GeneralsMD/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,27 +15,31 @@ add_subdirectory(Code)

# If we are building on windows for windows, try and get the game install path from the registry.
if("${CMAKE_HOST_SYSTEM}" MATCHES "Windows" AND "${CMAKE_SYSTEM}" MATCHES "Windows")
if(NOT RTS_INSTALL_PREFIX_ZEROHOUR)
get_filename_component(RTS_INSTALL_PREFIX_ZEROHOUR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Electronic Arts\\EA Games\\Command and Conquer Generals Zero Hour;InstallPath]" ABSOLUTE CACHE)
endif()
include(${CMAKE_SOURCE_DIR}/cmake/registry.cmake)

# Check the WOW6432Node registry path (for EA App on 64-bit Windows)
if(NOT RTS_INSTALL_PREFIX_ZEROHOUR OR "${RTS_INSTALL_PREFIX_ZEROHOUR}" STREQUAL "/registry")
get_filename_component(RTS_INSTALL_PREFIX_ZEROHOUR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Electronic Arts\\EA Games\\Command and Conquer Generals Zero Hour;InstallPath]" ABSOLUTE CACHE)
endif()
# Check the EA App/CD registry path
fetch_registry_value(
"HKEY_LOCAL_MACHINE/SOFTWARE/Electronic Arts/EA Games/Command and Conquer Generals Zero Hour"
"InstallPath"
RTS_INSTALL_PREFIX_ZEROHOUR
"Zero Hour install path from registry")

# Check the "First Decade" registry path
if(NOT RTS_INSTALL_PREFIX_ZEROHOUR OR "${RTS_INSTALL_PREFIX_ZEROHOUR}" STREQUAL "/registry")
get_filename_component(RTS_INSTALL_PREFIX_ZEROHOUR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Electronic Arts\\EA Games\\Command and Conquer The First Decade;zh_folder]" ABSOLUTE CACHE)
endif()
fetch_registry_value(
"HKEY_LOCAL_MACHINE/SOFTWARE/Electronic Arts/EA Games/Command and Conquer The First Decade"
"zh_folder"
RTS_INSTALL_PREFIX_ZEROHOUR
"Zero Hour install path from registry")

# Check the Steam registry path
if(NOT RTS_INSTALL_PREFIX_ZEROHOUR OR "${RTS_INSTALL_PREFIX_ZEROHOUR}" STREQUAL "/registry")
get_filename_component(RTS_INSTALL_PREFIX_ZEROHOUR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Electronic Arts\\EA Games\\ZeroHour;installPath]" ABSOLUTE CACHE)
endif()
fetch_registry_value(
"HKEY_LOCAL_MACHINE/SOFTWARE/Electronic Arts/EA Games/ZeroHour"
"installPath"
RTS_INSTALL_PREFIX_ZEROHOUR
"Zero Hour install path from registry")
endif()

if(RTS_INSTALL_PREFIX_ZEROHOUR AND NOT "${RTS_INSTALL_PREFIX_ZEROHOUR}" STREQUAL "/registry")
if(RTS_INSTALL_PREFIX_ZEROHOUR)
install(TARGETS z_generals RUNTIME DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}")
install(FILES $<TARGET_PDB_FILE:z_generals> DESTINATION "${RTS_INSTALL_PREFIX_ZEROHOUR}" OPTIONAL)

Expand Down
15 changes: 15 additions & 0 deletions cmake/registry.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Helper macro for querying Windows registry values
# Queries both 32-bit and 64-bit registry views automatically
macro(fetch_registry_value registry_key registry_value output_var description)
if(NOT ${output_var})
cmake_host_system_information(RESULT _variable
QUERY WINDOWS_REGISTRY
"${registry_key}"
VALUE "${registry_value}"
VIEW 32_64)
if(_variable)
set(${output_var} "${_variable}" CACHE PATH "${description}")
endif()
endif()
endmacro()

Loading