From 8906c12ddd581c910e857d24dbed1594a24c2e7a Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Sat, 3 Jun 2023 13:47:36 -0500 Subject: [PATCH] kill dupe macro definitions, add macro(addFramework framework) for mac support to append frameworks, and further mark-as-advanced cleanups --- Engine/lib/CMakeLists.txt | 38 ++++++++--- Engine/source/CMakeLists.txt | 105 +++++++++---------------------- Tools/CMake/torque_configs.cmake | 26 +++++++- Tools/CMake/torque_macros.cmake | 9 ++- 4 files changed, 93 insertions(+), 85 deletions(-) diff --git a/Engine/lib/CMakeLists.txt b/Engine/lib/CMakeLists.txt index 258c58686..2e5b54c8a 100644 --- a/Engine/lib/CMakeLists.txt +++ b/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. # 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 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) set(PNG_ARM_NEON on CACHE BOOL "" FORCE) endif (TORQUE_CPU_ARM32 OR TORQUE_CPU_ARM64) + +#PNG 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) +mark_as_advanced(PNG_BUILD_ZLIB) set(PNG_TESTS off CACHE BOOL "" FORCE) +mark_as_advanced(PNG_TESTS) 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}") 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(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(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) +add_subdirectory(glad ${CMAKE_BINARY_DIR}/temp/glad EXCLUDE_FROM_ALL) \ No newline at end of file diff --git a/Engine/source/CMakeLists.txt b/Engine/source/CMakeLists.txt index 79a0f9dbe..e9cf0d781 100644 --- a/Engine/source/CMakeLists.txt +++ b/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) ################# 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_D3D11) forwardDef(TORQUE_ADVANCED_LIGHTING) @@ -82,7 +57,26 @@ endif (WIN32) # Only link Apple frameworks when on an Apple platform 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) # 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 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" @@ -326,60 +330,11 @@ if (APPLE) configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/Info.plist.in" "${CMAKE_BINARY_DIR}/temp/Info.plist" COPYONLY) 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 $<$:${def}>) - endif() - else() - if("${config}" STREQUAL "") - list(APPEND ${PROJECT_NAME}_defs_ ${def}) - else() - list(APPEND ${PROJECT_NAME}_defs_ $<$:${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, -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_RELEASE "RelWithDebInfo;Release") addDef(TORQUE_ENABLE_ASSERTS "Debug;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) filterOut("platform/nativeDialogs/fileDialog.cpp" ) endif() diff --git a/Tools/CMake/torque_configs.cmake b/Tools/CMake/torque_configs.cmake index af5388f05..a8a867b95 100644 --- a/Tools/CMake/torque_configs.cmake +++ b/Tools/CMake/torque_configs.cmake @@ -1,6 +1,7 @@ #general advanced_option(TORQUE_MULTITHREAD "Multi Threading" ON) advanced_option(TORQUE_DISABLE_MEMORY_MANAGER "Disable memory manager" ON) + #fileIO set(TORQUE_APP_PASSWORD "changeme" CACHE STRING "zip file password") 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_ZIP_PATH_CASE_INSENSITIVE "ZIP Pathing Case Insensitivity" ON) 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_THEORA "Theora Video Support" ON) advanced_option(TORQUE_SFX_OPENAL "OpenAL Sound" ON) + #gfx advanced_option(TORQUE_DEBUG_GFX_MODE "triggers graphics debug mode" OFF) advanced_option(TORQUE_ADVANCED_LIGHTING "Advanced 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 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) @@ -24,6 +34,8 @@ advanced_option(TORQUE_PLAYER "Playback only?" OFF) advanced_option(TORQUE_DEBUG "T3D Debug mode" OFF) #option(DEBUG_SPEW "more debug" 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 advanced_option(TORQUE_DEBUG_NET "debug network" 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() +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) advanced_option(ALSOFT_EAX "Enable legacy EAX extensions" ${WIN32}) advanced_option(ALSOFT_INSTALL_EXAMPLES "Install example programs (alplay, alstream, ...)" ON) diff --git a/Tools/CMake/torque_macros.cmake b/Tools/CMake/torque_macros.cmake index 338edb726..c16964c6d 100644 --- a/Tools/CMake/torque_macros.cmake +++ b/Tools/CMake/torque_macros.cmake @@ -123,4 +123,11 @@ macro (filterOut) foreach(ARGUMENT ${ARGV}) list(REMOVE_ITEM TORQUE_SOURCE_FILES "${CMAKE_SOURCE_DIR}/Engine/source/${ARGUMENT}") endforeach() -endmacro (filterOut) \ No newline at end of file +endmacro (filterOut) + +################# apple frameworks ################### +macro(addFramework framework) + if (APPLE) + set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES}"-framework ${framework}") + endif() +endmacro() \ No newline at end of file