From 4a36a998aba212e6cf5a08e6260052cd422e8d98 Mon Sep 17 00:00:00 2001 From: Robert MacGregor Date: Tue, 31 May 2022 08:30:11 -0400 Subject: [PATCH] * Cleanup: Reorganize the engine main CMakeLists.txt for readability. --- CMakeLists.txt | 16 +- Engine/source/CMakeLists.txt | 321 +++++++++++------- .../source/platformWin32/winDInputDevice.cpp | 2 +- 3 files changed, 208 insertions(+), 131 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8a4b73947..1f36d6126 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -104,6 +104,20 @@ mark_as_advanced(TORQUE_USE_ZENITY) option(TORQUE_SHOW_LEGACY_FILE_FIELDS "If on, shows legacy direct file path fields in the inspector." OFF) mark_as_advanced(TORQUE_SHOW_LEGACY_FILE_FIELDS) +option(TORQUE_SFX_VORBIS "Vorbis Sound" ON) +mark_as_advanced(TORQUE_SFX_VORBIS) + +option(TORQUE_THEORA "Theora Video Support" ON) +mark_as_advanced(TORQUE_THEORA) + +option(TORQUE_ADVANCED_LIGHTING "Advanced Lighting" ON) +mark_as_advanced(TORQUE_ADVANCED_LIGHTING) + +option(TORQUE_BASIC_LIGHTING "Basic Lighting" ON) +mark_as_advanced(TORQUE_APP_PASSWORD) + +set(TORQUE_APP_PASSWORD "changeme" CACHE STRING "zip file password") + if(WIN32) option(TORQUE_OPENGL "Allow OpenGL render" ON) else() @@ -128,6 +142,6 @@ if (NOT TORQUE_INSTALLED_TEMPLATE) endif(NOT TORQUE_INSTALLED_TEMPLATE) # Generate torqueConfig.h in our temp directory -CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/Tools/CMake/torqueConfig.h.in" "${CMAKE_BINARY_DIR}/temp/torqueConfig.h") +configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/torqueConfig.h.in" "${CMAKE_BINARY_DIR}/temp/torqueConfig.h") add_subdirectory(Engine) diff --git a/Engine/source/CMakeLists.txt b/Engine/source/CMakeLists.txt index 09ddca020..bf167c319 100644 --- a/Engine/source/CMakeLists.txt +++ b/Engine/source/CMakeLists.txt @@ -1,22 +1,101 @@ project(${TORQUE_APP_NAME}) +# Enable ObjectiveC compilation when compiling for Apple platforms +if (APPLE) + enable_language(OBJC) +endif (APPLE) + +################# Initialize Common Variables ################### + +set(TORQUE_INCLUDE_DIRECTORIES "") +set(TORQUE_COMPILE_DEFINITIONS ICE_NO_DLL PCRE_STATIC TORQUE_ADVANCED_LIGHTING TORQUE_SHADERGEN + TORQUE_OPCODE TORQUE_ASSIMP TORQUE_SDL TORQUE_COLLADA + TORQUE_UNICODE UNICODE _UNICODE) + +set(TORQUE_LINK_LIBRARIES tinyxml collada ljpeg squish png_static opcode assimp + SDL2 glad pcre convexDecomp zlib) + +set(TORQUE_SOURCE_FILES "main/main.cpp") + +################# Set Conditional Engine Defines ################### + +if (TORQUE_OPENGL) + set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_OPENGL) +endif (TORQUE_OPENGL) + +if (TORQUE_D3D11) + set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_D3D11) +endif (TORQUE_D3D11) + +if (TORQUE_ADVANCED_LIGHTING) + set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_ADVANCED_LIGHTING) +endif (TORQUE_ADVANCED_LIGHTING) + +if (TORQUE_BASIC_LIGHTING) + set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_BASIC_LIGHTING) +endif (TORQUE_BASIC_LIGHTING) + +# On Windows we disable CRT Security warnings - this comes from recommendations to use non-portable functions. +if (WIN32) + set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} _CRT_SECURE_NO_WARNINGS) +endif (WIN32) + +################# Set Engine Linkages ################### + +# When on Windows, we need to link against winsock and windows codecs +if (WIN32) + set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} WS2_32.LIB windowscodecs.lib) + set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_WIN_SOURCES}) + + if (TORQUE_D3D11) + set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} dxguid.lib) + endif (TORQUE_D3D11) +endif (WIN32) + +# Only link Apple frameworks when on an Apple platform +if (APPLE) + set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} "-framework Cocoa" "-framework AppKit" "-framework CoreData" "-framework Foundation") +endif (APPLE) + +# Linux requires X11 & freetype +if (UNIX AND NOT APPLE) + set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} "X11" "Xft" "dl" "pthread") + set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_X11_SOURCES}) + + find_package(Freetype REQUIRED) + set(TORQUE_INCLUDE_DIRECTORIES ${TORQUE_INCLUDE_DIRECTORIES} ${FREETYPE_INCLUDE_DIRS}) + set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} ${FREETYPE_LIBRARIES}) +endif (UNIX AND NOT APPLE) + +################# Collect Source Files ################### + +# Handle app file(GLOB TORQUE_APP_SOURCES "app/*.cpp" "app/net/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_APP_SOURCES}) + +# Handle console +file(GLOB TORQUE_CONSOLE_SOURCES "console/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_CONSOLE_SOURCES}) # Handle Platform file(GLOB TORQUE_PLATFORM_SOURCES "platform/*.cpp" "platform/threads/*.cpp" "platform/async/*.cpp" "platform/input/*.cpp" "platform/output/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_SOURCES}) # Handle T3D file(GLOB TORQUE_T3D_SOURCES "T3D/fps/*.cpp" "T3D/fx/*.cpp" "T3D/vehicles/*.cpp" "T3D/physics/*.cpp" "T3D/decal/*.cpp" "T3D/sfx/*.cpp" "T3D/gameBase/*.cpp" "T3D/turret/*.cpp" "T3D/lighting/*.cpp" "T3D/gameOBjects/*.cpp" "T3D/components/*.cpp" "T3D/systems/*.cpp" "T3D/assets/*.cpp" "T3D/*.cpp" "T3D/gameBase/std/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_T3D_SOURCES}) # Handle TS file(GLOB TORQUE_TS_SOURCES "ts/*.cpp" "ts/collada/*.cpp" "ts/assimp/*.cpp" "ts/loader/*.cpp" "ts/arch/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_TS_SOURCES}) -# Handle SFX +# Handle SFX - OpenAL is handled as a module later on file(GLOB TORQUE_SFX_SOURCES "sfx/*.cpp" "sfx/media/*.cpp" "sfx/null/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_SFX_SOURCES}) # Handle GFX file(GLOB TORQUE_GFX_SOURCES "gfx/*.cpp" "gfx/Null/*.cpp" "gfx/test/*.cpp" "gfx/bitmap/*.cpp" "gfx/bitmap/loaders/*.cpp" @@ -32,257 +111,241 @@ if (WIN32 AND TORQUE_D3D11) set(TORQUE_GFX_SOURCES ${TORQUE_GFX_SOURCES} ${TORQUE_GFX_SOURCES_D3D11}) endif (WIN32 AND TORQUE_D3D11) +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_GFX_SOURCES}) + # Handle core file(GLOB TORQUE_CORE_SOURCES "core/*.cpp" "core/stream/*.cpp" "core/strings/*.cpp" "core/util/*.cpp" "core/util/journal/*.cpp" "core/util/zip/*.cpp" "core/util/compressors/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_CORE_SOURCES}) # Handle GUI file(GLOB TORQUE_GUI_SOURCES "gui/*.cpp" "gui/buttons/*.cpp" "gui/containers/*.cpp" "gui/controls/*.cpp" "gui/core/*.cpp" "gui/game/*.cpp" "gui/shiny/*.cpp" "gui/utility/*.cpp" "gui/3d/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_GUI_SOURCES}) # Handle postFX file(GLOB TORQUE_POSTFX_SOURCES "postFx/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_POSTFX_SOURCES}) # Handle Windowmanager file(GLOB TORQUE_WINDOW_MANAGER_SOURCES "windowManager/*.cpp" "windowManager/torque/*.cpp" "windowManager/sdl/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_WINDOW_MANAGER_SOURCES}) # Handle scene file(GLOB TORQUE_SCENE_SOURCES "scene/*.cpp" "scene/culling/*.cpp" "scene/zones/*.cpp" "scene/mixin/*.cpp") - -# Handle console -file(GLOB TORQUE_CONSOLE_SOURCES "console/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_SCENE_SOURCES}) # Handle math file(GLOB TORQUE_MATH_SOURCES "math/*.cpp" "math/util/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_MATH_SOURCES}) # Handle persistence file(GLOB TORQUE_PERSISTENCE_SOURCES "persistence/taml/*.cpp" "persistence/taml/binary/*.cpp" "persistence/taml/xml/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PERSISTENCE_SOURCES}) # Handle Cinterface file(GLOB TORQUE_CINTERFACE_SOURCES "cinterface/*.cpp") - -# Handle app -file(GLOB TORQUE_APP_SOURCES "app/*.cpp" "app/net/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_CINTERFACE_SOURCES}) # Handle util file(GLOB TORQUE_UTIL_SOURCES "util/*.cpp" "util/messaging/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_UTIL_SOURCES}) # Handle assets file(GLOB TORQUE_ASSETS_SOURCES "assets/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_ASSETS_SOURCES}) # Handle Sim file(GLOB TORQUE_SIM_SOURCES "sim/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_SIM_SOURCES}) # Handle module file(GLOB TORQUE_MODULE_SOURCES "module/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_MODULE_SOURCES}) # Handle forest file(GLOB TORQUE_FOREST_SOURCES "forest/*.cpp" "forest/ts/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_FOREST_SOURCES}) # Handle shadergen -file(GLOB TORQUE_SHADERGEN_SOURCES "shaderGen/*.cpp" "shaderGen/GLSL/*.cpp") +file(GLOB TORQUE_SHADERGEN_SOURCES "shaderGen/*.cpp") + if (WIN32 AND TORQUE_D3D11) file(GLOB TORQUE_SHADERGEN_SOURCES_HLSL "shaderGen/HLSL/*.cpp") set(TORQUE_SHADERGEN_SOURCES ${TORQUE_SHADERGEN_SOURCES} ${TORQUE_SHADERGEN_SOURCES_HLSL}) endif (WIN32) +if (TORQUE_OPENGL) + file(GLOB TORQUE_SHADERGEN_SOURCES_GLSL "shaderGen/GLSL/*.cpp") + set(TORQUE_SHADERGEN_SOURCES ${TORQUE_SHADERGEN_SOURCES} ${TORQUE_SHADERGEN_SOURCES_GLSL}) +endif (TORQUE_OPENGL) + +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_SHADERGEN_SOURCES}) + # Handle terrain file(GLOB TORQUE_TERRAIN_SOURCES "terrain/*.cpp") if (WIN32 AND TORQUE_D3D11) - file(GLOB TORQUE_TERRAIN_SOURCES_HLSL "terrain/hlsl/*.cpp") - set(TORQUE_TERRAIN_SOURCES ${TORQUE_TERRAIN_SOURCES} ${TORQUE_TERRAIN_SOURCES_HLSL}) + file(GLOB TORQUE_TERRAIN_SOURCES_HLSL "terrain/hlsl/*.cpp") + set(TORQUE_TERRAIN_SOURCES ${TORQUE_TERRAIN_SOURCES} ${TORQUE_TERRAIN_SOURCES_HLSL}) endif (WIN32 AND TORQUE_D3D11) if (TORQUE_OPENGL) - file(GLOB TORQUE_TERRAIN_SOURCES_GLSL "terrain/glsl/*.cpp") - set(TORQUE_TERRAIN_SOURCES ${TORQUE_TERRAIN_SOURCES} ${TORQUE_TERRAIN_SOURCES_GLSL}) + file(GLOB TORQUE_TERRAIN_SOURCES_GLSL "terrain/glsl/*.cpp") + set(TORQUE_TERRAIN_SOURCES ${TORQUE_TERRAIN_SOURCES} ${TORQUE_TERRAIN_SOURCES_GLSL}) endif (TORQUE_OPENGL) +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_TERRAIN_SOURCES}) + # Handle Materials file(GLOB TORQUE_MATERIALS_SOURCES "materials/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_MATERIALS_SOURCES}) # Handle collision file(GLOB TORQUE_COLLISION_SOURCES "collision/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_COLLISION_SOURCES}) # Handle lighting file(GLOB TORQUE_LIGHTING_SOURCES "lighting/*.cpp" "lighting/common/*.cpp" - "lighting/advanced/*.cpp" "lighting/shadowMap/*.cpp" - "lighting/advanced/glsl/*.cpp") + "lighting/shadowMap/*.cpp") -if (WIN32 AND TORQUE_D3D11) - file(GLOB TORQUE_LIGHTING_SOURCES_HLSL "lighting/advanced/hlsl/*.cpp") - set(TORQUE_LIGHTING_SOURCES ${TORQUE_LIGHTING_SOURCES} ${TORQUE_LIGHTING_SOURCES_HLSL}) -endif (WIN32 AND TORQUE_D3D11) +if (TORQUE_ADVANCED_LIGHTING) + file(GLOB TORQUE_LIGHTING_SOURCES_ADVANCED "lighting/advanced/*.cpp") + set(TORQUE_LIGHTING_SOURCES ${TORQUE_LIGHTING_SOURCES} ${TORQUE_LIGHTING_SOURCES_ADVANCED}) + + if (WIN32 AND TORQUE_D3D11) + file(GLOB TORQUE_LIGHTING_SOURCES_HLSL "lighting/advanced/hlsl/*.cpp") + set(TORQUE_LIGHTING_SOURCES ${TORQUE_LIGHTING_SOURCES} ${TORQUE_LIGHTING_SOURCES_HLSL}) + endif (WIN32 AND TORQUE_D3D11) + + if (TORQUE_OPENGL) + file(GLOB TORQUE_LIGHTING_SOURCES_GLSL "lighting/advanced/glsl/*.cpp") + set(TORQUE_LIGHTING_SOURCES ${TORQUE_LIGHTING_SOURCES} ${TORQUE_LIGHTING_SOURCES_GLSL}) + endif (TORQUE_OPENGL) +endif (TORQUE_ADVANCED_LIGHTING) + +if (TORQUE_BASIC_LIGHTING) + file(GLOB TORQUE_LIGHTING_SOURCES_BASIC "lighting/basic/*.cpp" "lighting/basic/shadowMap/*.cpp") + set(TORQUE_LIGHTING_SOURCES ${TORQUE_LIGHTING_SOURCES} ${TORQUE_LIGHTING_SOURCES_BASIC}) +endif (TORQUE_BASIC_LIGHTING) + +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_LIGHTING_SOURCES}) # Handle environment file(GLOB TORQUE_ENVIRONMENT_SOURCES "environment/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_ENVIRONMENT_SOURCES}) # Handle renderInstance file(GLOB TORQUE_RENDERINSTANCE_SOURCES "renderInstance/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_RENDERINSTANCE_SOURCES}) # Handle i18n file(GLOB TORQUE_I18N_SOURCES "i18n/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_I18N_SOURCES}) # Begin handling platform specific stuff # Handle Platform POSIX if (UNIX) - file(GLOB TORQUE_PLATFORM_POSIX_SOURCES "platformPOSIX/*.cpp") + file(GLOB TORQUE_PLATFORM_POSIX_SOURCES "platformPOSIX/*.cpp") - if (TORQUE_CPU_X32 OR TORQUE_CPU_X64) - file(GLOB TORQUE_PLATFORM_X86_UNIX_SOURCES "platformX86UNIX/*.cpp") - set(TORQUE_PLATFORM_POSIX_SOURCES ${TORQUE_PLATFORM_POSIX_SOURCES} ${TORQUE_PLATFORM_X86_UNIX_SOURCES}) - endif (TORQUE_CPU_X32 OR TORQUE_CPU_X64) + if (TORQUE_CPU_X32 OR TORQUE_CPU_X64) + file(GLOB TORQUE_PLATFORM_X86_UNIX_SOURCES "platformX86UNIX/*.cpp") + set(TORQUE_PLATFORM_POSIX_SOURCES ${TORQUE_PLATFORM_POSIX_SOURCES} ${TORQUE_PLATFORM_X86_UNIX_SOURCES}) + endif (TORQUE_CPU_X32 OR TORQUE_CPU_X64) + + set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_POSIX_SOURCES}) endif (UNIX) # Handle platformMac if (APPLE) - file(GLOB TORQUE_PLATFORM_MAC_SOURCES "platformMac/*.mm") + file(GLOB TORQUE_PLATFORM_MAC_SOURCES "platformMac/*.mm") + set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_MAC_SOURCES}) endif (APPLE) # Handle platformWin32 if (WIN32) - file(GLOB TORQUE_PLATFORM_WIN_SOURCES "platformWin32/*.cpp" "platformWin32/videoInfo/*.cpp") + file(GLOB TORQUE_PLATFORM_WIN_SOURCES "platformWin32/*.cpp" "platformWin32/videoInfo/*.cpp") + set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_WIN_SOURCES}) endif (WIN32) # Handle platformSDL file(GLOB TORQUE_PLATFORM_SDL_SOURCES "platformSDL/*.cpp" "platformSDL/threads/*.cpp") +set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_SDL_SOURCES}) # Handle platformX11 if (UNIX AND NOT APPLE) - file(GLOB TORQUE_PLATFORM_X11_SOURCES "platformX11/*.cpp") + file(GLOB TORQUE_PLATFORM_X11_SOURCES "platformX11/*.cpp") + set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_X11_SOURCES}) endif (UNIX AND NOT APPLE) -################# Start building libs ################### - -set(TORQUE_INCLUDE_DIRECTORIES "") -set(TORQUE_COMPILE_DEFINITIONS ICE_NO_DLL PCRE_STATIC TORQUE_ADVANCED_LIGHTING TORQUE_SHADERGEN - TORQUE_OPCODE TORQUE_ASSIMP TORQUE_SDL TORQUE_COLLADA - TORQUE_UNICODE UNICODE _UNICODE) - -# Set common linkages -set(TORQUE_LINK_LIBRARIES tinyxml collada ljpeg squish png_static opcode assimp - SDL2 glad pcre convexDecomp zlib) - -# Begin assembling source code payload -set (TORQUE_SOURCE_FILES "main/main.cpp" - ${TORQUE_APP_SOURCES} ${TORQUE_RENDERINSTANCE_SOURCES} - ${TORQUE_CINTERFACE_SOURCES} ${TORQUE_MATH_SOURCES} - ${TORQUE_PLATFORM_SOURCES} ${TORQUE_ASSETS_SOURCES} ${TORQUE_UTIL_SOURCES} - ${TORQUE_CORE_SOURCES} ${TORQUE_PERSISTENCE_SOURCES} ${TORQUE_MODULE_SOURCES} - ${TORQUE_PLATFORM_SDL_SOURCES} ${TORQUE_PLATFORM_POSIX_SOURCES} - ${TORQUE_WINDOW_MANAGER_SOURCES} ${TORQUE_SCENE_SOURCES} ${TORQUE_COLLISION_SOURCES} - ${TORQUE_T3D_SOURCES} ${TORQUE_TS_SOURCES} ${TORQUE_SIM_SOURCES} ${TORQUE_MATERIALS_SOURCES} - ${TORQUE_SHADERGEN_SOURCES} ${TORQUE_LIGHTING_SOURCES} ${TORQUE_GUI_SOURCES} - ${TORQUE_ENVIRONMENT_SOURCES} ${TORQUE_TERRAIN_SOURCES} ${TORQUE_POSTFX_SOURCES} - ${TORQUE_I18N_SOURCES} ${TORQUE_CONSOLE_SOURCES} ${TORQUE_SFX_SOURCES} ${TORQUE_GFX_SOURCES}) - -# When on Windows, we need to link against winsock and windows codecs -if (WIN32) - set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} WS2_32.LIB windowscodecs.lib) - set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_WIN_SOURCES}) -endif (WIN32) - -if (WIN32 AND TORQUE_D3D11) - set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} dxguid.lib) - set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_D3D11) -endif (WIN32 AND TORQUE_D3D11) - -# Only link Apple frameworks when on an Apple platform -if (APPLE) - enable_language(OBJC) - set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_MAC_SOURCES}) - set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} "-framework Cocoa" "-framework AppKit" "-framework CoreData" "-framework Foundation") -endif (APPLE) - -if (TORQUE_OPENGL) - set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_OPENGL) -endif (TORQUE_OPENGL) - -# Linux requires X11 & freetype -if (UNIX AND NOT APPLE) - set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} "X11" "Xft" "dl" "pthread") - set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_X11_SOURCES}) - - find_package(Freetype REQUIRED) - set(TORQUE_INCLUDE_DIRECTORIES ${TORQUE_INCLUDE_DIRECTORIES} ${FREETYPE_INCLUDE_DIRS}) - set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} ${FREETYPE_LIBRARIES}) -endif (UNIX AND NOT APPLE) +################# Dynamic File Configuration ################### # Prepare Windows RC file if (WIN32) set(APPLICATION_ICON_PATH "${CMAKE_SOURCE_DIR}/Tools/CMake/torque.ico") - CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/Tools/CMake/torque-win.rc.in" "${CMAKE_BINARY_DIR}/temp/torque.rc") + + configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/torque-win.rc.in" "${CMAKE_BINARY_DIR}/temp/torque.rc") set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} "${CMAKE_BINARY_DIR}/temp/torque.rc") endif (WIN32) +# Prepare OSX Plist +if (APPLE) + set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_MAC_SOURCES} "${CMAKE_SOURCE_DIR}/Tools/CMake/torque.icns") + set_source_files_properties("${CMAKE_SOURCE_DIR}/Tools/CMake/torque.icns" PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") + + set(EXECUTABLE_NAME "${TORQUE_APP_NAME}") + configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/Info.plist.in" "${CMAKE_BINARY_DIR}/temp/Info.plist" COPYONLY) +endif (APPLE) +################# Engine Module Handling ################### -# Search module directories set(TORQUE_MODULE_PATHS "${CMAKE_SOURCE_DIR}/Tools/CMake/modules") - if (NOT "${TORQUE_MODULE_USER_PATH}" STREQUAL "") - list(APPEND TORQUE_MODULE_PATHS "${TORQUE_MODULE_USER_PATH}") + list(APPEND TORQUE_MODULE_PATHS "${TORQUE_MODULE_USER_PATH}") endif() foreach (TORQUE_MODULE_PATH ${TORQUE_MODULE_PATHS}) - # First find simple cmake scripts - file(GLOB MODULE_SCRIPTS "${TORQUE_MODULE_PATH}/*.cmake") + # First find simple cmake scripts + file(GLOB MODULE_SCRIPTS "${TORQUE_MODULE_PATH}/*.cmake") + foreach (TORQUE_MODULE_SCRIPT ${MODULE_SCRIPTS}) + include(${TORQUE_MODULE_SCRIPT}) + endforeach() - message("Found Module Scripts" ${MODULE_SCRIPTS}) - foreach (TORQUE_MODULE_SCRIPT ${MODULE_SCRIPTS}) - message("Including Module Script: ${TORQUE_MODULE_SCRIPT}") - include(${TORQUE_MODULE_SCRIPT}) - endforeach() + # Next find sub projects + SUBDIRLIST(POSSIBLE_PROJECTS "${TORQUE_MODULE_PATH}") + foreach (POSSIBLE_PROJECT ${POSSIBLE_PROJECTS}) + # Retrieve the absolute path of this possible project + get_filename_component(POSSIBLE_PROJECT_ABSOLUTEPATH "${POSSIBLE_PROJECT}" + REALPATH BASE_DIR "${TORQUE_MODULE_PATH}") - # Next find sub projects - SUBDIRLIST(POSSIBLE_PROJECTS "${TORQUE_MODULE_PATH}") - foreach (POSSIBLE_PROJECT ${POSSIBLE_PROJECTS}) - # Retrieve the absolute path of this possible project - get_filename_component(POSSIBLE_PROJECT_ABSOLUTEPATH "${POSSIBLE_PROJECT}" - REALPATH BASE_DIR "${TORQUE_MODULE_PATH}") - - if (EXISTS "${POSSIBLE_PROJECT_ABSOLUTEPATH}/CMakeLists.txt") - add_subdirectory("${POSSIBLE_PROJECT_ABSOLUTEPATH}" ${CMAKE_BINARY_DIR}/temp/${POSSIBLE_PROJECT} EXCLUDE_FROM_ALL) - endif() - endforeach() + if (EXISTS "${POSSIBLE_PROJECT_ABSOLUTEPATH}/CMakeLists.txt") + add_subdirectory("${POSSIBLE_PROJECT_ABSOLUTEPATH}" ${CMAKE_BINARY_DIR}/temp/${POSSIBLE_PROJECT} EXCLUDE_FROM_ALL) + endif() + endforeach() endforeach() -if (APPLE) - # Next setup the icon for OSX - set_source_files_properties("${CMAKE_SOURCE_DIR}/Tools/CMake/torque.icns" PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") -endif (APPLE) +################# Executable Generation ################### -# Final executable if (APPLE) - add_executable(${TORQUE_APP_NAME} MACOSX_BUNDLE "${CMAKE_SOURCE_DIR}/Tools/CMake/torque.icns" ${TORQUE_SOURCE_FILES}) + add_executable(${TORQUE_APP_NAME} MACOSX_BUNDLE ${TORQUE_SOURCE_FILES}) + set_target_properties(${TORQUE_APP_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_BINARY_DIR}/temp/Info.plist") elseif (WIN32) - add_executable(${TORQUE_APP_NAME} WIN32 ${TORQUE_SOURCE_FILES}) + add_executable(${TORQUE_APP_NAME} WIN32 ${TORQUE_SOURCE_FILES}) + + # NOTE: On Windows, /Zc:wchar_t- is necessary otherwise you get unicode errors + set_target_properties(${TORQUE_APP_NAME} PROPERTIES COMPILE_FLAGS "/Zc:wchar_t-") else() - add_executable(${TORQUE_APP_NAME} ${TORQUE_SOURCE_FILES}) + add_executable(${TORQUE_APP_NAME} ${TORQUE_SOURCE_FILES}) + + # NOTE: On Linux, we set the rpath to ./ so that shared objects next to the executable are used + set_target_properties(${TORQUE_APP_NAME} PROPERTIES LINK_FLAGS "-Wl,-rpath,./") endif() -if (APPLE) - # Parameters used for the plist configuration - set(EXECUTABLE_NAME "${TORQUE_APP_NAME}") - - CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/Tools/CMake/Info.plist.in" "${CMAKE_BINARY_DIR}/temp/Info.plist" COPYONLY) - set_target_properties(${TORQUE_APP_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_BINARY_DIR}/temp/Info.plist") -endif (APPLE) - target_compile_definitions(${TORQUE_APP_NAME} PUBLIC ${TORQUE_COMPILE_DEFINITIONS}) target_link_libraries(${TORQUE_APP_NAME} ${TORQUE_LINK_LIBRARIES}) target_include_directories(${TORQUE_APP_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp" ${TORQUE_INCLUDE_DIRECTORIES}) target_compile_features(${TORQUE_APP_NAME} PRIVATE cxx_std_17) -if (WIN32) - set_target_properties(${TORQUE_APP_NAME} PROPERTIES COMPILE_FLAGS "-D_CRT_SECURE_NO_WARNINGS /MP /Zc:wchar_t-") -endif (WIN32) - -if (UNIX AND NOT APPLE) - set_target_properties(${TORQUE_APP_NAME} PROPERTIES LINK_FLAGS "-Wl,-rpath,./") -endif (UNIX AND NOT APPLE) - # Process link libraries for dynamic links - we do this on OSX/Linux to ensure the binaries end up in the correct App directory # as in the root CMake we force everything to be in game. This is necessary because on these platforms these are considered "libraries" # and not runtime binaries like we configure in the root CMake. We don't globally set library outputs to avoid outputting eg. a files to @@ -297,9 +360,9 @@ if (UNIX) # Only pay attention to shared libraries and make them output to the app resources if ("${LINK_LIBRARY_TYPE}" STREQUAL "SHARED_LIBRARY") if (APPLE) - set_target_properties( ${GAME_LINK_LIBRARY} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${TORQUE_APP_GAME_DIRECTORY}/${TORQUE_APP_NAME}.app/Resources") + set_target_properties(${GAME_LINK_LIBRARY} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${TORQUE_APP_GAME_DIRECTORY}/${TORQUE_APP_NAME}.app/Resources") else() - set_target_properties( ${GAME_LINK_LIBRARY} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${TORQUE_APP_GAME_DIRECTORY}") + set_target_properties(${GAME_LINK_LIBRARY} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${TORQUE_APP_GAME_DIRECTORY}") endif(APPLE) endif() endif() diff --git a/Engine/source/platformWin32/winDInputDevice.cpp b/Engine/source/platformWin32/winDInputDevice.cpp index 9ce308090..99fb32a3b 100644 --- a/Engine/source/platformWin32/winDInputDevice.cpp +++ b/Engine/source/platformWin32/winDInputDevice.cpp @@ -143,7 +143,7 @@ bool DInputDevice::create() result = mDevice->SetDataFormat( &dataFormat ); if ( FAILED( result ) ) - { + { Con::errorf( " Failed to set the data format for the %s input device.", mName ); #ifdef LOG_INPUT Input::log( "Failed to set the data format for %s!\n", mName );