瀏覽代碼

kill dupe macro definitions, add macro(addFramework framework) for mac support to append frameworks, and further mark-as-advanced cleanups

AzaezelX 2 年之前
父節點
當前提交
8906c12ddd
共有 4 個文件被更改,包括 93 次插入85 次删除
  1. 30 8
      Engine/lib/CMakeLists.txt
  2. 30 75
      Engine/source/CMakeLists.txt
  3. 25 1
      Tools/CMake/torque_configs.cmake
  4. 8 1
      Tools/CMake/torque_macros.cmake

+ 30 - 8
Engine/lib/CMakeLists.txt

@@ -1,12 +1,14 @@
-add_subdirectory(nativeFileDialogs ${CMAKE_BINARY_DIR}/temp/nfd EXCLUDE_FROM_ALL)
-
 # Ask CMake to perform builds in a temporary directory for all of these.
 # Ask CMake to perform builds in a temporary directory for all of these.
 # We also use EXCLUDE_FROM_ALL to ensure we only build and install what we want
 # We also use EXCLUDE_FROM_ALL to ensure we only build and install what we want
-set(SDL_SHARED on CACHE BOOL "" FORCE)
-add_subdirectory(sdl ${CMAKE_BINARY_DIR}/temp/sdl2 EXCLUDE_FROM_ALL)
 
 
-# Png depends on zlib
-add_subdirectory(zlib ${CMAKE_BINARY_DIR}/temp/zlib EXCLUDE_FROM_ALL)
+#SDL
+set(SDL_SHARED ON CACHE BOOL "Build a shared version of the library" FORCE)
+set(SDL_STATIC OFF CACHE BOOL "Build a static version of the library" FORCE)
+mark_as_advanced(SDL2_DISABLE_INSTALL)
+mark_as_advanced(SDL2_DISABLE_SDL2MAIN)
+mark_as_advanced(SDL2_DISABLE_UNINSTALL)
+add_subdirectory(sdl ${CMAKE_BINARY_DIR}/temp/sdl2 EXCLUDE_FROM_ALL)
+add_subdirectory(nativeFileDialogs ${CMAKE_BINARY_DIR}/temp/nfd EXCLUDE_FROM_ALL)
 
 
 # Assimp depends on zlib
 # Assimp depends on zlib
 set(BUILD_SHARED_LIBS off CACHE BOOL "" FORCE)
 set(BUILD_SHARED_LIBS off CACHE BOOL "" FORCE)
@@ -18,13 +20,33 @@ add_subdirectory(assimp ${CMAKE_BINARY_DIR}/temp/assimp EXCLUDE_FROM_ALL)
 if (TORQUE_CPU_ARM32 OR TORQUE_CPU_ARM64)
 if (TORQUE_CPU_ARM32 OR TORQUE_CPU_ARM64)
 	set(PNG_ARM_NEON on CACHE BOOL "" FORCE)
 	set(PNG_ARM_NEON on CACHE BOOL "" FORCE)
 endif (TORQUE_CPU_ARM32 OR TORQUE_CPU_ARM64)
 endif (TORQUE_CPU_ARM32 OR TORQUE_CPU_ARM64)
+
+#PNG
 set(PNG_STATIC on CACHE BOOL "" FORCE)
 set(PNG_STATIC on CACHE BOOL "" FORCE)
+mark_as_advanced(PNG_STATIC)
+set(PNG_SHARED off CACHE BOOL "" FORCE)
+mark_as_advanced(PNG_SHARED)
 set(PNG_BUILD_ZLIB on CACHE BOOL "" FORCE)
 set(PNG_BUILD_ZLIB on CACHE BOOL "" FORCE)
+mark_as_advanced(PNG_BUILD_ZLIB)
 set(PNG_TESTS off CACHE BOOL "" FORCE)
 set(PNG_TESTS off CACHE BOOL "" FORCE)
+mark_as_advanced(PNG_TESTS)
 set(PNG_HARDWARE_OPTIMIZATIONS on CACHE BOOL "" FORCE)
 set(PNG_HARDWARE_OPTIMIZATIONS on CACHE BOOL "" FORCE)
+mark_as_advanced(PNG_HARDWARE_OPTIMIZATIONS)
+if(APPLE)
+    set(PNG_FRAMEWORK on CACHE BOOL "" FORCE)
+    addDef(PNG_DEBUG Debug)
+endif()
+mark_as_advanced(PNG_DEBUG)
+mark_as_advanced(PNG_FRAMEWORK)
+mark_as_advanced(PNG_PREFIX)
+add_subdirectory(lpng ${CMAKE_BINARY_DIR}/temp/lpng EXCLUDE_FROM_ALL)
+
+#ZLIB
 get_filename_component(ZLIB_ROOT "zlib" REALPATH BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
 get_filename_component(ZLIB_ROOT "zlib" REALPATH BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
 set(ZLIB_ROOT "${ZLIB_ROOT}" CACHE STRING "ZLib root location" FORCE)
 set(ZLIB_ROOT "${ZLIB_ROOT}" CACHE STRING "ZLib root location" FORCE)
-add_subdirectory(lpng ${CMAKE_BINARY_DIR}/temp/lpng EXCLUDE_FROM_ALL)
+mark_as_advanced(ZLIB_ROOT)
+# Png depends on zlib
+add_subdirectory(zlib ${CMAKE_BINARY_DIR}/temp/zlib EXCLUDE_FROM_ALL)
 
 
 add_subdirectory(ljpeg ${CMAKE_BINARY_DIR}/temp/ljpeg EXCLUDE_FROM_ALL)
 add_subdirectory(ljpeg ${CMAKE_BINARY_DIR}/temp/ljpeg EXCLUDE_FROM_ALL)
 add_subdirectory(tinyxml ${CMAKE_BINARY_DIR}/temp/tinyxml EXCLUDE_FROM_ALL)
 add_subdirectory(tinyxml ${CMAKE_BINARY_DIR}/temp/tinyxml EXCLUDE_FROM_ALL)
@@ -33,4 +55,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(convexDecomp ${CMAKE_BINARY_DIR}/temp/convexDecomp EXCLUDE_FROM_ALL)
 add_subdirectory(squish ${CMAKE_BINARY_DIR}/temp/squish 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(collada ${CMAKE_BINARY_DIR}/temp/collada EXCLUDE_FROM_ALL)
-add_subdirectory(glad ${CMAKE_BINARY_DIR}/temp/glad EXCLUDE_FROM_ALL)
+add_subdirectory(glad ${CMAKE_BINARY_DIR}/temp/glad EXCLUDE_FROM_ALL)

+ 30 - 75
Engine/source/CMakeLists.txt

@@ -25,31 +25,6 @@ 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 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_MAC_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} ${SCANNED_MAC_FILES})
-    set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} PARENT_SCOPE)
-  endforeach()
-endmacro (torqueAddSourceDirectories)
-
-################# Set Conditional Engine Defines ###################
-macro (forwardDef flag)
-    if (${flag})
-        set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} ${flag})
-    endif()
-endmacro(forwardDef)
-
 forwardDef(TORQUE_OPENGL)
 forwardDef(TORQUE_OPENGL)
 forwardDef(TORQUE_D3D11)
 forwardDef(TORQUE_D3D11)
 forwardDef(TORQUE_ADVANCED_LIGHTING)
 forwardDef(TORQUE_ADVANCED_LIGHTING)
@@ -82,7 +57,26 @@ endif (WIN32)
 
 
 # Only link Apple frameworks when on an Apple platform
 # Only link Apple frameworks when on an Apple platform
 if (APPLE)
 if (APPLE)
-	set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} "-framework Cocoa" "-framework AppKit" "-framework CoreData" "-framework Foundation")
+    addFramework("Cocoa")
+    addFramework("AppKit")
+    addFramework("CoreData")
+    addFramework("Foundation")
+    #These are needed by sdl2 static lib
+    addFramework("ForceFeedback")
+    addFramework("IOKit")
+    #grrr damn you sdl!
+    addFramework("Carbon")
+    addLib("iconv")
+    if(NOT TORQUE_DEDICATED)
+        addFramework("OpenGL")
+        addFramework("CoreVideo")
+        if(TORQUE_SFX_OPENAL)
+            addFramework("OpenAL")
+            addFramework("CoreAudio")
+            addFramework("AudioUnit")
+            addFramework("AudioToolbox")
+        endif(TORQUE_SFX_OPENAL)
+    endif()
 endif (APPLE)
 endif (APPLE)
 
 
 # Linux requires X11 & freetype
 # Linux requires X11 & freetype
@@ -122,6 +116,16 @@ 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
 torqueAddSourceDirectories("sfx" "sfx/media" "sfx/null")
 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
 # Handle GFX
 torqueAddSourceDirectories("gfx" "gfx/Null" "gfx/test" "gfx/bitmap" "gfx/bitmap/loaders"
 torqueAddSourceDirectories("gfx" "gfx/Null" "gfx/test" "gfx/bitmap" "gfx/bitmap/loaders"
@@ -326,60 +330,11 @@ if (APPLE)
 	configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/Info.plist.in" "${CMAKE_BINARY_DIR}/temp/Info.plist" COPYONLY)
 	configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/Info.plist.in" "${CMAKE_BINARY_DIR}/temp/Info.plist" COPYONLY)
 endif (APPLE)
 endif (APPLE)
 
 
-################# additional preprocessor defines ###################
-macro(__addDef def config)
-    # two possibilities: a) target already known, so add it directly, or b) target not yet known, so add it to its cache
-    if(TARGET ${PROJECT_NAME})
-        #message(STATUS "directly applying defs: ${PROJECT_NAME} with config ${config}: ${def}")
-        if("${config}" STREQUAL "")
-            set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY COMPILE_DEFINITIONS ${def})
-        else()
-            set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:${config}>:${def}>)
-        endif()
-    else()
-        if("${config}" STREQUAL "")
-            list(APPEND ${PROJECT_NAME}_defs_ ${def})
-        else()
-            list(APPEND ${PROJECT_NAME}_defs_ $<$<CONFIG:${config}>:${def}>)
-        endif()
-        #message(STATUS "added definition to cache: ${PROJECT_NAME}_defs_: ${${PROJECT_NAME}_defs_}")
-    endif()
-endmacro()
-
-# adds a definition: argument 1: Nothing(for all), _DEBUG, _RELEASE, <more build configurations>
-macro(addDef def)
-    set(def_configs "")
-    if(${ARGC} GREATER 1)
-        foreach(config ${ARGN})
-            __addDef(${def} ${config})
-        endforeach()
-    else()
-        __addDef(${def} "")
-    endif()
-endmacro()
-
-# this applies cached definitions onto the target must come *after* target_compile_definitions
-macro(append_defs)
-    if(DEFINED ${PROJECT_NAME}_defs_)
-        set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY COMPILE_DEFINITIONS ${${PROJECT_NAME}_defs_})
-        #message(STATUS "applying defs to project ${PROJECT_NAME}: ${${PROJECT_NAME}_defs_}")
-    else()
-        #message(STATUS "NO ${PROJECT_NAME}_defs_ defined!")
-    endif()    
-endmacro()
-
 addDef(TORQUE_DEBUG Debug)
 addDef(TORQUE_DEBUG Debug)
 addDef(TORQUE_RELEASE "RelWithDebInfo;Release")
 addDef(TORQUE_RELEASE "RelWithDebInfo;Release")
 addDef(TORQUE_ENABLE_ASSERTS "Debug;RelWithDebInfo")
 addDef(TORQUE_ENABLE_ASSERTS "Debug;RelWithDebInfo")
 addDef(TORQUE_DEBUG_GFX_MODE "RelWithDebInfo")
 addDef(TORQUE_DEBUG_GFX_MODE "RelWithDebInfo")
 
 
-################# file filtering ###################
-macro (filterOut)
-  foreach(ARGUMENT ${ARGV})
-    list(REMOVE_ITEM TORQUE_SOURCE_FILES "${CMAKE_SOURCE_DIR}/Engine/source/${ARGUMENT}")
-  endforeach()
-endmacro (filterOut)
-
 if(NOT TORQUE_SDL)
 if(NOT TORQUE_SDL)
    filterOut("platform/nativeDialogs/fileDialog.cpp" )
    filterOut("platform/nativeDialogs/fileDialog.cpp" )
 endif()
 endif()

+ 25 - 1
Tools/CMake/torque_configs.cmake

@@ -1,6 +1,7 @@
 #general
 #general
 advanced_option(TORQUE_MULTITHREAD "Multi Threading" ON)
 advanced_option(TORQUE_MULTITHREAD "Multi Threading" ON)
 advanced_option(TORQUE_DISABLE_MEMORY_MANAGER "Disable memory manager" ON)
 advanced_option(TORQUE_DISABLE_MEMORY_MANAGER "Disable memory manager" ON)
+
 #fileIO
 #fileIO
 set(TORQUE_APP_PASSWORD "changeme" CACHE STRING "zip file password")
 set(TORQUE_APP_PASSWORD "changeme" CACHE STRING "zip file password")
 advanced_option(TORQUE_DISABLE_VIRTUAL_MOUNT_SYSTEM "Disable virtual mount system" OFF)
 advanced_option(TORQUE_DISABLE_VIRTUAL_MOUNT_SYSTEM "Disable virtual mount system" OFF)
@@ -9,14 +10,23 @@ advanced_option(TORQUE_ZIP_DISK_LAYOUT "All zips must be placed in the executabl
 advanced_option(TORQUE_POSIX_PATH_CASE_INSENSITIVE "POSIX Pathing Case Insensitivity" ON)
 advanced_option(TORQUE_POSIX_PATH_CASE_INSENSITIVE "POSIX Pathing Case Insensitivity" ON)
 advanced_option(TORQUE_ZIP_PATH_CASE_INSENSITIVE "ZIP Pathing Case Insensitivity" ON)
 advanced_option(TORQUE_ZIP_PATH_CASE_INSENSITIVE "ZIP Pathing Case Insensitivity" ON)
 advanced_option(TORQUE_USE_ZENITY "use the Zenity backend for NFD" OFF)
 advanced_option(TORQUE_USE_ZENITY "use the Zenity backend for NFD" OFF)
-#sound
+advanced_option(TORQUE_SECURE_VFS "Secure VFS configuration. Arbitrary script access to file system will be heavily restricted." OFF)
+
+#sfx
 advanced_option(TORQUE_SFX_VORBIS "Vorbis Sound" ON)
 advanced_option(TORQUE_SFX_VORBIS "Vorbis Sound" ON)
 advanced_option(TORQUE_THEORA "Theora Video Support" ON)
 advanced_option(TORQUE_THEORA "Theora Video Support" ON)
 advanced_option(TORQUE_SFX_OPENAL "OpenAL Sound" ON)
 advanced_option(TORQUE_SFX_OPENAL "OpenAL Sound" ON)
+
 #gfx
 #gfx
 advanced_option(TORQUE_DEBUG_GFX_MODE "triggers graphics debug mode" OFF)
 advanced_option(TORQUE_DEBUG_GFX_MODE "triggers graphics debug mode" OFF)
 advanced_option(TORQUE_ADVANCED_LIGHTING "Advanced Lighting" ON)
 advanced_option(TORQUE_ADVANCED_LIGHTING "Advanced Lighting" ON)
 advanced_option(TORQUE_BASIC_LIGHTING "Basic Lighting" ON)
 advanced_option(TORQUE_BASIC_LIGHTING "Basic Lighting" ON)
+advanced_option(TORQUE_OPENGL "Allow OpenGL render" ON) # we need OpenGL to render on Linux/Mac
+if(WIN32)
+	advanced_option(TORQUE_D3D11 "Allow Direct3D 11 render" ON)
+	addDef(TORQUE_D3D11)
+endif()
+
 #mode
 #mode
 advanced_option(TORQUE_NO_DSO_GENERATION "skip storing compiled scripts" ON)
 advanced_option(TORQUE_NO_DSO_GENERATION "skip storing compiled scripts" ON)
 advanced_option(TORQUE_DYNAMIC_LIBRARY "Whether or not to build Torque as a dynamic library." OFF)
 advanced_option(TORQUE_DYNAMIC_LIBRARY "Whether or not to build Torque as a dynamic library." OFF)
@@ -24,6 +34,8 @@ advanced_option(TORQUE_PLAYER "Playback only?" OFF)
 advanced_option(TORQUE_DEBUG "T3D Debug mode" OFF)
 advanced_option(TORQUE_DEBUG "T3D Debug mode" OFF)
 #option(DEBUG_SPEW "more debug" OFF)
 #option(DEBUG_SPEW "more debug" OFF)
 advanced_option(TORQUE_SHIPPING "T3D Shipping build?" OFF)
 advanced_option(TORQUE_SHIPPING "T3D Shipping build?" OFF)
+advanced_option(TORQUE_DEDICATED "Torque dedicated" OFF) # disables compiling in gfx and sfx frontend functionality
+
 #tools
 #tools
 advanced_option(TORQUE_DEBUG_NET "debug network" OFF)
 advanced_option(TORQUE_DEBUG_NET "debug network" OFF)
 advanced_option(TORQUE_DEBUG_NET_MOVES "debug network moves" OFF)
 advanced_option(TORQUE_DEBUG_NET_MOVES "debug network moves" OFF)
@@ -34,6 +46,18 @@ advanced_option(TORQUE_SHOW_LEGACY_FILE_FIELDS "If on, shows legacy direct file
 
 
 setupVersionNumbers()
 setupVersionNumbers()
 
 
+if(APPLE)
+    advanced_option(AL_ALEXT_PROTOTYPES "Use Extended OpenAL options" OFF)
+else()
+    advanced_option(AL_ALEXT_PROTOTYPES "Use Extended OpenAL options" ON)
+endif(APPLE)
+
+if(AL_ALEXT_PROTOTYPES)
+	addDef( "AL_ALEXT_PROTOTYPES" )
+endif()
+
+#hidden options
+
 if(TORQUE_SFX_OPENAL)
 if(TORQUE_SFX_OPENAL)
     advanced_option(ALSOFT_EAX "Enable legacy EAX extensions" ${WIN32})
     advanced_option(ALSOFT_EAX "Enable legacy EAX extensions" ${WIN32})
     advanced_option(ALSOFT_INSTALL_EXAMPLES "Install example programs (alplay, alstream, ...)" ON)
     advanced_option(ALSOFT_INSTALL_EXAMPLES "Install example programs (alplay, alstream, ...)" ON)

+ 8 - 1
Tools/CMake/torque_macros.cmake

@@ -123,4 +123,11 @@ macro (filterOut)
   foreach(ARGUMENT ${ARGV})
   foreach(ARGUMENT ${ARGV})
     list(REMOVE_ITEM TORQUE_SOURCE_FILES "${CMAKE_SOURCE_DIR}/Engine/source/${ARGUMENT}")
     list(REMOVE_ITEM TORQUE_SOURCE_FILES "${CMAKE_SOURCE_DIR}/Engine/source/${ARGUMENT}")
   endforeach()
   endforeach()
-endmacro (filterOut)
+endmacro (filterOut)
+
+################# apple frameworks ###################
+macro(addFramework framework)
+	if (APPLE)
+		set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES}"-framework ${framework}")
+	endif()
+endmacro()