Browse Source

* BugFix: Allow header files to appear in the filters through use of a helper function torqueAddSourceDirectories.

Robert MacGregor 3 years ago
parent
commit
3d963d44e3

+ 3 - 0
Engine/lib/CMakeLists.txt

@@ -12,6 +12,9 @@ set(ASSIMP_BUILD_ZLIB off CACHE STRING "")
 set(ASSIMP_HUNTER_ENABLED off CACHE STRING "")
 set(ASSIMP_HUNTER_ENABLED off CACHE STRING "")
 add_subdirectory(assimp ${CMAKE_BINARY_DIR}/temp/assimp EXCLUDE_FROM_ALL)
 add_subdirectory(assimp ${CMAKE_BINARY_DIR}/temp/assimp EXCLUDE_FROM_ALL)
 
 
+if (TORQUE_CPU_ARM32 OR TORQUE_CPU_ARM64)
+	set(PNG_ARM_NEON on CACHE BOOL "" FORCE)
+endif (TORQUE_CPU_ARM32 OR TORQUE_CPU_ARM64)
 set(PNG_STATIC on CACHE BOOL "" FORCE)
 set(PNG_STATIC on CACHE BOOL "" FORCE)
 set(PNG_BUILD_ZLIB on CACHE BOOL "" FORCE)
 set(PNG_BUILD_ZLIB on CACHE BOOL "" FORCE)
 set(PNG_TESTS off CACHE BOOL "" FORCE)
 set(PNG_TESTS off CACHE BOOL "" FORCE)

+ 99 - 129
Engine/source/CMakeLists.txt

@@ -24,6 +24,25 @@ set(TORQUE_COMPILE_DEFINITIONS ICE_NO_DLL PCRE_STATIC TORQUE_ADVANCED_LIGHTING T
 set(TORQUE_LINK_LIBRARIES tinyxml collada ljpeg squish png_static opcode assimp
 set(TORQUE_LINK_LIBRARIES tinyxml collada ljpeg squish png_static opcode assimp
                           SDL2 glad pcre convexDecomp zlib)
                           SDL2 glad pcre convexDecomp zlib)
 
 
+################# Helper Functions ###################
+
+# Helper function to add a directory to the TORQUE_SOURCE_FILES variable. It automatically searches for .cpp and .h files in the
+# specified directory then adds them to the TORQUE_SOURCE_FILES variable.
+macro (torqueAddSourceDirectories)
+  foreach(ARGUMENT ${ARGV})
+    file(GLOB SCANNED_SOURCE_FILES "${ARGUMENT}/*.cpp")
+    file(GLOB SCANNED_INCLUDE_FILES "${ARGUMENT}/*.h")
+
+    if (APPLE)
+    file(GLOB SCANNED_INCLUDE_FILES "${ARGUMENT}/*.mm")
+    endif (APPLE)
+
+    # Set in both current and parent scope so this macro can be used from loaded modules
+    set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${SCANNED_SOURCE_FILES} ${SCANNED_INCLUDE_FILES})
+    set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} PARENT_SCOPE)
+  endforeach()
+endmacro (torqueAddSourceDirectories)
+
 ################# Set Conditional Engine Defines ###################
 ################# Set Conditional Engine Defines ###################
 
 
 if (TORQUE_OPENGL)
 if (TORQUE_OPENGL)
@@ -76,239 +95,170 @@ endif (UNIX AND NOT APPLE)
 
 
 ################# Collect Source Files ###################
 ################# Collect Source Files ###################
 
 
-set(TORQUE_SOURCE_FILES "main/main.cpp")
+torqueAddSourceDirectories("main")
 
 
 # Handle app
 # Handle app
-file(GLOB TORQUE_APP_SOURCES "app/*.cpp" "app/net/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_APP_SOURCES})
+torqueAddSourceDirectories("app" "app/net")
 
 
 # Handle console
 # Handle console
-file(GLOB TORQUE_CONSOLE_SOURCES "console/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_CONSOLE_SOURCES})
+torqueAddSourceDirectories("console")
 
 
 # Handle Platform
 # Handle Platform
-file(GLOB TORQUE_PLATFORM_SOURCES "platform/*.cpp" "platform/threads/*.cpp" "platform/async/*.cpp"
-                                  "platform/input/*.cpp" "platform/output/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_SOURCES})
+torqueAddSourceDirectories("platform" "platform/threads" "platform/async"
+                                  "platform/input" "platform/output")
 
 
 # Handle T3D
 # Handle T3D
-file(GLOB TORQUE_T3D_SOURCES "T3D/fps/*.cpp" "T3D/fx/*.cpp" "T3D/vehicles/*.cpp" "T3D/physics/*.cpp"
-                              "T3D/decal/*.cpp" "T3D/sfx/*.cpp" "T3D/gameBase/*.cpp" "T3D/turret/*.cpp"
-                              "T3D/lighting/*.cpp" "T3D/gameOBjects/*.cpp" "T3D/components/*.cpp"
-                              "T3D/systems/*.cpp" "T3D/assets/*.cpp" "T3D/*.cpp" "T3D/gameBase/std/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_T3D_SOURCES})
+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
 # Handle TS
-file(GLOB TORQUE_TS_SOURCES "ts/*.cpp" "ts/collada/*.cpp" "ts/assimp/*.cpp" "ts/loader/*.cpp" "ts/arch/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_TS_SOURCES})
+torqueAddSourceDirectories("ts" "ts/collada" "ts/assimp" "ts/loader" "ts/arch")
 
 
 # Handle SFX - OpenAL is handled as a module later on
 # Handle SFX - OpenAL is handled as a module later on
-file(GLOB TORQUE_SFX_SOURCES "sfx/*.cpp" "sfx/media/*.cpp" "sfx/null/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_SFX_SOURCES})
+torqueAddSourceDirectories("sfx" "sfx/media" "sfx/null")
 
 
 # Handle GFX
 # Handle GFX
-file(GLOB TORQUE_GFX_SOURCES "gfx/*.cpp" "gfx/Null/*.cpp" "gfx/test/*.cpp" "gfx/bitmap/*.cpp" "gfx/bitmap/loaders/*.cpp"
-                             "gfx/util/*.cpp" "gfx/video/*.cpp" "gfx/sim/*.cpp" )
+torqueAddSourceDirectories("gfx" "gfx/Null" "gfx/test" "gfx/bitmap" "gfx/bitmap/loaders"
+                             "gfx/util" "gfx/video" "gfx/sim" )
 
 
 if (TORQUE_OPENGL)
 if (TORQUE_OPENGL)
-	file(GLOB TORQUE_GFX_SOURCES_OPENGL "gfx/gl/*.cpp" "gfx/gl/sdl/*.cpp" "gfx/gl/tGL/*.cpp")
-	set(TORQUE_GFX_SOURCES ${TORQUE_GFX_SOURCES} ${TORQUE_GFX_SOURCES_OPENGL})
+  torqueAddSourceDirectories("gfx/gl" "gfx/gl/sdl" "gfx/gl/tGL")
 endif (TORQUE_OPENGL)
 endif (TORQUE_OPENGL)
 
 
 if (WIN32 AND TORQUE_D3D11)
 if (WIN32 AND TORQUE_D3D11)
-	file(GLOB TORQUE_GFX_SOURCES_D3D11 "gfx/D3D11/*.cpp")
-	set(TORQUE_GFX_SOURCES ${TORQUE_GFX_SOURCES} ${TORQUE_GFX_SOURCES_D3D11})
+  torqueAddSourceDirectories("gfx/D3D11")
 endif (WIN32 AND TORQUE_D3D11)
 endif (WIN32 AND TORQUE_D3D11)
 
 
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_GFX_SOURCES})
-
 # Handle core
 # Handle core
-file(GLOB TORQUE_CORE_SOURCES "core/*.cpp" "core/stream/*.cpp" "core/strings/*.cpp" "core/util/*.cpp"
-                              "core/util/journal/*.cpp" "core/util/zip/*.cpp" "core/util/compressors/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_CORE_SOURCES})
-
+torqueAddSourceDirectories("core" "core/stream" "core/strings" "core/util"
+                              "core/util/journal" "core/util/zip" "core/util/compressors")
 # Handle GUI
 # Handle GUI
-file(GLOB TORQUE_GUI_SOURCES "gui/*.cpp" "gui/buttons/*.cpp" "gui/containers/*.cpp" "gui/controls/*.cpp" "gui/core/*.cpp"
-                              "gui/game/*.cpp" "gui/shiny/*.cpp" "gui/utility/*.cpp" "gui/3d/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_GUI_SOURCES})
+torqueAddSourceDirectories("gui" "gui/buttons" "gui/containers" "gui/controls" "gui/core"
+                              "gui/game" "gui/shiny" "gui/utility" "gui/3d")
 
 
 # Handle postFX
 # Handle postFX
-file(GLOB TORQUE_POSTFX_SOURCES "postFx/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_POSTFX_SOURCES})
+torqueAddSourceDirectories("postFx")
 
 
 # Handle Windowmanager
 # Handle Windowmanager
-file(GLOB TORQUE_WINDOW_MANAGER_SOURCES "windowManager/*.cpp" "windowManager/torque/*.cpp" "windowManager/sdl/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_WINDOW_MANAGER_SOURCES})
+torqueAddSourceDirectories("windowManager" "windowManager/torque" "windowManager/sdl")
 
 
 # Handle scene
 # Handle scene
-file(GLOB TORQUE_SCENE_SOURCES "scene/*.cpp" "scene/culling/*.cpp" "scene/zones/*.cpp" "scene/mixin/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_SCENE_SOURCES})
+torqueAddSourceDirectories("scene" "scene/culling" "scene/zones" "scene/mixin")
 
 
 # Handle math
 # Handle math
-file(GLOB TORQUE_MATH_SOURCES "math/*.cpp" "math/util/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_MATH_SOURCES})
+torqueAddSourceDirectories("math" "math/util")
 
 
 # Handle persistence
 # Handle persistence
-file(GLOB TORQUE_PERSISTENCE_SOURCES "persistence/taml/*.cpp" "persistence/taml/binary/*.cpp" "persistence/taml/xml/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PERSISTENCE_SOURCES})
+torqueAddSourceDirectories("persistence/taml" "persistence/taml/binary" "persistence/taml/xml")
 
 
 # Handle Cinterface
 # Handle Cinterface
-file(GLOB TORQUE_CINTERFACE_SOURCES "cinterface/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_CINTERFACE_SOURCES})
+torqueAddSourceDirectories("cinterface")
 
 
 # Handle util
 # Handle util
-file(GLOB TORQUE_UTIL_SOURCES "util/*.cpp" "util/messaging/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_UTIL_SOURCES})
+torqueAddSourceDirectories("util" "util/messaging")
 
 
 # Handle assets
 # Handle assets
-file(GLOB TORQUE_ASSETS_SOURCES "assets/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_ASSETS_SOURCES})
+torqueAddSourceDirectories("assets")
 
 
 # Handle Sim
 # Handle Sim
-file(GLOB TORQUE_SIM_SOURCES "sim/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_SIM_SOURCES})
+torqueAddSourceDirectories("sim")
 
 
 # Handle module
 # Handle module
-file(GLOB TORQUE_MODULE_SOURCES "module/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_MODULE_SOURCES})
+torqueAddSourceDirectories("module")
 
 
 # Handle forest
 # Handle forest
-file(GLOB TORQUE_FOREST_SOURCES "forest/*.cpp" "forest/ts/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_FOREST_SOURCES})
+torqueAddSourceDirectories("forest" "forest/ts")
 
 
 # Handle shadergen
 # Handle shadergen
-file(GLOB TORQUE_SHADERGEN_SOURCES "shaderGen/*.cpp")
+torqueAddSourceDirectories("shaderGen")
 
 
 if (WIN32 AND TORQUE_D3D11)
 if (WIN32 AND TORQUE_D3D11)
-	file(GLOB TORQUE_SHADERGEN_SOURCES_HLSL "shaderGen/HLSL/*.cpp")
-	set(TORQUE_SHADERGEN_SOURCES ${TORQUE_SHADERGEN_SOURCES} ${TORQUE_SHADERGEN_SOURCES_HLSL})
+  torqueAddSourceDirectories("shaderGen/HLSL")
 endif (WIN32)
 endif (WIN32)
 
 
 if (TORQUE_OPENGL)
 if (TORQUE_OPENGL)
-	file(GLOB TORQUE_SHADERGEN_SOURCES_GLSL "shaderGen/GLSL/*.cpp")
-	set(TORQUE_SHADERGEN_SOURCES ${TORQUE_SHADERGEN_SOURCES} ${TORQUE_SHADERGEN_SOURCES_GLSL})
+  torqueAddSourceDirectories("shaderGen/GLSL")
 endif (TORQUE_OPENGL)
 endif (TORQUE_OPENGL)
 
 
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_SHADERGEN_SOURCES})
-
 # Handle terrain
 # Handle terrain
-file(GLOB TORQUE_TERRAIN_SOURCES "terrain/*.cpp")
+torqueAddSourceDirectories("terrain")
 
 
 if (WIN32 AND TORQUE_D3D11)
 if (WIN32 AND TORQUE_D3D11)
-	file(GLOB TORQUE_TERRAIN_SOURCES_HLSL "terrain/hlsl/*.cpp")
-	set(TORQUE_TERRAIN_SOURCES ${TORQUE_TERRAIN_SOURCES} ${TORQUE_TERRAIN_SOURCES_HLSL})
+  torqueAddSourceDirectories("terrain/hlsl")
 endif (WIN32 AND TORQUE_D3D11)
 endif (WIN32 AND TORQUE_D3D11)
 
 
 if (TORQUE_OPENGL)
 if (TORQUE_OPENGL)
-	file(GLOB TORQUE_TERRAIN_SOURCES_GLSL "terrain/glsl/*.cpp")
-	set(TORQUE_TERRAIN_SOURCES ${TORQUE_TERRAIN_SOURCES} ${TORQUE_TERRAIN_SOURCES_GLSL})
+  torqueAddSourceDirectories("terrain/glsl")
 endif (TORQUE_OPENGL)
 endif (TORQUE_OPENGL)
 
 
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_TERRAIN_SOURCES})
-
 # Handle Materials
 # Handle Materials
-file(GLOB TORQUE_MATERIALS_SOURCES "materials/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_MATERIALS_SOURCES})
+torqueAddSourceDirectories("materials")
 
 
 # Handle collision
 # Handle collision
-file(GLOB TORQUE_COLLISION_SOURCES "collision/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_COLLISION_SOURCES})
+torqueAddSourceDirectories("collision")
 
 
 # Handle lighting
 # Handle lighting
-file(GLOB TORQUE_LIGHTING_SOURCES "lighting/*.cpp" "lighting/common/*.cpp"
-                                   "lighting/shadowMap/*.cpp")
+torqueAddSourceDirectories("lighting" "lighting/common"
+                                   "lighting/shadowMap")
 
 
 if (TORQUE_ADVANCED_LIGHTING)
 if (TORQUE_ADVANCED_LIGHTING)
-	file(GLOB TORQUE_LIGHTING_SOURCES_ADVANCED "lighting/advanced/*.cpp")
-	set(TORQUE_LIGHTING_SOURCES ${TORQUE_LIGHTING_SOURCES} ${TORQUE_LIGHTING_SOURCES_ADVANCED})
-	
+  torqueAddSourceDirectories("lighting/advanced")
+
 	if (WIN32 AND TORQUE_D3D11)
 	if (WIN32 AND TORQUE_D3D11)
-		file(GLOB TORQUE_LIGHTING_SOURCES_HLSL "lighting/advanced/hlsl/*.cpp")
-		set(TORQUE_LIGHTING_SOURCES ${TORQUE_LIGHTING_SOURCES} ${TORQUE_LIGHTING_SOURCES_HLSL})
+    torqueAddSourceDirectories("lighting/advanced/hlsl")
 	endif (WIN32 AND TORQUE_D3D11)
 	endif (WIN32 AND TORQUE_D3D11)
 
 
 	if (TORQUE_OPENGL)
 	if (TORQUE_OPENGL)
-		file(GLOB TORQUE_LIGHTING_SOURCES_GLSL "lighting/advanced/glsl/*.cpp")
-		set(TORQUE_LIGHTING_SOURCES ${TORQUE_LIGHTING_SOURCES} ${TORQUE_LIGHTING_SOURCES_GLSL})
+    torqueAddSourceDirectories("lighting/advanced/glsl")
 	endif (TORQUE_OPENGL)
 	endif (TORQUE_OPENGL)
 endif (TORQUE_ADVANCED_LIGHTING)
 endif (TORQUE_ADVANCED_LIGHTING)
 
 
 if (TORQUE_BASIC_LIGHTING)
 if (TORQUE_BASIC_LIGHTING)
-	file(GLOB TORQUE_LIGHTING_SOURCES_BASIC "lighting/basic/*.cpp" "lighting/basic/shadowMap/*.cpp")
-	set(TORQUE_LIGHTING_SOURCES ${TORQUE_LIGHTING_SOURCES} ${TORQUE_LIGHTING_SOURCES_BASIC})
+  torqueAddSourceDirectories("lighting/basic" "lighting/basic/shadowMap")
 endif (TORQUE_BASIC_LIGHTING)
 endif (TORQUE_BASIC_LIGHTING)
 
 
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_LIGHTING_SOURCES})
-
 # Handle environment
 # Handle environment
-file(GLOB TORQUE_ENVIRONMENT_SOURCES "environment/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_ENVIRONMENT_SOURCES})
+torqueAddSourceDirectories("environment")
 
 
 # Handle renderInstance
 # Handle renderInstance
-file(GLOB TORQUE_RENDERINSTANCE_SOURCES "renderInstance/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_RENDERINSTANCE_SOURCES})
+torqueAddSourceDirectories("renderInstance")
 
 
 # Handle i18n
 # Handle i18n
-file(GLOB TORQUE_I18N_SOURCES "i18n/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_I18N_SOURCES})
+torqueAddSourceDirectories("i18n")
 
 
 # Begin handling platform specific stuff
 # Begin handling platform specific stuff
 # Handle Platform POSIX
 # Handle Platform POSIX
 if (UNIX)
 if (UNIX)
-	file(GLOB TORQUE_PLATFORM_POSIX_SOURCES "platformPOSIX/*.cpp")
+	torqueAddSourceDirectories("platformPOSIX")
 
 
 	if (TORQUE_CPU_X32 OR TORQUE_CPU_X64)
 	if (TORQUE_CPU_X32 OR TORQUE_CPU_X64)
-		file(GLOB TORQUE_PLATFORM_X86_UNIX_SOURCES "platformX86UNIX/*.cpp")
-		set(TORQUE_PLATFORM_POSIX_SOURCES ${TORQUE_PLATFORM_POSIX_SOURCES} ${TORQUE_PLATFORM_X86_UNIX_SOURCES})
+    torqueAddSourceDirectories("platformX86UNIX")
 	endif (TORQUE_CPU_X32 OR TORQUE_CPU_X64)
 	endif (TORQUE_CPU_X32 OR TORQUE_CPU_X64)
-	
-	set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_POSIX_SOURCES})
 endif (UNIX)
 endif (UNIX)
 
 
 # Handle platformMac
 # Handle platformMac
 if (APPLE)
 if (APPLE)
-	file(GLOB TORQUE_PLATFORM_MAC_SOURCES "platformMac/*.mm")
-	set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_MAC_SOURCES})
+  torqueAddSourceDirectories("platformMac")
 endif (APPLE)
 endif (APPLE)
 
 
 # Handle platformWin32
 # Handle platformWin32
 if (WIN32)
 if (WIN32)
-	file(GLOB TORQUE_PLATFORM_WIN_SOURCES "platformWin32/*.cpp" "platformWin32/videoInfo/*.cpp")
-	set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_WIN_SOURCES})
+	torqueAddSourceDirectories("platformWin32" "platformWin32/videoInfo")
 endif (WIN32)
 endif (WIN32)
 
 
 # Handle platformSDL
 # Handle platformSDL
-file(GLOB TORQUE_PLATFORM_SDL_SOURCES "platformSDL/*.cpp" "platformSDL/threads/*.cpp")
-set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_SDL_SOURCES})
+torqueAddSourceDirectories("platformSDL" "platformSDL/threads")
 
 
 # Handle platformX11
 # Handle platformX11
 if (UNIX AND NOT APPLE)
 if (UNIX AND NOT APPLE)
-	file(GLOB TORQUE_PLATFORM_X11_SOURCES "platformX11/*.cpp")
-	set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_X11_SOURCES})
+  torqueAddSourceDirectories("platformX11")
 endif (UNIX AND NOT APPLE)
 endif (UNIX AND NOT APPLE)
 
 
-# Generate the filters for the main Torque project before we add RC files and such
+# Add the collected files to our engine group
 source_group(TREE "${CMAKE_SOURCE_DIR}/Engine/source" PREFIX "Engine" FILES ${TORQUE_SOURCE_FILES})
 source_group(TREE "${CMAKE_SOURCE_DIR}/Engine/source" PREFIX "Engine" FILES ${TORQUE_SOURCE_FILES})
 
 
-################# Dynamic File Configuration ###################
-
-# Prepare Windows RC file
-if (WIN32)
-	set(APPLICATION_ICON_PATH "${CMAKE_SOURCE_DIR}/Tools/CMake/torque.ico")
-	
-	configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/torque-win.rc.in" "${CMAKE_BINARY_DIR}/temp/torque.rc")
-	set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} "${CMAKE_BINARY_DIR}/temp/torque.rc")
-endif (WIN32)
-
-# Prepare OSX Plist
-if (APPLE)
-	set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_MAC_SOURCES} "${CMAKE_SOURCE_DIR}/Tools/CMake/torque.icns")
-	set_source_files_properties("${CMAKE_SOURCE_DIR}/Tools/CMake/torque.icns" PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
-	
-	set(EXECUTABLE_NAME "${TORQUE_APP_NAME}")
-	configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/Info.plist.in" "${CMAKE_BINARY_DIR}/temp/Info.plist" COPYONLY)
-endif (APPLE)
-
 ################# Engine Module Handling ###################
 ################# Engine Module Handling ###################
 
 
 set(TORQUE_MODULE_PATHS "${CMAKE_SOURCE_DIR}/Tools/CMake/modules" "${TORQUE_APP_GAME_DIRECTORY}/data")
 set(TORQUE_MODULE_PATHS "${CMAKE_SOURCE_DIR}/Tools/CMake/modules" "${TORQUE_APP_GAME_DIRECTORY}/data")
@@ -322,18 +272,19 @@ set(TORQUE_SOURCE_FILES_TEMPORARY ${TORQUE_SOURCE_FILES})
 set(TORQUE_SOURCE_FILES "")
 set(TORQUE_SOURCE_FILES "")
 
 
 foreach (TORQUE_MODULE_PATH ${TORQUE_MODULE_PATHS})
 foreach (TORQUE_MODULE_PATH ${TORQUE_MODULE_PATHS})
-	# First find simple cmake scripts
+	# First find simple cmake scripts, mostly used for in-engine modules
 	file(GLOB MODULE_SCRIPTS "${TORQUE_MODULE_PATH}/*.cmake")
 	file(GLOB MODULE_SCRIPTS "${TORQUE_MODULE_PATH}/*.cmake")
 	foreach (TORQUE_MODULE_SCRIPT ${MODULE_SCRIPTS})
 	foreach (TORQUE_MODULE_SCRIPT ${MODULE_SCRIPTS})
 		include(${TORQUE_MODULE_SCRIPT})
 		include(${TORQUE_MODULE_SCRIPT})
-    get_filename_component(TORQUE_MODULE_NAME "${TORQUE_MODULE_SCRIPT}" NAME)
-    source_group("Modules/${TORQUE_MODULE_NAME}" FILES ${TORQUE_SOURCE_FILES})
+
+    # Add this script's collected files to our Engine group
+    source_group(TREE "${CMAKE_SOURCE_DIR}/Engine/source" PREFIX "Engine" FILES ${TORQUE_SOURCE_FILES})
 
 
     set(TORQUE_SOURCE_FILES_TEMPORARY ${TORQUE_SOURCE_FILES_TEMPORARY} ${TORQUE_SOURCE_FILES})
     set(TORQUE_SOURCE_FILES_TEMPORARY ${TORQUE_SOURCE_FILES_TEMPORARY} ${TORQUE_SOURCE_FILES})
     set(TORQUE_SOURCE_FILES "")
     set(TORQUE_SOURCE_FILES "")
 	endforeach()
 	endforeach()
 
 
-	# Next find sub projects
+	# Next find sub projects, these can introduce new source files
 	SUBDIRLIST(POSSIBLE_PROJECTS "${TORQUE_MODULE_PATH}")
 	SUBDIRLIST(POSSIBLE_PROJECTS "${TORQUE_MODULE_PATH}")
 	foreach (POSSIBLE_PROJECT ${POSSIBLE_PROJECTS})
 	foreach (POSSIBLE_PROJECT ${POSSIBLE_PROJECTS})
 		# Retrieve the absolute path of this possible project
 		# Retrieve the absolute path of this possible project
@@ -342,7 +293,7 @@ foreach (TORQUE_MODULE_PATH ${TORQUE_MODULE_PATHS})
 
 
 		if (EXISTS "${POSSIBLE_PROJECT_ABSOLUTEPATH}/CMakeLists.txt")
 		if (EXISTS "${POSSIBLE_PROJECT_ABSOLUTEPATH}/CMakeLists.txt")
 			add_subdirectory("${POSSIBLE_PROJECT_ABSOLUTEPATH}" ${CMAKE_BINARY_DIR}/temp/${POSSIBLE_PROJECT} EXCLUDE_FROM_ALL)
 			add_subdirectory("${POSSIBLE_PROJECT_ABSOLUTEPATH}" ${CMAKE_BINARY_DIR}/temp/${POSSIBLE_PROJECT} EXCLUDE_FROM_ALL)
-      source_group("Modules/${POSSIBLE_PROJECT}" FILES ${TORQUE_SOURCE_FILES})
+      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_TEMPORARY ${TORQUE_SOURCE_FILES_TEMPORARY} ${TORQUE_SOURCE_FILES})
       set(TORQUE_SOURCE_FILES "")
       set(TORQUE_SOURCE_FILES "")
@@ -352,6 +303,25 @@ endforeach()
 
 
 set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES_TEMPORARY})
 set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES_TEMPORARY})
 
 
+################# Dynamic File Configuration ###################
+
+# Prepare Windows RC file
+if (WIN32)
+	set(APPLICATION_ICON_PATH "${CMAKE_SOURCE_DIR}/Tools/CMake/torque.ico")
+	
+	configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/torque-win.rc.in" "${CMAKE_BINARY_DIR}/temp/torque.rc")
+	set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} "${CMAKE_BINARY_DIR}/temp/torque.rc")
+endif (WIN32)
+
+# Prepare OSX Plist
+if (APPLE)
+	set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_MAC_SOURCES} "${CMAKE_SOURCE_DIR}/Tools/CMake/torque.icns")
+	set_source_files_properties("${CMAKE_SOURCE_DIR}/Tools/CMake/torque.icns" PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
+	
+	set(EXECUTABLE_NAME "${TORQUE_APP_NAME}")
+	configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/Info.plist.in" "${CMAKE_BINARY_DIR}/temp/Info.plist" COPYONLY)
+endif (APPLE)
+
 ################# Executable Generation ###################
 ################# Executable Generation ###################
 
 
 if (APPLE)
 if (APPLE)

+ 4 - 2
Tools/CMake/modules/afx.cmake

@@ -4,7 +4,9 @@ option(TORQUE_AFX_ENABLED "Enable AFX module" ON)
 if(TORQUE_AFX_ENABLED)
 if(TORQUE_AFX_ENABLED)
   message("Enabling AFX Module")
   message("Enabling AFX Module")
 
 
-  file(GLOB_RECURSE TORQUE_SFX_SOURCES "${CMAKE_SOURCE_DIR}/Engine/source/afx/*.cpp")
-  set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_SFX_SOURCES})
+  file(GLOB_RECURSE TORQUE_AFX_SOURCES "${CMAKE_SOURCE_DIR}/Engine/source/afx/*.cpp" "${CMAKE_SOURCE_DIR}/Engine/source/afx/*.h" )
+  set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_AFX_SOURCES})
   set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_AFX_ENABLED)
   set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_AFX_ENABLED)
+
+  source_group("Modules/AFX" ${TORQUE_AFX_SOURCES})
 endif()
 endif()

+ 1 - 2
Tools/CMake/modules/bullet.cmake

@@ -4,8 +4,7 @@ option(TORQUE_PHYSICS_BULLET "Use Bullet physics" OFF)
 if(TORQUE_PHYSICS_BULLET)
 if(TORQUE_PHYSICS_BULLET)
   message("Enabling Bullet Module")
   message("Enabling Bullet Module")
 
 
-  file(GLOB TORQUE_BULLET_SOURCES "${CMAKE_SOURCE_DIR}/Engine/source/T3D/physics/bullet/*.cpp")
-  set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_NAVIGATION_SOURCES})
+  torqueAddSourceDirectories("${CMAKE_SOURCE_DIR}/Engine/source/T3D/physics/bullet")
   set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} BulletSoftBody Bullet3Dynamics BulletInverseDynamics BulletCollision
   set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} BulletSoftBody Bullet3Dynamics BulletInverseDynamics BulletCollision
                                                      Bullet2FileLoader BulletDynamics Bullet3OpenCL_clew Bullet3Common
                                                      Bullet2FileLoader BulletDynamics Bullet3OpenCL_clew Bullet3Common
                                                      LinearMath Bullet3Geometry Bullet3Collision)
                                                      LinearMath Bullet3Geometry Bullet3Collision)

+ 1 - 3
Tools/CMake/modules/dsound.cmake

@@ -4,7 +4,5 @@ option(TORQUE_SFX_DIRECTX "Use DirectSound SFX" OFF)
 if(TORQUE_SFX_DIRECTX AND WIN32)
 if(TORQUE_SFX_DIRECTX AND WIN32)
   message("Enabling DirectSound Module")
   message("Enabling DirectSound Module")
 
 
-  file(GLOB TORQUE_DSOUND_SOURCES "${CMAKE_SOURCE_DIR}/Engine/source/sfx/dsound/*.cpp" "${CMAKE_SOURCE_DIR}/Engine/source/sfx/xaudio/*.cpp")
-
-  set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_DSOUND_SOURCES})
+  torqueAddSourceDirectories("${CMAKE_SOURCE_DIR}/Engine/source/sfx/dsound" "${CMAKE_SOURCE_DIR}/Engine/source/sfx/xaudio")
 endif(TORQUE_SFX_DIRECTX AND WIN32)
 endif(TORQUE_SFX_DIRECTX AND WIN32)

+ 1 - 2
Tools/CMake/modules/navigation.cmake

@@ -4,8 +4,7 @@ option(TORQUE_NAVIGATION "Enable Navigation module" ON)
 if(TORQUE_NAVIGATION)
 if(TORQUE_NAVIGATION)
   message("Enabling Navigation Module")
   message("Enabling Navigation Module")
 
 
-  file(GLOB TORQUE_NAVIGATION_SOURCES "${CMAKE_SOURCE_DIR}/Engine/source/navigation/*.cpp")
-  set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_NAVIGATION_SOURCES})
+  torqueAddSourceDirectories("${CMAKE_SOURCE_DIR}/Engine/source/navigation")
   set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} recast)
   set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} recast)
   set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} recast TORQUE_NAVIGATION_ENABLED)
   set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} recast TORQUE_NAVIGATION_ENABLED)
 
 

+ 5 - 9
Tools/CMake/modules/openal.cmake

@@ -4,27 +4,23 @@ option(TORQUE_SFX_OPENAL "Use OpenAL SFX" ON)
 if(TORQUE_SFX_OPENAL)
 if(TORQUE_SFX_OPENAL)
   message("Enabling OpenAL Module")
   message("Enabling OpenAL Module")
 
 
-  file(GLOB TORQUE_OPENAL_SOURCES "${CMAKE_SOURCE_DIR}/Engine/source/sfx/openal/*.cpp")
+  torqueAddSourceDirectories("${CMAKE_SOURCE_DIR}/Engine/source/sfx/openal")
 
 
   if (APPLE)
   if (APPLE)
-    file(GLOB TORQUE_OPENAL_MAC_SOURCES "${CMAKE_SOURCE_DIR}/Engine/source/sfx/openal/mac/*.cpp")
-    set(TORQUE_OPENAL_SOURCES ${TORQUE_OPENAL_SOURCES} ${TORQUE_OPENAL_MAC_SOURCES})
+    torqueAddSourceDirectories("${CMAKE_SOURCE_DIR}/Engine/source/sfx/openal/mac")
   elseif (WIN32)
   elseif (WIN32)
-    file(GLOB TORQUE_OPENAL_WIN_SOURCES "${CMAKE_SOURCE_DIR}/Engine/source/sfx/openal/win32/*.cpp")
-    set(TORQUE_OPENAL_SOURCES ${TORQUE_OPENAL_SOURCES} ${TORQUE_OPENAL_WIN_SOURCES})
+    torqueAddSourceDirectories("${CMAKE_SOURCE_DIR}/Engine/source/sfx/openal/win32")
   elseif (UNIX)
   elseif (UNIX)
-    file(GLOB TORQUE_OPENAL_LINUX_SOURCES "${CMAKE_SOURCE_DIR}/Engine/source/sfx/openal/linux/*.cpp")
-    set(TORQUE_OPENAL_SOURCES ${TORQUE_OPENAL_SOURCES} ${TORQUE_OPENAL_LINUX_SOURCES})
+    torqueAddSourceDirectories("${CMAKE_SOURCE_DIR}/Engine/source/sfx/openal/linux")
   else()
   else()
     message(FATAL_ERROR "Unsupported OpenAL platform.")
     message(FATAL_ERROR "Unsupported OpenAL platform.")
   endif (APPLE)
   endif (APPLE)
 
 
-  set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_OPENAL_SOURCES})
   set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} OpenAL)
   set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} OpenAL)
 
 
   # Since OpenAL lives elsewhere we need to ensure it is known to Torque when providing a link to it
   # Since OpenAL lives elsewhere we need to ensure it is known to Torque when providing a link to it
   set(ALSOFT_EXAMPLES OFF CACHE BOOL "OpenAL Examples" FORCE)
   set(ALSOFT_EXAMPLES OFF CACHE BOOL "OpenAL Examples" FORCE)
   set(ALSOFT_UPDATE_BUILD_VERSION OFF CACHE BOOL "Update build Version" UPDATE)
   set(ALSOFT_UPDATE_BUILD_VERSION OFF CACHE BOOL "Update build Version" UPDATE)
-
+  
   add_subdirectory("${CMAKE_SOURCE_DIR}/Engine/lib/openal-soft" ${CMAKE_BINARY_DIR}/temp/openal-soft EXCLUDE_FROM_ALL)
   add_subdirectory("${CMAKE_SOURCE_DIR}/Engine/lib/openal-soft" ${CMAKE_BINARY_DIR}/temp/openal-soft EXCLUDE_FROM_ALL)
 endif(TORQUE_SFX_OPENAL)
 endif(TORQUE_SFX_OPENAL)