2023-06-12 15:25:43 +00:00
cmake_minimum_required ( VERSION 3.21.0 )
2023-05-28 05:13:36 +00:00
set ( CMAKE_CXX_STANDARD 17 )
2023-08-16 14:17:43 +00:00
set ( CMAKE_CONFIGURATION_TYPES "Debug;RelWithDebInfo;Release" CACHE STRING "" FORCE )
2025-12-20 18:25:06 +00:00
find_program ( GIT_EXECUTABLE git )
if ( GIT_EXECUTABLE )
option ( GIT_IN_USE "use Git" ON )
else ( )
option ( GIT_IN_USE "use Git" OFF )
endif ( )
2022-05-14 03:42:41 +00:00
# An application name must be set first
set ( TORQUE_APP_NAME "" CACHE STRING "the app name" )
2014-03-20 04:34:45 +00:00
if ( "${TORQUE_APP_NAME}" STREQUAL "" )
message ( FATAL_ERROR "Please set TORQUE_APP_NAME first" )
endif ( )
2014-03-19 02:23:51 +00:00
2025-12-20 18:25:06 +00:00
2025-12-20 17:28:02 +00:00
include ( "${CMAKE_SOURCE_DIR}/Tools/CMake/torque_macros.cmake" )
include ( "${CMAKE_SOURCE_DIR}/Tools/CMake/torque_configs.cmake" )
# Ensure multi-core compilation is enabled for everything
add_compile_options ( $< $<CXX_COMPILER_ID:MSVC > :/MP> )
2025-07-11 17:57:21 +00:00
project ( ${ TORQUE_APP_NAME } )
2022-05-30 18:22:59 +00:00
# Once an app name is determined, we know what our project pathing structure should look like
set ( TORQUE_APP_ROOT_DIRECTORY "${CMAKE_SOURCE_DIR}/My Projects/${TORQUE_APP_NAME}" )
set ( TORQUE_APP_GAME_DIRECTORY "${TORQUE_APP_ROOT_DIRECTORY}/game" )
2023-10-14 21:15:49 +00:00
#library handling
2023-10-15 02:41:50 +00:00
set ( TORQUE_LIB_ROOT_DIRECTORY "${CMAKE_SOURCE_DIR}/Engine/lib" )
set ( TORQUE_LIB_TARG_DIRECTORY "${CMAKE_BINARY_DIR}/Engine/lib" )
2023-10-19 07:08:50 +00:00
set ( TORQUE_SOURCE_DIRECTROY "${CMAKE_SOURCE_DIR}/Engine/source" )
2023-10-14 21:15:49 +00:00
2022-05-30 18:22:59 +00:00
# Ensure all possible configurations end up in the project directory
2023-10-19 23:19:40 +00:00
set ( CMAKE_INSTALL_PREFIX "${TORQUE_APP_ROOT_DIRECTORY}" CACHE STRING "" FORCE )
2022-05-30 18:22:59 +00:00
set ( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${TORQUE_APP_GAME_DIRECTORY}" )
2024-12-31 10:27:31 +00:00
set ( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/Tools/CMake/finders" )
2025-10-08 20:06:55 +00:00
2022-05-30 18:22:59 +00:00
foreach ( OUTPUTCONFIG ${ CMAKE_CONFIGURATION_TYPES } )
string ( TOUPPER ${ OUTPUTCONFIG } OUTPUTCONFIG )
set ( CMAKE_RUNTIME_OUTPUT_DIRECTORY_ ${ OUTPUTCONFIG } "${TORQUE_APP_GAME_DIRECTORY}" )
endforeach ( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES )
2022-05-28 00:14:17 +00:00
2022-05-14 03:42:41 +00:00
# Detect CPU Information
if ( CMAKE_SYSTEM_PROCESSOR MATCHES "arm" )
if ( CMAKE_CXX_SIZEOF_DATA_PTR EQUAL 8 )
set ( TORQUE_CPU_ARM64 ON )
elseif ( CMAKE_CXX_SIZEOF_DATA_PTR EQUAL 4 )
set ( TORQUE_CPU_ARM32 ON )
endif ( )
else ( )
if ( CMAKE_CXX_SIZEOF_DATA_PTR EQUAL 8 )
set ( TORQUE_CPU_X64 ON )
elseif ( CMAKE_CXX_SIZEOF_DATA_PTR EQUAL 4 )
set ( TORQUE_CPU_X32 ON )
endif ( )
endif ( )
2022-05-17 22:04:19 +00:00
if ( NOT TORQUE_SCRIPT_EXTENSION )
set ( TORQUE_SCRIPT_EXTENSION "tscript" CACHE STRING "The default script extension to use for TorqueScript files" )
endif ( )
mark_as_advanced ( TORQUE_SCRIPT_EXTENSION )
2022-05-22 00:01:23 +00:00
set ( TORQUE_MODULE_USER_PATH "" CACHE PATH "Additional search path for modules aside from the default Tools/CMake/modules." )
mark_as_advanced ( TORQUE_MODULE_USER_PATH )
2022-05-30 18:22:59 +00:00
2022-05-18 00:42:35 +00:00
# Install Torque template
2022-05-17 22:04:19 +00:00
if ( NOT TORQUE_TEMPLATE )
set ( TORQUE_TEMPLATE "BaseGame" CACHE STRING "the template to use" )
endif ( )
2022-05-30 19:22:52 +00:00
if ( NOT TORQUE_INSTALLED_TEMPLATE )
installTemplate ( ${ TORQUE_TEMPLATE } )
set ( TORQUE_INSTALLED_TEMPLATE TRUE CACHE BOOL "Whether or not the game template is installed. This may be reset to false (or removed) to force a reinstall." )
endif ( NOT TORQUE_INSTALLED_TEMPLATE )
2022-05-17 22:04:19 +00:00
# Generate torqueConfig.h in our temp directory
2023-10-14 21:15:49 +00:00
configure_file ( "${CMAKE_SOURCE_DIR}/Tools/CMake/torqueConfig.h.in" "${TORQUE_APP_ROOT_DIRECTORY}/source/torqueConfig.h" )
2022-05-17 22:04:19 +00:00
2023-10-21 23:47:14 +00:00
if ( APPLE )
include ( "${CMAKE_SOURCE_DIR}/Tools/CMake/torqueMacOSconfigs.cmake" )
endif ( APPLE )
2023-10-21 06:08:12 +00:00
add_subdirectory ( Engine )