浏览代码

example cmake workflow

marauder2k7 1 年之前
父节点
当前提交
233c6a8045

+ 10 - 5
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,6 +28,7 @@ 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)
@@ -74,4 +75,8 @@ 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")
 
-add_subdirectory(Engine)
+if(APPLE)
+    include("${CMAKE_SOURCE_DIR}/Tools/CMake/platformconfigs/torqueMacosxconfig.cmake")
+else(APPLE)
+    add_subdirectory(Engine)
+endif(APPLE)

+ 4 - 467
Engine/source/CMakeLists.txt

@@ -18,471 +18,8 @@ set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_TESTS_ENABLE
 set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} "_VARIADIC_MAX=10")
 endif()
 
-# 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()
-	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)
+  include(torqueMacosEngine.cmake)
+else()
+  include(torqueEveryEngine.cmake)
+endif(APPLE)

+ 465 - 0
Engine/source/torqueEveryEngine.cmake

@@ -0,0 +1,465 @@
+# 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)

+ 283 - 0
Engine/source/torqueMacosEngine.cmake

@@ -0,0 +1,283 @@
+
+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()
+

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

@@ -1,4 +1,3 @@
-if(APPLE)
 #detect Architecture
 enable_language(OBJC)
 enable_language(OBJCXX)
@@ -161,4 +160,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)
 
-endif(APPLE)
+add_subdirectory(${TORQUE_ENGINE_DIRECTORY})