Explorar el Código

* Feature: Obtain a building executable on MacOS, but need to resolve the crashing issues and multi-configuration settings.

Robert MacGregor hace 3 años
padre
commit
786dac7419
Se han modificado 3 ficheros con 229 adiciones y 103 borrados
  1. 1 0
      Engine/lib/CMakeLists.txt
  2. 1 1
      Engine/lib/pcre/CMakeLists.txt
  3. 227 102
      Engine/source/CMakeLists.txt

+ 1 - 0
Engine/lib/CMakeLists.txt

@@ -21,3 +21,4 @@ add_subdirectory(pcre ${CMAKE_BINARY_DIR}/temp/pcre EXCLUDE_FROM_ALL)
 add_subdirectory(convexDecomp ${CMAKE_BINARY_DIR}/temp/convexDecomp EXCLUDE_FROM_ALL)
 add_subdirectory(squish ${CMAKE_BINARY_DIR}/temp/squish EXCLUDE_FROM_ALL)
 add_subdirectory(collada ${CMAKE_BINARY_DIR}/temp/collada EXCLUDE_FROM_ALL)
+add_subdirectory(glad ${CMAKE_BINARY_DIR}/temp/glad EXCLUDE_FROM_ALL)

+ 1 - 1
Engine/lib/pcre/CMakeLists.txt

@@ -1,4 +1,4 @@
-file(GLOB PCRE_SOURCES "*.c")
+file(GLOB PCRE_SOURCES "*.c" "*.cc")
 
 add_library(pcre STATIC ${PCRE_SOURCES})
 target_compile_definitions(pcre PUBLIC PCRE_STATIC HAVE_CONFIG_H)

+ 227 - 102
Engine/source/CMakeLists.txt

@@ -76,99 +76,19 @@ setupVersionNumbers()
 # Generate torqueConfig.h in our temp directory
 CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/Tools/CMake/torqueConfig.h.in" "${CMAKE_BINARY_DIR}/temp/torqueConfig.h")
 
-
-#[[
-addPathRec("${srcDir}/app")
-
-
-addPath("${srcDir}/i18n")
-addPath("${srcDir}/util")
-
-addPath("${srcDir}/platform")
-if(NOT TORQUE_SDL)
-   set(BLACKLIST "fileDialog.cpp" )
-endif()
-addPath("${srcDir}/platform/nativeDialogs")
-set(BLACKLIST "" )
-
-if( NOT TORQUE_DEDICATED )
-    addPath("${srcDir}/platform/menus")
-endif()
-
-
-addPath("${srcDir}/collision")
-addPath("${srcDir}/materials")
-addPath("${srcDir}/lighting")
-addPath("${srcDir}/lighting/common")
-addPath("${srcDir}/renderInstance")
-addPath("${srcDir}/renderInstance/debug")
-addPath("${srcDir}/shaderGen")
-addPath("${srcDir}/terrain")
-addPath("${srcDir}/environment")
-
-addPath("${srcDir}/physics")
-
-addPath("${srcDir}/postFx")
-
-addPath("${srcDir}/T3D")
-set(BLACKLIST "" )
-
-
-
-addPath("${srcDir}/module")
-
-
-addPathRec("${projectSrcDir}")
-]]
-
 # Perform engine build. We do this initially as a lib for easier unit testing.
 file(GLOB TORQUE_MAIN_SOURCES "main/*.cpp")
-file(GLOB TORQUE_APP_SOURCES "app/*.cpp")
+file(GLOB TORQUE_APP_SOURCES "app/*.cpp" "app/net/*.cpp")
 
 # Handle Platform
-file(GLOB TORQUE_PLATFORM_SOURCES "platform/threads/*.cpp" "platform/async/*.cpp" "platform/input/*.cpp" "platform/output/*.cpp")
+file(GLOB TORQUE_PLATFORM_SOURCES "platform/*.cpp" "platform/threads/*.cpp" "platform/async/*.cpp"
+                                  "platform/input/*.cpp" "platform/output/*.cpp")
 
 # Handle T3D
-file(GLOB TORQUE_3D_NEXT_SOURCES "T3D/fps/*.cpp")
-file(GLOB TORQUE_T3D_SOURCES ${TORQUE_3D_NEXT_SOURCES})
-
-file(GLOB TORQUE_3D_NEXT_SOURCES "T3D/fx/*.cpp")
-file(GLOB TORQUE_T3D_SOURCES ${TORQUE_T3D_SOURCES} ${TORQUE_3D_NEXT_SOURCES})
-
-file(GLOB TORQUE_3D_NEXT_SOURCES "T3D/vehicles/*.cpp")
-file(GLOB TORQUE_T3D_SOURCES ${TORQUE_T3D_SOURCES} ${TORQUE_3D_NEXT_SOURCES})
-
-file(GLOB TORQUE_3D_NEXT_SOURCES "T3D/physics/*.cpp")
-file(GLOB TORQUE_T3D_SOURCES ${TORQUE_T3D_SOURCES} ${TORQUE_3D_NEXT_SOURCES})
-
-file(GLOB TORQUE_3D_NEXT_SOURCES "T3D/decal/*.cpp")
-file(GLOB TORQUE_T3D_SOURCES ${TORQUE_T3D_SOURCES} ${TORQUE_3D_NEXT_SOURCES})
-
-file(GLOB TORQUE_3D_NEXT_SOURCES "T3D/sfx/*.cpp")
-file(GLOB TORQUE_T3D_SOURCES ${TORQUE_T3D_SOURCES} ${TORQUE_3D_NEXT_SOURCES})
-
-file(GLOB TORQUE_3D_NEXT_SOURCES "T3D/gameBase/*.cpp")
-file(GLOB TORQUE_T3D_SOURCES ${TORQUE_T3D_SOURCES} ${TORQUE_3D_NEXT_SOURCES})
-
-file(GLOB TORQUE_3D_NEXT_SOURCES "T3D/turret/*.cpp")
-file(GLOB TORQUE_T3D_SOURCES ${TORQUE_T3D_SOURCES} ${TORQUE_3D_NEXT_SOURCES})
-
-file(GLOB TORQUE_3D_NEXT_SOURCES "T3D/lighting/*.cpp")
-file(GLOB TORQUE_T3D_SOURCES ${TORQUE_T3D_SOURCES} ${TORQUE_3D_NEXT_SOURCES})
-
-file(GLOB TORQUE_3D_NEXT_SOURCES "T3D/gameOBjects/*.cpp")
-file(GLOB TORQUE_T3D_SOURCES ${TORQUE_T3D_SOURCES} ${TORQUE_3D_NEXT_SOURCES})
-
-file(GLOB TORQUE_3D_NEXT_SOURCES "T3D/components/*.cpp")
-file(GLOB TORQUE_T3D_SOURCES ${TORQUE_T3D_SOURCES} ${TORQUE_3D_NEXT_SOURCES})
-
-file(GLOB TORQUE_3D_NEXT_SOURCES "T3D/systems/*.cpp")
-file(GLOB TORQUE_T3D_SOURCES ${TORQUE_T3D_SOURCES} ${TORQUE_3D_NEXT_SOURCES})
-
-file(GLOB TORQUE_3D_NEXT_SOURCES "T3D/assets/*.cpp")
-file(GLOB TORQUE_T3D_SOURCES ${TORQUE_T3D_SOURCES} ${TORQUE_3D_NEXT_SOURCES})
-
-#message(FATAL_ERROR ${TORQUE_T3D_SOURCES})
+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")
 
 # Handle TS
 file(GLOB TORQUE_TS_SOURCES "ts/*.cpp" "ts/collada/*.cpp" "ts/assimp/*.cpp" "ts/loader/*.cpp" "ts/arch/*.cpp")
@@ -186,7 +106,11 @@ file(GLOB TORQUE_CORE_SOURCES "core/*.cpp" "core/stream/*.cpp" "core/strings/*.c
 
 # 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")
+                              "gui/game/*.cpp" "gui/shiny/*.cpp" "gui/utility/*.cpp" "gui/3d/*.cpp" "gui/editor/*.cpp"
+                              "gui/worldEditor/*.cpp" "gui/worldEditor/tools/*.cpp" "gui/editor/inspector/*.cpp")
+
+# Handle postFX
+file(GLOB TORQUE_POSTFX_SOURCES "postFx/*.cpp")
 
 # Handle Windowmanager
 file(GLOB TORQUE_WINDOW_MANAGER_SOURCES "windowManager/*.cpp" "windowManager/torque/*.cpp" "windowManager/sdl/*.cpp")
@@ -203,7 +127,7 @@ file(GLOB TORQUE_MATH_SOURCES "math/*.cpp" "math/util/*.cpp")
 # Handle persistence
 #addPathRec("${srcDir}/persistence")
 
-file(GLOB TORQUE_PERSISTENCE_SOURCES "persistence/taml/*.cpp")
+file(GLOB TORQUE_PERSISTENCE_SOURCES "persistence/taml/*.cpp" "persistence/taml/binary/*.cpp" "persistence/taml/xml/*.cpp")
 
 # Handle Cinterface
 file(GLOB TORQUE_CINTERFACE_SOURCES "cinterface/*.cpp")
@@ -227,17 +151,31 @@ file(GLOB TORQUE_MODULE_SOURCES "module/*.cpp")
 file(GLOB TORQUE_FOREST_SOURCES "forest/*.cpp" "forest/ts/*.cpp")
 
 # Handle shadergen
-file(GLOB TORQUE_SHADERGEN_SOURCES "shadergen/*.cpp")
+file(GLOB TORQUE_SHADERGEN_SOURCES "shaderGen/*.cpp" "shadergen/GLSL/*.cpp")
 
 # Handle terrain
 file(GLOB TORQUE_TERRAIN_SOURCES "terrain/*.cpp")
 
 # Handle Materials
-file(GLOB TORQUE_MATERIALS_SOURCES "materals/*.cpp")
+file(GLOB TORQUE_MATERIALS_SOURCES "materials/*.cpp")
 
 # Handle collision
 file(GLOB TORQUE_COLLISION_SOURCES "collision/*.cpp")
 
+# Handle lighting
+file(GLOB TORQUE_LIGHTING_SOURCES "lighting/*.cpp" "lighting/common/*.cpp"
+                                  "lighting/advanced/*.cpp" "lighting/shadowMap/*.cpp"
+                                  "lighting/advanced/glsl/*.cpp")
+
+# Handle environment
+file(GLOB TORQUE_ENVIRONMENT_SOURCES "environment/*.cpp")
+
+# Handle renderInstance
+file(GLOB TORQUE_RENDERINSTANCE_SOURCES "renderInstance/*.cpp")
+
+# Handle i18n
+file(GLOB TORQUE_I18N_SOURCES "i18n/*.cpp")
+
 # Begin handling platform specific stuff
 # Handle Platform POSIX
 if (UNIX)
@@ -249,19 +187,206 @@ if (APPLE)
   file(GLOB TORQUE_PLATFORM_MAC_SOURCES "platformMac/*.mm")
 endif (APPLE)
 
+# Handle platformSDL
+file(GLOB TORQUE_PLATFORM_SDL_SOURCES "platformSDL/*.cpp" "platformSDL/threads/*.cpp")
+
 # Link generic libs
 set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} png "-framework Cocoa" "-framework AppKit" "-framework CoreData" "-framework Foundation")
+set(TORQUE_COMPILE_DEFINITIONS ICE_NO_DLL PCRE_STATIC TORQUE_ADVANCED_LIGHTING TORQUE_TOOLS TORQUE_SHADERGEN TORQUE_OPENGL TORQUE_OPCODE TORQUE_ASSIMP TORQUE_SDL TORQUE_COLLADA TORQUE_UNICODE)
+
+################# Start building libs ###################
+
+# Set common linkages
+set(TORQUE_LINK_LIBRARIES tinyxml collada ljpeg squish png opcode assimp
+                          SDL2 glad pcre "-framework Cocoa" "-framework AppKit"
+                          "-framework CoreData" "-framework Foundation")
+
+# [[ SFX ]]
+add_library(SFX STATIC ${TORQUE_SFX_SOURCES})
+target_compile_definitions(SFX PUBLIC ICE_NO_DLL ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(SFX PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(SFX PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ GFX ]]
+add_library(GFX STATIC ${TORQUE_GFX_SOURCES})
+target_compile_definitions(GFX PUBLIC ICE_NO_DLL ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(GFX PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(GFX PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ Console ]]
+add_library(Console STATIC ${TORQUE_CONSOLE_SOURCES})
+target_compile_definitions(Console PUBLIC ICE_NO_DLL ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(Console PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(Console PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ Core ]]
+add_library(Core STATIC ${TORQUE_CORE_SOURCES})
+target_compile_definitions(Core PUBLIC ICE_NO_DLL ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(Core PUBLIC ${TORQUE_LINK_LIBRARIES} Console)
+target_include_directories(Core PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ Util ]]
+add_library(Util STATIC ${TORQUE_UTIL_SOURCES})
+target_compile_definitions(Util PUBLIC ICE_NO_DLL ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(Util PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(Util PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ Math ]]
+add_library(Math STATIC ${TORQUE_MATH_SOURCES})
+target_compile_definitions(Math PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(Math PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(Math PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ Generic Platform ]]
+add_library(Platform STATIC ${TORQUE_PLATFORM_SOURCES})
+target_compile_definitions(Platform PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(Platform PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(Platform PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ SDL Platform ]]
+add_library(PlatformSDL STATIC ${TORQUE_PLATFORM_SDL_SOURCES})
+target_compile_definitions(PlatformSDL PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(PlatformSDL PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(PlatformSDL PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ App ]]
+add_library(App STATIC ${TORQUE_APP_SOURCES})
+target_compile_definitions(App PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(App PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(App PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ CInterface ]]
+add_library(CInterface STATIC ${TORQUE_CINTERFACE_SOURCES})
+target_compile_definitions(CInterface PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(CInterface PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(CInterface PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ Assets ]]
+add_library(Assets STATIC ${TORQUE_ASSETS_SOURCES})
+target_compile_definitions(Assets PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(Assets PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(Assets PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ Persistence ]]
+add_library(Persistence STATIC ${TORQUE_PERSISTENCE_SOURCES})
+target_compile_definitions(Persistence PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(Persistence PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(Persistence PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ TS ]]
+add_library(TS STATIC ${TORQUE_TS_SOURCES})
+target_compile_definitions(TS PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(TS PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(TS PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ Module ]]
+add_library(Module STATIC ${TORQUE_MODULE_SOURCES})
+target_compile_definitions(Module PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(Module PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(Module PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ T3D ]]
+add_library(T3D STATIC ${TORQUE_T3D_SOURCES})
+target_compile_definitions(T3D PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(T3D PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(T3D PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ Scene ]]
+add_library(Scene STATIC ${TORQUE_SCENE_SOURCES})
+target_compile_definitions(Scene PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(Scene PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(Scene PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ Collision ]]
+add_library(Collision STATIC ${TORQUE_COLLISION_SOURCES})
+target_compile_definitions(Collision PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(Collision PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(Collision PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ Window Manager ]]
+add_library(WindowManager STATIC ${TORQUE_WINDOW_MANAGER_SOURCES})
+target_compile_definitions(WindowManager PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(WindowManager PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(WindowManager PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ POSIX Platform ]]
+add_library(PlatformPOSIX STATIC ${TORQUE_PLATFORM_POSIX_SOURCES})
+target_compile_definitions(PlatformPOSIX PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(PlatformPOSIX PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(PlatformPOSIX PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ Sim ]]
+add_library(Sim STATIC ${TORQUE_SIM_SOURCES})
+target_compile_definitions(Sim PUBLIC ICE_NO_DLL ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(Sim PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(Sim PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ GUI ]]
+add_library(GUI STATIC ${TORQUE_GUI_SOURCES})
+target_compile_definitions(GUI PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(GUI PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(GUI PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ Terrain ]]
+add_library(Terrain STATIC ${TORQUE_TERRAIN_SOURCES})
+target_compile_definitions(Terrain PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(Terrain PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(Terrain PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ Lighting ]]
+add_library(Lighting STATIC ${TORQUE_LIGHTING_SOURCES})
+target_compile_definitions(Lighting PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(Lighting PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(Lighting PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ Shadergen ]]
+add_library(Shadergen STATIC ${TORQUE_SHADERGEN_SOURCES})
+target_compile_definitions(Shadergen PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(Shadergen PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(Shadergen PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ Materials ]]
+add_library(Materials STATIC ${TORQUE_MATERIALS_SOURCES})
+target_compile_definitions(Materials PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(Materials PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(Materials PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ MacOS Platform ]]
+add_library(PlatformMac STATIC ${TORQUE_PLATFORM_MAC_SOURCES})
+target_compile_definitions(PlatformMac PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(PlatformMac PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(PlatformMac PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ RenderInstance ]]
+add_library(RenderInstance STATIC ${TORQUE_RENDERINSTANCE_SOURCES})
+target_compile_definitions(RenderInstance PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(RenderInstance PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(RenderInstance PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ PostFX ]]
+add_library(PostFX STATIC ${TORQUE_POSTFX_SOURCES})
+target_compile_definitions(PostFX PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(PostFX PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(PostFX PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ i18n ]]
+add_library(I18N STATIC ${TORQUE_I18N_SOURCES})
+target_compile_definitions(I18N PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(I18N PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(I18N PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
+
+# [[ Environment ]]
+add_library(Environment STATIC ${TORQUE_ENVIRONMENT_SOURCES})
+target_compile_definitions(Environment PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(Environment PUBLIC ${TORQUE_LINK_LIBRARIES})
+target_include_directories(Environment PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")
 
 # Final executable
-add_executable(Game ${TORQUE_PLATFORM_SOURCES} ${TORQUE_UTIL_SOURCES} ${TORQUE_CORE_SOURCES}
-                    ${TORQUE_T3D_SOURCES} ${TORQUE_SIM_SOURCES} ${TORQUE_SFX_SOURCES} ${TORQUE_APP_SOURCES} ${TORQUE_CONSOLE_SOURCES}
-                    ${TORQUE_PERSISTENCE_SOURCES} ${TORQUE_PLATFORM_MAC_SOURCES} ${TORQUE_PLATFORM_POSIX_SOURCES}
-                    ${TORQUE_GUI_SOURCES} ${TORQUE_GFX_SOURCES} ${TORQUE_APP_SOURCES} ${TORQUE_MATH_SOURCES}
-                    ${TORQUE_PERSISTENCE_SOURCES} ${TORQUE_ASSETS_SOURCES} ${TORQUE_WINDOW_MANAGER_SOURCES}
-                    ${TORQUE_TERRAIN_SOURCES} ${TORQUE_TS_SOURCES} ${TORQUE_CINTERFACE_SOURCES} ${TORQUE_COLLISION_SOURCES}
-                    ${TORQUE_SCENE_SOURCES} ${TORQUE_MATERIALS_SOURCES} "main/main.cpp")
-
-target_compile_definitions(Game PUBLIC ICE_NO_DLL TORQUE_OPCODE TORQUE_SDL TORQUE_COLLADA TORQUE_COLLADA TORQUE_UNICODE)
-target_link_libraries(Game tinyxml collada ljpeg squish png assimp SDL2 "-framework Cocoa" "-framework AppKit" "-framework CoreData"
-                      "-framework Foundation")
+add_executable(Game "main/main.cpp")
+target_compile_definitions(Game PUBLIC ${TORQUE_COMPILE_DEFINITIONS})
+target_link_libraries(Game ${TORQUE_LINK_LIBRARIES} App Assets Platform Math Console Util Core
+                                                    CInterface Persistence Module PlatformSDL PlatformMac
+                                                    PlatformPOSIX WindowManager GFX SFX Scene Collision T3D TS
+                                                    Sim Materials Shadergen Lighting GUI Environment Terrain
+                                                    RenderInstance PostFX I18N)
 target_include_directories(Game PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp")