Browse Source

Revert "example cmake workflow"

This reverts commit 233c6a80457bd3aaba3083e0f957444a973533e6.
marauder2k7 1 year ago
parent
commit
acf3177021

+ 5 - 10
CMakeLists.txt

@@ -4,10 +4,10 @@ set(CMAKE_CONFIGURATION_TYPES "Debug;RelWithDebInfo;Release" CACHE STRING "" FOR
 
 include("${CMAKE_SOURCE_DIR}/Tools/CMake/torque_macros.cmake")
 include("${CMAKE_SOURCE_DIR}/Tools/CMake/torque_configs.cmake")
-#file(GLOB OS_SCRIPTS "${CMAKE_SOURCE_DIR}/Tools/CMake/torque*configs.cmake")
-#foreach (TORQUE_OS_SCRIPT ${OS_SCRIPTS})
-#    include(${TORQUE_OS_SCRIPT})
-#endforeach() 
+file(GLOB OS_SCRIPTS "${CMAKE_SOURCE_DIR}/Tools/CMake/torque*configs.cmake")
+foreach (TORQUE_OS_SCRIPT ${OS_SCRIPTS})
+    include(${TORQUE_OS_SCRIPT})
+endforeach() 
 
 # Ensure multi-core compilation is enabled for everything
 add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP>)
@@ -28,7 +28,6 @@ set(TORQUE_APP_GAME_DIRECTORY "${TORQUE_APP_ROOT_DIRECTORY}/game")
 set(TORQUE_LIB_ROOT_DIRECTORY "${CMAKE_SOURCE_DIR}/Engine/lib")
 set(TORQUE_LIB_TARG_DIRECTORY "${CMAKE_BINARY_DIR}/Engine/lib")
 set(TORQUE_SOURCE_DIRECTROY "${CMAKE_SOURCE_DIR}/Engine/source")
-set(TORQUE_ENGINE_DIRECTORY "${CMAKE_SOURCE_DIR}/Engine")
 
 # Ensure all possible configurations end up in the project directory
 set(CMAKE_INSTALL_PREFIX "${TORQUE_APP_ROOT_DIRECTORY}" CACHE STRING "" FORCE)
@@ -75,8 +74,4 @@ endif(NOT TORQUE_INSTALLED_TEMPLATE)
 # Generate torqueConfig.h in our temp directory
 configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/torqueConfig.h.in" "${TORQUE_APP_ROOT_DIRECTORY}/source/torqueConfig.h")
 
-if(APPLE)
-    include("${CMAKE_SOURCE_DIR}/Tools/CMake/platformconfigs/torqueMacosxconfig.cmake")
-else(APPLE)
-    add_subdirectory(Engine)
-endif(APPLE)
+add_subdirectory(Engine)

+ 467 - 4
Engine/source/CMakeLists.txt

@@ -18,8 +18,471 @@ set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_TESTS_ENABLE
 set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} "_VARIADIC_MAX=10")
 endif()
 
-if(APPLE)
-  include(torqueMacosEngine.cmake)
+# 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 WIN32)
+endif (WIN32)
+
+if (APPLE)
+  set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} __MACOSX__)
+elseif (UNIX)
+  set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} __linux__)
+endif (APPLE)
+
+################# Set Engine Linkages ###################
+
+# When on Windows, we need to link against winsock and windows codecs
+if (WIN32)
+	set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_WIN_SOURCES})
+endif (WIN32)
+
+# Linux requires X11 & freetype
+if (UNIX AND NOT APPLE)
+	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})
+endif (UNIX AND NOT APPLE)
+
+################# Collect Source Files ###################
+
+# Handle app
+torqueAddSourceDirectories("app" "app/net")
+
+# Handle console
+torqueAddSourceDirectories("console")
+torqueAddSourceDirectories("console/torquescript")
+
+# Handle Platform
+torqueAddSourceDirectories("platform" "platform/threads" "platform/async"
+                                  "platform/input" "platform/output")
+
+torqueAddSourceDirectories("platform/nativeDialogs")
+# Handle T3D
+torqueAddSourceDirectories("T3D/fps" "T3D/fx" "T3D/vehicles" "T3D/physics"
+                              "T3D/decal" "T3D/sfx" "T3D/gameBase" "T3D/turret"
+                              "T3D/lighting" "T3D/gameOBjects" "T3D/components"
+                              "T3D/systems" "T3D/assets" "T3D" "T3D/gameBase/std")
+
+# Handle TS
+torqueAddSourceDirectories("ts" "ts/collada" "ts/assimp" "ts/loader" "ts/arch")
+
+# Handle SFX - OpenAL is handled as a module later on
+torqueAddSourceDirectories("sfx" "sfx/media" "sfx/null")
+if(TORQUE_SFX_OPENAL AND NOT TORQUE_DEDICATED)
+    torqueAddSourceDirectories("sfx/openal")
+    if(WIN32)
+      torqueAddSourceDirectories("sfx/openal/win32")
+    elseif(UNIX AND NOT APPLE)
+        torqueAddSourceDirectories("sfx/openal/linux")
+    elseif(APPLE)
+        torqueAddSourceDirectories("sfx/openal/mac")
+    endif()
+endif()
+# Handle GFX
+torqueAddSourceDirectories("gfx" "gfx/Null" "gfx/test" "gfx/bitmap" "gfx/bitmap/loaders"
+                             "gfx/util" "gfx/video" "gfx/sim" )
+
+if (TORQUE_OPENGL)
+  torqueAddSourceDirectories("gfx/gl" "gfx/gl/sdl" "gfx/gl/tGL")
+endif (TORQUE_OPENGL)
+
+if (WIN32 AND TORQUE_D3D11)
+  torqueAddSourceDirectories("gfx/D3D11")
+endif (WIN32 AND TORQUE_D3D11)
+
+# Handle core
+torqueAddSourceDirectories("core" "core/stream" "core/strings" "core/util"
+                              "core/util/journal" "core/util/zip" "core/util/compressors")
+# Handle GUI
+torqueAddSourceDirectories("gui" "gui/buttons" "gui/containers" "gui/controls" "gui/core"
+                              "gui/game" "gui/shiny" "gui/utility" "gui/3d")
+
+# Handle postFX
+torqueAddSourceDirectories("postFx")
+
+# Handle Windowmanager
+torqueAddSourceDirectories("windowManager" "windowManager/torque" "windowManager/sdl")
+
+# Handle scene
+torqueAddSourceDirectories("scene" "scene/culling" "scene/zones" "scene/mixin")
+
+# Handle math
+torqueAddSourceDirectories("math" "math/util")
+
+# Handle persistence
+torqueAddSourceDirectories("persistence/taml" "persistence/taml/binary" "persistence/taml/xml")
+
+# Handle Cinterface
+torqueAddSourceDirectories("cinterface")
+
+# Handle util
+torqueAddSourceDirectories("util" "util/messaging")
+
+# Handle assets
+torqueAddSourceDirectories("assets")
+
+# Handle Sim
+torqueAddSourceDirectories("sim")
+
+# Handle module
+torqueAddSourceDirectories("module")
+
+# Handle forest
+torqueAddSourceDirectories("forest" "forest/ts")
+if(TORQUE_OPENGL)
+  torqueAddSourceDirectories("forest" "forest/glsl")
+endif(TORQUE_OPENGL)
+if(TORQUE_D3D11)
+  torqueAddSourceDirectories("forest" "forest/hlsl")
+endif(TORQUE_D3D11)
+
+# Handle shadergen
+torqueAddSourceDirectories("shaderGen")
+
+if (WIN32 AND TORQUE_D3D11)
+  torqueAddSourceDirectories("shaderGen/HLSL")
+endif (WIN32 AND TORQUE_D3D11)
+
+if (TORQUE_OPENGL)
+  torqueAddSourceDirectories("shaderGen/GLSL")
+endif (TORQUE_OPENGL)
+
+# Handle terrain
+torqueAddSourceDirectories("terrain")
+
+if (WIN32 AND TORQUE_D3D11)
+  torqueAddSourceDirectories("terrain/hlsl")
+endif (WIN32 AND TORQUE_D3D11)
+
+if (TORQUE_OPENGL)
+  torqueAddSourceDirectories("terrain/glsl")
+endif (TORQUE_OPENGL)
+
+# Handle Materials
+torqueAddSourceDirectories("materials")
+
+# Handle collision
+torqueAddSourceDirectories("collision")
+
+# Handle lighting
+torqueAddSourceDirectories("lighting" "lighting/common"
+                                   "lighting/shadowMap")
+
+if (TORQUE_ADVANCED_LIGHTING)
+  torqueAddSourceDirectories("lighting/advanced")
+
+	if (WIN32 AND TORQUE_D3D11)
+    torqueAddSourceDirectories("lighting/advanced/hlsl")
+	endif (WIN32 AND TORQUE_D3D11)
+
+	if (TORQUE_OPENGL)
+    torqueAddSourceDirectories("lighting/advanced/glsl")
+	endif (TORQUE_OPENGL)
+endif (TORQUE_ADVANCED_LIGHTING)
+
+if (TORQUE_BASIC_LIGHTING)
+  torqueAddSourceDirectories("lighting/basic" "lighting/basic/shadowMap")
+endif (TORQUE_BASIC_LIGHTING)
+
+# Handle environment
+torqueAddSourceDirectories("environment")
+
+# Handle renderInstance
+torqueAddSourceDirectories("renderInstance")
+
+# Handle i18n
+torqueAddSourceDirectories("i18n")
+
+# Begin handling platform specific stuff
+# Handle Platform POSIX
+if (UNIX)
+	torqueAddSourceDirectories("platformPOSIX")
+
+  if(NOT APPLE)
+    if (TORQUE_CPU_X32 OR TORQUE_CPU_X64)
+      torqueAddSourceDirectories("platformX86UNIX")
+    endif (TORQUE_CPU_X32 OR TORQUE_CPU_X64)
+  endif(NOT APPLE)
+endif (UNIX)
+
+# Handle platformMac
+if (APPLE)
+  torqueAddSourceDirectories("platformMac")
+endif (APPLE)
+
+# Handle platformWin32
+if (WIN32)
+	torqueAddSourceDirectories("platformWin32" "platformWin32/videoInfo")
+endif (WIN32)
+
+# Handle platformSDL
+torqueAddSourceDirectories("platformSDL" "platformSDL/threads")
+
+# Handle platformX11
+if (UNIX AND NOT APPLE)
+  torqueAddSourceDirectories("platformX11")
+endif (UNIX AND NOT APPLE)
+
+if(TORQUE_TESTING)
+  torqueAddSourceDirectories("testing")
+  set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_SHARED SDL_MAIN_HANDLED)
+endif(TORQUE_TESTING)
+
+# Add the collected files to our engine group
+source_group(TREE "${CMAKE_SOURCE_DIR}/Engine/source" PREFIX "Engine" FILES ${TORQUE_SOURCE_FILES})
+file(GLOB_RECURSE TORQUE_APP_GAME_SOURCES "${TORQUE_APP_ROOT_DIRECTORY}/source/*.cpp" "${TORQUE_APP_ROOT_DIRECTORY}/source/*.h")
+source_group(TREE "${TORQUE_APP_ROOT_DIRECTORY}/source" PREFIX "Source Files" FILES ${TORQUE_APP_GAME_SOURCES})
+set(TORQUE_INCLUDE_DIRECTORIES ${TORQUE_INCLUDE_DIRECTORIES} "${TORQUE_APP_ROOT_DIRECTORY}/source")
+
+################# Engine Module Handling ###################
+
+set(TORQUE_MODULE_PATHS "${CMAKE_SOURCE_DIR}/Tools/CMake/modules" "${TORQUE_APP_GAME_DIRECTORY}/data")
+if (NOT "${TORQUE_MODULE_USER_PATH}" STREQUAL "")
+	list(APPEND TORQUE_MODULE_PATHS "${TORQUE_MODULE_USER_PATH}")
+endif()
+
+# Before doing module scanning, store away the engine sources - we do this so that modules
+# can be placed into the proper filters
+set(TORQUE_SOURCE_FILES_TEMPORARY ${TORQUE_SOURCE_FILES} ${TORQUE_APP_GAME_SOURCES})
+set(TORQUE_SOURCE_FILES "")
+
+foreach (TORQUE_MODULE_PATH ${TORQUE_MODULE_PATHS})
+	# First find simple cmake scripts, mostly used for in-engine modules
+	file(GLOB MODULE_SCRIPTS "${TORQUE_MODULE_PATH}/*.cmake")
+	foreach (TORQUE_MODULE_SCRIPT ${MODULE_SCRIPTS})
+		include(${TORQUE_MODULE_SCRIPT})
+
+        # Add this script's collected files to our Engine group
+        source_group(TREE "${CMAKE_SOURCE_DIR}/Engine" PREFIX "Engine" FILES ${TORQUE_SOURCE_FILES})
+
+        set(TORQUE_SOURCE_FILES_TEMPORARY ${TORQUE_SOURCE_FILES_TEMPORARY} ${TORQUE_SOURCE_FILES})
+        set(TORQUE_SOURCE_FILES "")
+	endforeach()
+
+	# Next find sub projects, these can introduce new source files
+	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)
+            source_group(TREE "${POSSIBLE_PROJECT_ABSOLUTEPATH}" PREFIX "Modules/${POSSIBLE_PROJECT}" FILES ${TORQUE_SOURCE_FILES})
+
+            set(TORQUE_SOURCE_FILES_TEMPORARY ${TORQUE_SOURCE_FILES_TEMPORARY} ${TORQUE_SOURCE_FILES})
+            set(TORQUE_SOURCE_FILES "")
+        elseif(NOT EXISTS "${POSSIBLE_PROJECT_ABSOLUTEPATH}/*.cmake")
+            file(GLOB_RECURSE MODULE_SOURCE "${POSSIBLE_PROJECT_ABSOLUTEPATH}/source/*.h" "${POSSIBLE_PROJECT_ABSOLUTEPATH}/source/*.cpp")
+            #message(STATUS "MODULE_SOURCE:${MODULE_SOURCE}")
+            source_group(TREE "${POSSIBLE_PROJECT_ABSOLUTEPATH}" PREFIX "Modules/${POSSIBLE_PROJECT}/" FILES ${MODULE_SOURCE})
+            set(TORQUE_SOURCE_FILES_TEMPORARY ${TORQUE_SOURCE_FILES_TEMPORARY} ${MODULE_SOURCE})
+		endif()
+	endforeach()
+endforeach()
+
+set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES_TEMPORARY})
+
+################# Library Post-build Handling ###################
+set(TORQUE_LIBRARY_PATHS "${CMAKE_SOURCE_DIR}/Engine/lib" "${TORQUE_APP_GAME_DIRECTORY}/data")
+if (NOT "${TORQUE_LIBRARY_USER_PATH}" STREQUAL "")
+	list(APPEND TORQUE_LIBRARY_PATHS "${TORQUE_LIBRARY_USER_PATH}")
+endif()
+
+foreach (TORQUE_LIBRARY_PATH ${TORQUE_LIBRARY_PATHS})
+	# First find simple cmake scripts, mostly used for in-engine libraries
+	file(GLOB_RECURSE LIBRARY_SCRIPTS "${TORQUE_LIBRARY_PATH}/*Torque_postBuild.cmake")
+    #message(STATUS "LIBRARY_SCRIPTS:${LIBRARY_SCRIPTS}")
+	foreach (TORQUE_LIBRARY_SCRIPT ${LIBRARY_SCRIPTS})
+		include(${TORQUE_LIBRARY_SCRIPT})
+	endforeach()
+endforeach()
+################# 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" "${TORQUE_APP_ROOT_DIRECTORY}/source/torque.rc")
+	set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} "${TORQUE_APP_ROOT_DIRECTORY}/source/torque.rc")
+endif (WIN32)
+
+# Prepare OSX Plist
+if (APPLE)
+  set(MACOSX_RESOURCES "${CMAKE_SOURCE_DIR}/Tools/CMake/torque.icns" 
+  "${TORQUE_APP_GAME_DIRECTORY}/data"
+  "${TORQUE_APP_GAME_DIRECTORY}/core"
+  "${TORQUE_APP_GAME_DIRECTORY}/tools"
+  "${TORQUE_APP_GAME_DIRECTORY}/main.${TORQUE_SCRIPT_EXTENSION}")
+
+	set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_MAC_SOURCES} ${MACOSX_RESOURCES})
+
+  source_group("Resources" FILES ${MACOSX_RESOURCES})
+
+	set_source_files_properties(${MACOSX_RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
+
+	set(EXECUTABLE_NAME "${TORQUE_APP_NAME}")
+	configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/Info.plist.in" "${TORQUE_APP_ROOT_DIRECTORY}/source/Info.plist" COPYONLY)
+endif (APPLE)
+
+addDef(TORQUE_DEBUG Debug)
+addDef(TORQUE_RELEASE "RelWithDebInfo;Release")
+addDef(TORQUE_ENABLE_ASSERTS "Debug;RelWithDebInfo")
+addDef(TORQUE_DEBUG_GFX_MODE "RelWithDebInfo")
+addDef(TORQUE_OGGVORBIS)
+
+if(NOT TORQUE_SDL)
+   filterOut("platform/nativeDialogs/fileDialog.cpp" )
+endif()
+if(NOT TORQUE_OPENGL)
+  filterOut("platformSDL/sdlPlatformGL.cpp")
+endif()
+if (NOT TORQUE_NET_CURL)
+  filterOut("app/net/httpObject.h" "app/net/httpObject.cpp")
+endif()
+
+################# Executable Generation ###################
+if (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
+  set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_SHARED)
+
+  # Build the main engine library
+  add_library(TorqueEngine SHARED ${TORQUE_SOURCE_FILES})
+  target_compile_definitions(TorqueEngine PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+  target_link_libraries(TorqueEngine ${TORQUE_LINK_LIBRARIES})
+  target_include_directories(TorqueEngine PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp" ${TORQUE_INCLUDE_DIRECTORIES})
+
+  set(TORQUE_SOURCE_FILES "main/main.cpp")
+  set(TORQUE_LINK_LIBRARIES TorqueEngine)
+else()
+  if(NOT TORQUE_TESTING)
+    set(TORQUE_SOURCE_FILES "main/main.cpp" ${TORQUE_SOURCE_FILES})
+  endif()
+endif (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
+
+if (APPLE)
+	add_executable(${TORQUE_APP_NAME} MACOSX_BUNDLE ${TORQUE_SOURCE_FILES})
+	set_target_properties(${TORQUE_APP_NAME} PROPERTIES 
+  BUNDLE true
+  MACOSX_BUNDLE_INFO_PLIST "${TORQUE_APP_ROOT_DIRECTORY}/source/Info.plist"
+  XCODE_ATTRIBUTE_INSTALL_PATH "/Applications"
+  XCODE_ATTRIBUTE_SKIP_INSTALL "No"
+  MACOSX_RPATH TRUE)
+
+elseif (WIN32)
+	add_executable(${TORQUE_APP_NAME} WIN32 ${TORQUE_SOURCE_FILES})
+
+    set(TORQUE_CXX_FLAGS_COMMON_DEFAULT "-DUNICODE -D_UNICODE -D_CRT_SECURE_NO_WARNINGS /MP /Ob2 /Oi /Ot /Oy /GT /Zi /W4 /nologo /GF /EHsc /GS- /Gy- /Qpar- /fp:precise /fp:except- /GR /Zc:wchar_t-" )
+    if( TORQUE_CPU_X32 )
+       set(TORQUE_CXX_FLAGS_COMMON_DEFAULT "${TORQUE_CXX_FLAGS_COMMON_DEFAULT} /arch:SSE2")
+    endif()
+    set(TORQUE_CXX_FLAGS_COMMON ${TORQUE_CXX_FLAGS_COMMON_DEFAULT} CACHE STRING "")
+    mark_as_advanced(TORQUE_CXX_FLAGS_COMMON)
+
+    set(TORQUE_CXX_FLAGS_EXECUTABLES "/wd4018 /wd4100 /wd4121 /wd4127 /wd4130 /wd4244 /wd4245 /wd4389 /wd4511 /wd4512 /wd4800 /wd4995" CACHE STRING "")
+    mark_as_advanced(TORQUE_CXX_FLAGS_EXECUTABLES)
+
+    set(TORQUE_CXX_FLAGS "${TORQUE_CXX_FLAGS_COMMON_DEFAULT} ${TORQUE_CXX_FLAGS_EXECUTABLES}" CACHE STRING "")
+    mark_as_advanced(TORQUE_CXX_FLAGS)
+
+	# NOTE: On Windows, /Zc:wchar_t- is necessary otherwise you get unicode errors
+	set_target_properties(${TORQUE_APP_NAME} PROPERTIES COMPILE_FLAGS "${TORQUE_CXX_FLAGS}")
+   if (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
+      set_target_properties(TorqueEngine PROPERTIES COMPILE_FLAGS "${TORQUE_CXX_FLAGS_COMMON_DEFAULT}")
+   endif (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
 else()
-  include(torqueEveryEngine.cmake)
-endif(APPLE)
+	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(MSVC)
+    # Match projectGenerator naming for executables
+    set(OUTPUT_CONFIG DEBUG MINSIZEREL RELWITHDEBINFO)
+    set(OUTPUT_SUFFIX DEBUG MINSIZE    OPTIMIZEDDEBUG)
+    foreach(INDEX RANGE 2)
+        list(GET OUTPUT_CONFIG ${INDEX} CONF)
+        list(GET OUTPUT_SUFFIX ${INDEX} SUFFIX)
+        set_property(TARGET ${TORQUE_APP_NAME} PROPERTY OUTPUT_NAME_${CONF} ${TORQUE_APP_NAME}_${SUFFIX})
+        if (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
+            set_property(TARGET TorqueEngine PROPERTY ${CONF}_POSTFIX "_${SUFFIX}")
+            set_property(TARGET TorqueEngine PROPERTY ${CONF}_OUTPUT_NAME ${TORQUE_APP_NAME})
+        endif (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
+    endforeach()
+    # Set Visual Studio startup project
+    set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${TORQUE_APP_NAME})
+endif()
+
+set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+foreach (TORQUE_LIBRARY ${TORQUE_LINK_LIBRARIES})
+  set_target_properties(${TORQUE_LIBRARY} PROPERTIES
+  FOLDER "Libraries")
+endforeach()
+
+target_compile_definitions(${TORQUE_APP_NAME} PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(${TORQUE_APP_NAME} ${TORQUE_LINK_LIBRARIES})
+
+if(APPLE)
+  target_link_libraries(${TORQUE_APP_NAME} ${TORQUE_LINK_FRAMEWORKS})
+endif(APPLE)
+
+if(WIN32)
+  target_link_libraries(${TORQUE_APP_NAME} ${TORQUE_LINK_WINDOWS})
+endif(WIN32)
+
+if(UNIX AND NOT APPLE)
+  target_link_libraries(${TORQUE_APP_NAME} ${TORQUE_LINK_LINUX})
+endif(UNIX AND NOT APPLE)
+
+target_link_options(${TORQUE_APP_NAME} PUBLIC ${TORQUE_LINK_OPTIONS})
+if (TORQUE_TARGET_PROPERTIES)
+   set_target_properties(${TORQUE_APP_NAME} PROPERTIES ${TORQUE_TARGET_PROPERTIES})
+endif (TORQUE_TARGET_PROPERTIES)
+target_include_directories(${TORQUE_APP_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp" ${TORQUE_INCLUDE_DIRECTORIES})
+
+if(TORQUE_TESTING)
+  if(WIN32)
+        target_link_options(${TORQUE_APP_NAME} PRIVATE "/SUBSYSTEM:CONSOLE")
+        set_target_properties(gtest PROPERTIES COMPILE_FLAGS "/Zc:wchar_t-")
+        set_target_properties(gmock PROPERTIES COMPILE_FLAGS "/Zc:wchar_t-")
+    endif()
+endif(TORQUE_TESTING)
+
+append_defs()
+
+# Process library binaries - these are coming from modules that are providing links to external, precompiled code that should be included
+# with the executable. This is done because on Windows, the .lib is separate from the .dll so we can't automatically scan for shared
+# objects in our link libraries in that case.
+foreach (LIBRARY_BINARY ${TORQUE_ADDITIONAL_LIBRARY_BINARIES})
+  if (APPLE)
+    # For OSX, we want these binaries to be copied to the Frameworks directory
+    add_custom_command(TARGET ${TORQUE_APP_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${LIBRARY_BINARY} "${TORQUE_APP_GAME_DIRECTORY}/${TORQUE_APP_NAME}.app/Contents/Frameworks/$(CONFIGURATION)")
+  else()
+    # All other platforms expect the file next to the executable
+    add_custom_command(TARGET ${TORQUE_APP_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${LIBRARY_BINARY} "${TORQUE_APP_GAME_DIRECTORY}")
+  endif (APPLE)
+endforeach()
+
+# 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
+# our game directory.
+if (UNIX)
+	get_target_property(GAME_LINK_LIBRARIES ${TORQUE_APP_NAME} LINK_LIBRARIES)
+	foreach (GAME_LINK_LIBRARY ${GAME_LINK_LIBRARIES})
+	  # For eg. OSX some links are not valid targets - for example frameworks provided by OS
+	  if (TARGET ${GAME_LINK_LIBRARY})
+		  get_target_property(LINK_LIBRARY_TYPE ${GAME_LINK_LIBRARY} TYPE)
+		  # 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 
+          XCODE_ATTRIBUTE_INSTALL_PATH "@rpath")
+        else()
+          set_target_properties(${GAME_LINK_LIBRARY} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${TORQUE_APP_GAME_DIRECTORY}")
+        endif(APPLE)
+		  endif()
+	  endif()
+	endforeach()
+endif (UNIX)

+ 0 - 465
Engine/source/torqueEveryEngine.cmake

@@ -1,465 +0,0 @@
-# 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 WIN32)
-endif (WIN32)
-
-set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} __linux__)
-endif (APPLE)
-
-################# Set Engine Linkages ###################
-
-# When on Windows, we need to link against winsock and windows codecs
-if (WIN32)
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_WIN_SOURCES})
-endif (WIN32)
-
-# Linux requires X11 & freetype
-if (UNIX AND NOT APPLE)
-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})
-endif (UNIX AND NOT APPLE)
-
-################# Collect Source Files ###################
-
-# Handle app
-torqueAddSourceDirectories("app" "app/net")
-
-# Handle console
-torqueAddSourceDirectories("console")
-torqueAddSourceDirectories("console/torquescript")
-
-# Handle Platform
-torqueAddSourceDirectories("platform" "platform/threads" "platform/async"
-                                "platform/input" "platform/output")
-
-torqueAddSourceDirectories("platform/nativeDialogs")
-# Handle T3D
-torqueAddSourceDirectories("T3D/fps" "T3D/fx" "T3D/vehicles" "T3D/physics"
-                            "T3D/decal" "T3D/sfx" "T3D/gameBase" "T3D/turret"
-                            "T3D/lighting" "T3D/gameOBjects" "T3D/components"
-                            "T3D/systems" "T3D/assets" "T3D" "T3D/gameBase/std")
-
-# Handle TS
-torqueAddSourceDirectories("ts" "ts/collada" "ts/assimp" "ts/loader" "ts/arch")
-
-# Handle SFX - OpenAL is handled as a module later on
-torqueAddSourceDirectories("sfx" "sfx/media" "sfx/null")
-if(TORQUE_SFX_OPENAL AND NOT TORQUE_DEDICATED)
-  torqueAddSourceDirectories("sfx/openal")
-  if(WIN32)
-    torqueAddSourceDirectories("sfx/openal/win32")
-  elseif(UNIX AND NOT APPLE)
-      torqueAddSourceDirectories("sfx/openal/linux")
-  elseif(APPLE)
-      torqueAddSourceDirectories("sfx/openal/mac")
-  endif()
-endif()
-# Handle GFX
-torqueAddSourceDirectories("gfx" "gfx/Null" "gfx/test" "gfx/bitmap" "gfx/bitmap/loaders"
-                          "gfx/util" "gfx/video" "gfx/sim" )
-
-if (TORQUE_OPENGL)
-torqueAddSourceDirectories("gfx/gl" "gfx/gl/sdl" "gfx/gl/tGL")
-endif (TORQUE_OPENGL)
-
-if (WIN32 AND TORQUE_D3D11)
-torqueAddSourceDirectories("gfx/D3D11")
-endif (WIN32 AND TORQUE_D3D11)
-
-# Handle core
-torqueAddSourceDirectories("core" "core/stream" "core/strings" "core/util"
-                            "core/util/journal" "core/util/zip" "core/util/compressors")
-# Handle GUI
-torqueAddSourceDirectories("gui" "gui/buttons" "gui/containers" "gui/controls" "gui/core"
-                            "gui/game" "gui/shiny" "gui/utility" "gui/3d")
-
-# Handle postFX
-torqueAddSourceDirectories("postFx")
-
-# Handle Windowmanager
-torqueAddSourceDirectories("windowManager" "windowManager/torque" "windowManager/sdl")
-
-# Handle scene
-torqueAddSourceDirectories("scene" "scene/culling" "scene/zones" "scene/mixin")
-
-# Handle math
-torqueAddSourceDirectories("math" "math/util")
-
-# Handle persistence
-torqueAddSourceDirectories("persistence/taml" "persistence/taml/binary" "persistence/taml/xml")
-
-# Handle Cinterface
-torqueAddSourceDirectories("cinterface")
-
-# Handle util
-torqueAddSourceDirectories("util" "util/messaging")
-
-# Handle assets
-torqueAddSourceDirectories("assets")
-
-# Handle Sim
-torqueAddSourceDirectories("sim")
-
-# Handle module
-torqueAddSourceDirectories("module")
-
-# Handle forest
-torqueAddSourceDirectories("forest" "forest/ts")
-if(TORQUE_OPENGL)
-torqueAddSourceDirectories("forest" "forest/glsl")
-endif(TORQUE_OPENGL)
-if(TORQUE_D3D11)
-torqueAddSourceDirectories("forest" "forest/hlsl")
-endif(TORQUE_D3D11)
-
-# Handle shadergen
-torqueAddSourceDirectories("shaderGen")
-
-if (WIN32 AND TORQUE_D3D11)
-torqueAddSourceDirectories("shaderGen/HLSL")
-endif (WIN32 AND TORQUE_D3D11)
-
-if (TORQUE_OPENGL)
-torqueAddSourceDirectories("shaderGen/GLSL")
-endif (TORQUE_OPENGL)
-
-# Handle terrain
-torqueAddSourceDirectories("terrain")
-
-if (WIN32 AND TORQUE_D3D11)
-torqueAddSourceDirectories("terrain/hlsl")
-endif (WIN32 AND TORQUE_D3D11)
-
-if (TORQUE_OPENGL)
-torqueAddSourceDirectories("terrain/glsl")
-endif (TORQUE_OPENGL)
-
-# Handle Materials
-torqueAddSourceDirectories("materials")
-
-# Handle collision
-torqueAddSourceDirectories("collision")
-
-# Handle lighting
-torqueAddSourceDirectories("lighting" "lighting/common"
-                                "lighting/shadowMap")
-
-if (TORQUE_ADVANCED_LIGHTING)
-torqueAddSourceDirectories("lighting/advanced")
-
-if (WIN32 AND TORQUE_D3D11)
-  torqueAddSourceDirectories("lighting/advanced/hlsl")
-endif (WIN32 AND TORQUE_D3D11)
-
-if (TORQUE_OPENGL)
-  torqueAddSourceDirectories("lighting/advanced/glsl")
-endif (TORQUE_OPENGL)
-endif (TORQUE_ADVANCED_LIGHTING)
-
-if (TORQUE_BASIC_LIGHTING)
-torqueAddSourceDirectories("lighting/basic" "lighting/basic/shadowMap")
-endif (TORQUE_BASIC_LIGHTING)
-
-# Handle environment
-torqueAddSourceDirectories("environment")
-
-# Handle renderInstance
-torqueAddSourceDirectories("renderInstance")
-
-# Handle i18n
-torqueAddSourceDirectories("i18n")
-
-# Begin handling platform specific stuff
-# Handle Platform POSIX
-if (UNIX)
-torqueAddSourceDirectories("platformPOSIX")
-
-if(NOT APPLE)
-  if (TORQUE_CPU_X32 OR TORQUE_CPU_X64)
-    torqueAddSourceDirectories("platformX86UNIX")
-  endif (TORQUE_CPU_X32 OR TORQUE_CPU_X64)
-endif(NOT APPLE)
-endif (UNIX)
-
-# Handle platformMac
-if (APPLE)
-torqueAddSourceDirectories("platformMac")
-endif (APPLE)
-
-# Handle platformWin32
-if (WIN32)
-torqueAddSourceDirectories("platformWin32" "platformWin32/videoInfo")
-endif (WIN32)
-
-# Handle platformSDL
-torqueAddSourceDirectories("platformSDL" "platformSDL/threads")
-
-# Handle platformX11
-if (UNIX AND NOT APPLE)
-torqueAddSourceDirectories("platformX11")
-endif (UNIX AND NOT APPLE)
-
-if(TORQUE_TESTING)
-torqueAddSourceDirectories("testing")
-set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_SHARED SDL_MAIN_HANDLED)
-endif(TORQUE_TESTING)
-
-# Add the collected files to our engine group
-source_group(TREE "${CMAKE_SOURCE_DIR}/Engine/source" PREFIX "Engine" FILES ${TORQUE_SOURCE_FILES})
-file(GLOB_RECURSE TORQUE_APP_GAME_SOURCES "${TORQUE_APP_ROOT_DIRECTORY}/source/*.cpp" "${TORQUE_APP_ROOT_DIRECTORY}/source/*.h")
-source_group(TREE "${TORQUE_APP_ROOT_DIRECTORY}/source" PREFIX "Source Files" FILES ${TORQUE_APP_GAME_SOURCES})
-set(TORQUE_INCLUDE_DIRECTORIES ${TORQUE_INCLUDE_DIRECTORIES} "${TORQUE_APP_ROOT_DIRECTORY}/source")
-
-################# Engine Module Handling ###################
-
-set(TORQUE_MODULE_PATHS "${CMAKE_SOURCE_DIR}/Tools/CMake/modules" "${TORQUE_APP_GAME_DIRECTORY}/data")
-if (NOT "${TORQUE_MODULE_USER_PATH}" STREQUAL "")
-list(APPEND TORQUE_MODULE_PATHS "${TORQUE_MODULE_USER_PATH}")
-endif()
-
-# Before doing module scanning, store away the engine sources - we do this so that modules
-# can be placed into the proper filters
-set(TORQUE_SOURCE_FILES_TEMPORARY ${TORQUE_SOURCE_FILES} ${TORQUE_APP_GAME_SOURCES})
-set(TORQUE_SOURCE_FILES "")
-
-foreach (TORQUE_MODULE_PATH ${TORQUE_MODULE_PATHS})
-# First find simple cmake scripts, mostly used for in-engine modules
-file(GLOB MODULE_SCRIPTS "${TORQUE_MODULE_PATH}/*.cmake")
-foreach (TORQUE_MODULE_SCRIPT ${MODULE_SCRIPTS})
-  include(${TORQUE_MODULE_SCRIPT})
-
-      # Add this script's collected files to our Engine group
-      source_group(TREE "${CMAKE_SOURCE_DIR}/Engine" PREFIX "Engine" FILES ${TORQUE_SOURCE_FILES})
-
-      set(TORQUE_SOURCE_FILES_TEMPORARY ${TORQUE_SOURCE_FILES_TEMPORARY} ${TORQUE_SOURCE_FILES})
-      set(TORQUE_SOURCE_FILES "")
-endforeach()
-
-# Next find sub projects, these can introduce new source files
-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)
-          source_group(TREE "${POSSIBLE_PROJECT_ABSOLUTEPATH}" PREFIX "Modules/${POSSIBLE_PROJECT}" FILES ${TORQUE_SOURCE_FILES})
-
-          set(TORQUE_SOURCE_FILES_TEMPORARY ${TORQUE_SOURCE_FILES_TEMPORARY} ${TORQUE_SOURCE_FILES})
-          set(TORQUE_SOURCE_FILES "")
-      elseif(NOT EXISTS "${POSSIBLE_PROJECT_ABSOLUTEPATH}/*.cmake")
-          file(GLOB_RECURSE MODULE_SOURCE "${POSSIBLE_PROJECT_ABSOLUTEPATH}/source/*.h" "${POSSIBLE_PROJECT_ABSOLUTEPATH}/source/*.cpp")
-          #message(STATUS "MODULE_SOURCE:${MODULE_SOURCE}")
-          source_group(TREE "${POSSIBLE_PROJECT_ABSOLUTEPATH}" PREFIX "Modules/${POSSIBLE_PROJECT}/" FILES ${MODULE_SOURCE})
-          set(TORQUE_SOURCE_FILES_TEMPORARY ${TORQUE_SOURCE_FILES_TEMPORARY} ${MODULE_SOURCE})
-  endif()
-endforeach()
-endforeach()
-
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES_TEMPORARY})
-
-################# Library Post-build Handling ###################
-set(TORQUE_LIBRARY_PATHS "${CMAKE_SOURCE_DIR}/Engine/lib" "${TORQUE_APP_GAME_DIRECTORY}/data")
-if (NOT "${TORQUE_LIBRARY_USER_PATH}" STREQUAL "")
-list(APPEND TORQUE_LIBRARY_PATHS "${TORQUE_LIBRARY_USER_PATH}")
-endif()
-
-foreach (TORQUE_LIBRARY_PATH ${TORQUE_LIBRARY_PATHS})
-# First find simple cmake scripts, mostly used for in-engine libraries
-file(GLOB_RECURSE LIBRARY_SCRIPTS "${TORQUE_LIBRARY_PATH}/*Torque_postBuild.cmake")
-  #message(STATUS "LIBRARY_SCRIPTS:${LIBRARY_SCRIPTS}")
-foreach (TORQUE_LIBRARY_SCRIPT ${LIBRARY_SCRIPTS})
-  include(${TORQUE_LIBRARY_SCRIPT})
-endforeach()
-endforeach()
-################# 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" "${TORQUE_APP_ROOT_DIRECTORY}/source/torque.rc")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} "${TORQUE_APP_ROOT_DIRECTORY}/source/torque.rc")
-endif (WIN32)
-
-# Prepare OSX Plist
-if (APPLE)
-set(MACOSX_RESOURCES "${CMAKE_SOURCE_DIR}/Tools/CMake/torque.icns" 
-"${TORQUE_APP_GAME_DIRECTORY}/data"
-"${TORQUE_APP_GAME_DIRECTORY}/core"
-"${TORQUE_APP_GAME_DIRECTORY}/tools"
-"${TORQUE_APP_GAME_DIRECTORY}/main.${TORQUE_SCRIPT_EXTENSION}")
-
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_MAC_SOURCES} ${MACOSX_RESOURCES})
-
-source_group("Resources" FILES ${MACOSX_RESOURCES})
-
-set_source_files_properties(${MACOSX_RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
-
-set(EXECUTABLE_NAME "${TORQUE_APP_NAME}")
-configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/Info.plist.in" "${TORQUE_APP_ROOT_DIRECTORY}/source/Info.plist" COPYONLY)
-endif (APPLE)
-
-addDef(TORQUE_DEBUG Debug)
-addDef(TORQUE_RELEASE "RelWithDebInfo;Release")
-addDef(TORQUE_ENABLE_ASSERTS "Debug;RelWithDebInfo")
-addDef(TORQUE_DEBUG_GFX_MODE "RelWithDebInfo")
-addDef(TORQUE_OGGVORBIS)
-
-if(NOT TORQUE_SDL)
-filterOut("platform/nativeDialogs/fileDialog.cpp" )
-endif()
-if(NOT TORQUE_OPENGL)
-filterOut("platformSDL/sdlPlatformGL.cpp")
-endif()
-if (NOT TORQUE_NET_CURL)
-filterOut("app/net/httpObject.h" "app/net/httpObject.cpp")
-endif()
-
-################# Executable Generation ###################
-if (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
-set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_SHARED)
-
-# Build the main engine library
-add_library(TorqueEngine SHARED ${TORQUE_SOURCE_FILES})
-target_compile_definitions(TorqueEngine PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
-target_link_libraries(TorqueEngine ${TORQUE_LINK_LIBRARIES})
-target_include_directories(TorqueEngine PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp" ${TORQUE_INCLUDE_DIRECTORIES})
-
-set(TORQUE_SOURCE_FILES "main/main.cpp")
-set(TORQUE_LINK_LIBRARIES TorqueEngine)
-else()
-if(NOT TORQUE_TESTING)
-  set(TORQUE_SOURCE_FILES "main/main.cpp" ${TORQUE_SOURCE_FILES})
-endif()
-endif (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
-
-if (APPLE)
-add_executable(${TORQUE_APP_NAME} MACOSX_BUNDLE ${TORQUE_SOURCE_FILES})
-set_target_properties(${TORQUE_APP_NAME} PROPERTIES 
-BUNDLE true
-MACOSX_BUNDLE_INFO_PLIST "${TORQUE_APP_ROOT_DIRECTORY}/source/Info.plist"
-XCODE_ATTRIBUTE_INSTALL_PATH "/Applications"
-XCODE_ATTRIBUTE_SKIP_INSTALL "No"
-MACOSX_RPATH TRUE)
-
-elseif (WIN32)
-add_executable(${TORQUE_APP_NAME} WIN32 ${TORQUE_SOURCE_FILES})
-
-  set(TORQUE_CXX_FLAGS_COMMON_DEFAULT "-DUNICODE -D_UNICODE -D_CRT_SECURE_NO_WARNINGS /MP /Ob2 /Oi /Ot /Oy /GT /Zi /W4 /nologo /GF /EHsc /GS- /Gy- /Qpar- /fp:precise /fp:except- /GR /Zc:wchar_t-" )
-  if( TORQUE_CPU_X32 )
-    set(TORQUE_CXX_FLAGS_COMMON_DEFAULT "${TORQUE_CXX_FLAGS_COMMON_DEFAULT} /arch:SSE2")
-  endif()
-  set(TORQUE_CXX_FLAGS_COMMON ${TORQUE_CXX_FLAGS_COMMON_DEFAULT} CACHE STRING "")
-  mark_as_advanced(TORQUE_CXX_FLAGS_COMMON)
-
-  set(TORQUE_CXX_FLAGS_EXECUTABLES "/wd4018 /wd4100 /wd4121 /wd4127 /wd4130 /wd4244 /wd4245 /wd4389 /wd4511 /wd4512 /wd4800 /wd4995" CACHE STRING "")
-  mark_as_advanced(TORQUE_CXX_FLAGS_EXECUTABLES)
-
-  set(TORQUE_CXX_FLAGS "${TORQUE_CXX_FLAGS_COMMON_DEFAULT} ${TORQUE_CXX_FLAGS_EXECUTABLES}" CACHE STRING "")
-  mark_as_advanced(TORQUE_CXX_FLAGS)
-
-# NOTE: On Windows, /Zc:wchar_t- is necessary otherwise you get unicode errors
-set_target_properties(${TORQUE_APP_NAME} PROPERTIES COMPILE_FLAGS "${TORQUE_CXX_FLAGS}")
-if (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
-    set_target_properties(TorqueEngine PROPERTIES COMPILE_FLAGS "${TORQUE_CXX_FLAGS_COMMON_DEFAULT}")
-endif (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
-else()
-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(MSVC)
-  # Match projectGenerator naming for executables
-  set(OUTPUT_CONFIG DEBUG MINSIZEREL RELWITHDEBINFO)
-  set(OUTPUT_SUFFIX DEBUG MINSIZE    OPTIMIZEDDEBUG)
-  foreach(INDEX RANGE 2)
-      list(GET OUTPUT_CONFIG ${INDEX} CONF)
-      list(GET OUTPUT_SUFFIX ${INDEX} SUFFIX)
-      set_property(TARGET ${TORQUE_APP_NAME} PROPERTY OUTPUT_NAME_${CONF} ${TORQUE_APP_NAME}_${SUFFIX})
-      if (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
-          set_property(TARGET TorqueEngine PROPERTY ${CONF}_POSTFIX "_${SUFFIX}")
-          set_property(TARGET TorqueEngine PROPERTY ${CONF}_OUTPUT_NAME ${TORQUE_APP_NAME})
-      endif (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING)
-  endforeach()
-  # Set Visual Studio startup project
-  set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${TORQUE_APP_NAME})
-endif()
-
-set_property(GLOBAL PROPERTY USE_FOLDERS ON)
-foreach (TORQUE_LIBRARY ${TORQUE_LINK_LIBRARIES})
-set_target_properties(${TORQUE_LIBRARY} PROPERTIES
-FOLDER "Libraries")
-endforeach()
-
-target_compile_definitions(${TORQUE_APP_NAME} PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
-target_link_libraries(${TORQUE_APP_NAME} ${TORQUE_LINK_LIBRARIES})
-
-if(APPLE)
-target_link_libraries(${TORQUE_APP_NAME} ${TORQUE_LINK_FRAMEWORKS})
-endif(APPLE)
-
-if(WIN32)
-target_link_libraries(${TORQUE_APP_NAME} ${TORQUE_LINK_WINDOWS})
-endif(WIN32)
-
-if(UNIX AND NOT APPLE)
-target_link_libraries(${TORQUE_APP_NAME} ${TORQUE_LINK_LINUX})
-endif(UNIX AND NOT APPLE)
-
-target_link_options(${TORQUE_APP_NAME} PUBLIC ${TORQUE_LINK_OPTIONS})
-if (TORQUE_TARGET_PROPERTIES)
-set_target_properties(${TORQUE_APP_NAME} PROPERTIES ${TORQUE_TARGET_PROPERTIES})
-endif (TORQUE_TARGET_PROPERTIES)
-target_include_directories(${TORQUE_APP_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp" ${TORQUE_INCLUDE_DIRECTORIES})
-
-if(TORQUE_TESTING)
-if(WIN32)
-      target_link_options(${TORQUE_APP_NAME} PRIVATE "/SUBSYSTEM:CONSOLE")
-      set_target_properties(gtest PROPERTIES COMPILE_FLAGS "/Zc:wchar_t-")
-      set_target_properties(gmock PROPERTIES COMPILE_FLAGS "/Zc:wchar_t-")
-  endif()
-endif(TORQUE_TESTING)
-
-append_defs()
-
-# Process library binaries - these are coming from modules that are providing links to external, precompiled code that should be included
-# with the executable. This is done because on Windows, the .lib is separate from the .dll so we can't automatically scan for shared
-# objects in our link libraries in that case.
-foreach (LIBRARY_BINARY ${TORQUE_ADDITIONAL_LIBRARY_BINARIES})
-if (APPLE)
-  # For OSX, we want these binaries to be copied to the Frameworks directory
-  add_custom_command(TARGET ${TORQUE_APP_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${LIBRARY_BINARY} "${TORQUE_APP_GAME_DIRECTORY}/${TORQUE_APP_NAME}.app/Contents/Frameworks/$(CONFIGURATION)")
-else()
-  # All other platforms expect the file next to the executable
-  add_custom_command(TARGET ${TORQUE_APP_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${LIBRARY_BINARY} "${TORQUE_APP_GAME_DIRECTORY}")
-endif (APPLE)
-endforeach()
-
-# 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
-# our game directory.
-if (UNIX)
-get_target_property(GAME_LINK_LIBRARIES ${TORQUE_APP_NAME} LINK_LIBRARIES)
-foreach (GAME_LINK_LIBRARY ${GAME_LINK_LIBRARIES})
-  # For eg. OSX some links are not valid targets - for example frameworks provided by OS
-  if (TARGET ${GAME_LINK_LIBRARY})
-    get_target_property(LINK_LIBRARY_TYPE ${GAME_LINK_LIBRARY} TYPE)
-    # 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 
-        XCODE_ATTRIBUTE_INSTALL_PATH "@rpath")
-      else()
-        set_target_properties(${GAME_LINK_LIBRARY} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${TORQUE_APP_GAME_DIRECTORY}")
-      endif(APPLE)
-    endif()
-  endif()
-endforeach()
-endif (UNIX)

+ 0 - 283
Engine/source/torqueMacosEngine.cmake

@@ -1,283 +0,0 @@
-
-set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} __MACOSX__)
-
-################# Collect Source Files ###################
-
-# Handle app
-torqueAddSourceDirectories("app" "app/net")
-
-# Handle console
-torqueAddSourceDirectories("console")
-torqueAddSourceDirectories("console/torquescript")
-
-# Handle Platform
-torqueAddSourceDirectories("platform" "platform/threads" "platform/async"
-                                  "platform/input" "platform/output")
-
-torqueAddSourceDirectories("platform/nativeDialogs")
-# Handle T3D
-torqueAddSourceDirectories("T3D/fps" "T3D/fx" "T3D/vehicles" "T3D/physics"
-                              "T3D/decal" "T3D/sfx" "T3D/gameBase" "T3D/turret"
-                              "T3D/lighting" "T3D/gameOBjects" "T3D/components"
-                              "T3D/systems" "T3D/assets" "T3D" "T3D/gameBase/std")
-
-# Handle TS
-torqueAddSourceDirectories("ts" "ts/collada" "ts/assimp" "ts/loader" "ts/arch")
-
-# Handle SFX - OpenAL is handled as a module later on
-torqueAddSourceDirectories("sfx" "sfx/media" "sfx/null")
-if(TORQUE_SFX_OPENAL AND NOT TORQUE_DEDICATED)
-    torqueAddSourceDirectories("sfx/openal")
-    torqueAddSourceDirectories("sfx/openal/mac")
-endif()
-
-# Handle GFX
-torqueAddSourceDirectories("gfx" "gfx/Null" "gfx/test" "gfx/bitmap" "gfx/bitmap/loaders"
-                             "gfx/util" "gfx/video" "gfx/sim" )
-
-if (TORQUE_OPENGL)
-  torqueAddSourceDirectories("gfx/gl" "gfx/gl/sdl" "gfx/gl/tGL")
-endif (TORQUE_OPENGL)
-
-# Handle core
-torqueAddSourceDirectories("core" "core/stream" "core/strings" "core/util"
-                              "core/util/journal" "core/util/zip" "core/util/compressors")
-# Handle GUI
-torqueAddSourceDirectories("gui" "gui/buttons" "gui/containers" "gui/controls" "gui/core"
-                              "gui/game" "gui/shiny" "gui/utility" "gui/3d")
-
-# Handle postFX
-torqueAddSourceDirectories("postFx")
-
-# Handle Windowmanager
-torqueAddSourceDirectories("windowManager" "windowManager/torque" "windowManager/sdl")
-
-# Handle scene
-torqueAddSourceDirectories("scene" "scene/culling" "scene/zones" "scene/mixin")
-
-# Handle math
-torqueAddSourceDirectories("math" "math/util")
-
-# Handle persistence
-torqueAddSourceDirectories("persistence/taml" "persistence/taml/binary" "persistence/taml/xml")
-
-# Handle Cinterface
-torqueAddSourceDirectories("cinterface")
-
-# Handle util
-torqueAddSourceDirectories("util" "util/messaging")
-
-# Handle assets
-torqueAddSourceDirectories("assets")
-
-# Handle Sim
-torqueAddSourceDirectories("sim")
-
-# Handle module
-torqueAddSourceDirectories("module")
-
-# Handle forest
-torqueAddSourceDirectories("forest" "forest/ts")
-if(TORQUE_OPENGL)
-  torqueAddSourceDirectories("forest" "forest/glsl")
-endif(TORQUE_OPENGL)
-
-# Handle shadergen
-torqueAddSourceDirectories("shaderGen")
-
-if (TORQUE_OPENGL)
-  torqueAddSourceDirectories("shaderGen/GLSL")
-endif (TORQUE_OPENGL)
-
-# Handle terrain
-torqueAddSourceDirectories("terrain")
-
-if (TORQUE_OPENGL)
-  torqueAddSourceDirectories("terrain/glsl")
-endif (TORQUE_OPENGL)
-
-# Handle Materials
-torqueAddSourceDirectories("materials")
-
-# Handle collision
-torqueAddSourceDirectories("collision")
-
-# Handle lighting
-torqueAddSourceDirectories("lighting" "lighting/common"
-                                   "lighting/shadowMap")
-
-if (TORQUE_ADVANCED_LIGHTING)
-    torqueAddSourceDirectories("lighting/advanced")
-	if (TORQUE_OPENGL)
-        torqueAddSourceDirectories("lighting/advanced/glsl")
-	endif (TORQUE_OPENGL)
-endif (TORQUE_ADVANCED_LIGHTING)
-
-if (TORQUE_BASIC_LIGHTING)
-  torqueAddSourceDirectories("lighting/basic" "lighting/basic/shadowMap")
-endif (TORQUE_BASIC_LIGHTING)
-
-# Handle environment
-torqueAddSourceDirectories("environment")
-
-# Handle renderInstance
-torqueAddSourceDirectories("renderInstance")
-
-# Handle i18n
-torqueAddSourceDirectories("i18n")
-
-# Handle posix
-torqueAddSourceDirectories("platformPOSIX")
-torqueAddSourceDirectories("platformMac")
-
-# Handle platformSDL
-torqueAddSourceDirectories("platformSDL" "platformSDL/threads")
-
-if(TORQUE_TESTING)
-  torqueAddSourceDirectories("testing")
-  set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_SHARED SDL_MAIN_HANDLED)
-endif(TORQUE_TESTING)
-
-# Add the collected files to our engine group
-source_group(TREE "${CMAKE_SOURCE_DIR}/Engine/source" PREFIX "Engine" FILES ${TORQUE_SOURCE_FILES})
-file(GLOB_RECURSE TORQUE_APP_GAME_SOURCES "${TORQUE_APP_ROOT_DIRECTORY}/source/*.cpp" "${TORQUE_APP_ROOT_DIRECTORY}/source/*.h")
-source_group(TREE "${TORQUE_APP_ROOT_DIRECTORY}/source" PREFIX "Source Files" FILES ${TORQUE_APP_GAME_SOURCES})
-set(TORQUE_INCLUDE_DIRECTORIES ${TORQUE_INCLUDE_DIRECTORIES} "${TORQUE_APP_ROOT_DIRECTORY}/source")
-
-################# Engine Module Handling ###################
-
-set(TORQUE_MODULE_PATHS "${CMAKE_SOURCE_DIR}/Tools/CMake/modules" "${TORQUE_APP_GAME_DIRECTORY}/data")
-if (NOT "${TORQUE_MODULE_USER_PATH}" STREQUAL "")
-	list(APPEND TORQUE_MODULE_PATHS "${TORQUE_MODULE_USER_PATH}")
-endif()
-
-# Before doing module scanning, store away the engine sources - we do this so that modules
-# can be placed into the proper filters
-set(TORQUE_SOURCE_FILES_TEMPORARY ${TORQUE_SOURCE_FILES} ${TORQUE_APP_GAME_SOURCES})
-set(TORQUE_SOURCE_FILES "")
-
-foreach (TORQUE_MODULE_PATH ${TORQUE_MODULE_PATHS})
-	# First find simple cmake scripts, mostly used for in-engine modules
-	file(GLOB MODULE_SCRIPTS "${TORQUE_MODULE_PATH}/*.cmake")
-	foreach (TORQUE_MODULE_SCRIPT ${MODULE_SCRIPTS})
-		include(${TORQUE_MODULE_SCRIPT})
-
-        # Add this script's collected files to our Engine group
-        source_group(TREE "${CMAKE_SOURCE_DIR}/Engine" PREFIX "Engine" FILES ${TORQUE_SOURCE_FILES})
-
-        set(TORQUE_SOURCE_FILES_TEMPORARY ${TORQUE_SOURCE_FILES_TEMPORARY} ${TORQUE_SOURCE_FILES})
-        set(TORQUE_SOURCE_FILES "")
-	endforeach()
-
-	# Next find sub projects, these can introduce new source files
-	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)
-            source_group(TREE "${POSSIBLE_PROJECT_ABSOLUTEPATH}" PREFIX "Modules/${POSSIBLE_PROJECT}" FILES ${TORQUE_SOURCE_FILES})
-
-            set(TORQUE_SOURCE_FILES_TEMPORARY ${TORQUE_SOURCE_FILES_TEMPORARY} ${TORQUE_SOURCE_FILES})
-            set(TORQUE_SOURCE_FILES "")
-        elseif(NOT EXISTS "${POSSIBLE_PROJECT_ABSOLUTEPATH}/*.cmake")
-            file(GLOB_RECURSE MODULE_SOURCE "${POSSIBLE_PROJECT_ABSOLUTEPATH}/source/*.h" "${POSSIBLE_PROJECT_ABSOLUTEPATH}/source/*.cpp")
-            #message(STATUS "MODULE_SOURCE:${MODULE_SOURCE}")
-            source_group(TREE "${POSSIBLE_PROJECT_ABSOLUTEPATH}" PREFIX "Modules/${POSSIBLE_PROJECT}/" FILES ${MODULE_SOURCE})
-            set(TORQUE_SOURCE_FILES_TEMPORARY ${TORQUE_SOURCE_FILES_TEMPORARY} ${MODULE_SOURCE})
-		endif()
-	endforeach()
-endforeach()
-
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES_TEMPORARY})
-
-################# Library Post-build Handling ###################
-set(TORQUE_LIBRARY_PATHS "${CMAKE_SOURCE_DIR}/Engine/lib" "${TORQUE_APP_GAME_DIRECTORY}/data")
-if (NOT "${TORQUE_LIBRARY_USER_PATH}" STREQUAL "")
-	list(APPEND TORQUE_LIBRARY_PATHS "${TORQUE_LIBRARY_USER_PATH}")
-endif()
-
-foreach (TORQUE_LIBRARY_PATH ${TORQUE_LIBRARY_PATHS})
-	# First find simple cmake scripts, mostly used for in-engine libraries
-	file(GLOB_RECURSE LIBRARY_SCRIPTS "${TORQUE_LIBRARY_PATH}/*Torque_postBuild.cmake")
-    #message(STATUS "LIBRARY_SCRIPTS:${LIBRARY_SCRIPTS}")
-	foreach (TORQUE_LIBRARY_SCRIPT ${LIBRARY_SCRIPTS})
-		include(${TORQUE_LIBRARY_SCRIPT})
-	endforeach()
-endforeach()
-################# Dynamic File Configuration ###################
-
-set(MACOSX_RESOURCES "${CMAKE_SOURCE_DIR}/Tools/CMake/torque.icns" 
-        "${TORQUE_APP_GAME_DIRECTORY}/data"
-        "${TORQUE_APP_GAME_DIRECTORY}/core"
-        "${TORQUE_APP_GAME_DIRECTORY}/tools"
-        "${TORQUE_APP_GAME_DIRECTORY}/main.${TORQUE_SCRIPT_EXTENSION}")
-
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_MAC_SOURCES} ${MACOSX_RESOURCES})
-
-source_group("Resources" FILES ${MACOSX_RESOURCES})
-
-set_source_files_properties(${MACOSX_RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
-
-set(EXECUTABLE_NAME "${TORQUE_APP_NAME}")
-configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/Info.plist.in" "${TORQUE_APP_ROOT_DIRECTORY}/source/Info.plist" COPYONLY)
-
-addDef(TORQUE_DEBUG Debug)
-addDef(TORQUE_RELEASE "RelWithDebInfo;Release")
-addDef(TORQUE_ENABLE_ASSERTS "Debug;RelWithDebInfo")
-addDef(TORQUE_DEBUG_GFX_MODE "RelWithDebInfo")
-addDef(TORQUE_OGGVORBIS)
-
-if(NOT TORQUE_SDL)
-   filterOut("platform/nativeDialogs/fileDialog.cpp" )
-endif()
-if(NOT TORQUE_OPENGL)
-  filterOut("platformSDL/sdlPlatformGL.cpp")
-endif()
-if (NOT TORQUE_NET_CURL)
-  filterOut("app/net/httpObject.h" "app/net/httpObject.cpp")
-endif()
-
-add_executable(${TORQUE_APP_NAME} MACOSX_BUNDLE ${TORQUE_SOURCE_FILES})
-set_target_properties(${TORQUE_APP_NAME} PROPERTIES 
-  BUNDLE true
-  MACOSX_BUNDLE_INFO_PLIST "${TORQUE_APP_ROOT_DIRECTORY}/source/Info.plist"
-  XCODE_ATTRIBUTE_INSTALL_PATH "/Applications"
-  XCODE_ATTRIBUTE_SKIP_INSTALL "No"
-  MACOSX_RPATH TRUE)
-
-  set_property(GLOBAL PROPERTY USE_FOLDERS ON)
-foreach (TORQUE_LIBRARY ${TORQUE_LINK_LIBRARIES})
-  set_target_properties(${TORQUE_LIBRARY} PROPERTIES
-  FOLDER "Libraries")
-endforeach()
-
-target_compile_definitions(${TORQUE_APP_NAME} PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
-target_link_libraries(${TORQUE_APP_NAME} ${TORQUE_LINK_LIBRARIES} ${TORQUE_LINK_FRAMEWORKS})
-
-target_link_options(${TORQUE_APP_NAME} PUBLIC ${TORQUE_LINK_OPTIONS})
-if (TORQUE_TARGET_PROPERTIES)
-   set_target_properties(${TORQUE_APP_NAME} PROPERTIES ${TORQUE_TARGET_PROPERTIES})
-endif (TORQUE_TARGET_PROPERTIES)
-target_include_directories(${TORQUE_APP_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp" ${TORQUE_INCLUDE_DIRECTORIES})
-
-append_defs()
-
-foreach (LIBRARY_BINARY ${TORQUE_ADDITIONAL_LIBRARY_BINARIES})
-    add_custom_command(TARGET ${TORQUE_APP_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${LIBRARY_BINARY} "${TORQUE_APP_GAME_DIRECTORY}/${TORQUE_APP_NAME}.app/Contents/Frameworks/$(CONFIGURATION)")
-endforeach()
-
-get_target_property(GAME_LINK_LIBRARIES ${TORQUE_APP_NAME} LINK_LIBRARIES)
-foreach (GAME_LINK_LIBRARY ${GAME_LINK_LIBRARIES})
-    if (TARGET ${GAME_LINK_LIBRARY})
-        get_target_property(LINK_LIBRARY_TYPE ${GAME_LINK_LIBRARY} TYPE)
-        # Only pay attention to shared libraries and make them output to the app resources
-        if ("${LINK_LIBRARY_TYPE}" STREQUAL "SHARED_LIBRARY")
-            set_target_properties(${GAME_LINK_LIBRARY} PROPERTIES 
-            XCODE_ATTRIBUTE_INSTALL_PATH "@rpath")
-        endif()
-    endif()
-endforeach()
-

+ 2 - 1
Tools/CMake/platformconfigs/torqueMacosxconfig.cmake → Tools/CMake/torqueMacOSconfigs.cmake

@@ -1,3 +1,4 @@
+if(APPLE)
 #detect Architecture
 enable_language(OBJC)
 enable_language(OBJCXX)
@@ -160,4 +161,4 @@ set(CMAKE_XCODE_ATTRIBUTE_LINKER_DISPLAYS_MANGLED_NAMES[variant=Debug] YES)
 set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH[variant=Debug] YES)
 set(CMAKE_XCODE_ATTRIBUTE_ENABLE_TESTABILITY[variant=Debug] YES)
 
-add_subdirectory(${TORQUE_ENGINE_DIRECTORY})
+endif(APPLE)