library containment:

after execution of found cmakelists.txt files, searh the engine/lib and apname/data directories recursively for a *torque_postbuild.cmake file, including the contents, to ensure any values used, such as TORQUE_LINK_LIBRARIES remain in parent scope
This commit is contained in:
AzaezelX 2023-06-06 19:32:58 -05:00
parent 3ef60ffcb6
commit 9f01515e78
9 changed files with 69 additions and 47 deletions

View file

@ -0,0 +1,43 @@
################# Set Engine Linkages ###################
# When on Windows, we need to link against winsock and windows codecs
if (WIN32)
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} WS2_32.LIB windowscodecs.lib)
if (TORQUE_D3D11)
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} dxguid.lib)
endif (TORQUE_D3D11)
endif (WIN32)
# Only link Apple frameworks when on an Apple platform
if (APPLE)
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")
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} 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)
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} nativeFileDialogs)
# Linux requires X11 & freetype
if (UNIX AND NOT APPLE)
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} "X11" "Xft" "dl" "pthread")
find_package(Freetype REQUIRED)
set(TORQUE_INCLUDE_DIRECTORIES ${TORQUE_INCLUDE_DIRECTORIES} ${FREETYPE_INCLUDE_DIRS})
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} ${FREETYPE_LIBRARIES})
endif (UNIX AND NOT APPLE)

View file

@ -6,6 +6,4 @@
add_library(libogg ${LIBOGG_FILES})
set_target_properties(libogg PROPERTIES LINKER_LANGUAGE CXX)
target_include_directories(libogg PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
set(TORQUE_INCLUDE_DIRECTORIES ${TORQUE_INCLUDE_DIRECTORIES} "${CMAKE_CURRENT_SOURCE_DIR}/include")
#set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} libogg)
#endif()

View file

@ -0,0 +1 @@
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} libogg)

View file

@ -19,5 +19,5 @@
target_link_libraries(libtheora PUBLIC libogg)
target_compile_definitions(libtheora PUBLIC ${LIBTHEORA_COMPILE_DEFINES})
set(TORQUE_INCLUDE_DIRECTORIES ${TORQUE_INCLUDE_DIRECTORIES} "${CMAKE_CURRENT_SOURCE_DIR}/include/theora")
#set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} libtheora)
#set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} libtheora PARENT_SCOPE)
#endif()

View file

@ -0,0 +1 @@
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} libtheora)

View file

@ -13,5 +13,5 @@
endif (UNIX)
set(TORQUE_INCLUDE_DIRECTORIES ${TORQUE_INCLUDE_DIRECTORIES} "${CMAKE_CURRENT_SOURCE_DIR}/include/vorbis")
#set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} libvorbis)
#set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} libvorbis PARENT_SCOPE)
#endif()

View file

@ -0,0 +1 @@
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} libvorbis)

View file

@ -0,0 +1 @@
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} nativeFileDialogs)

View file

@ -28,46 +28,14 @@ endif (APPLE)
# When on Windows, we need to link against winsock and windows codecs
if (WIN32)
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} WS2_32.LIB windowscodecs.lib)
set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_WIN_SOURCES})
if (TORQUE_D3D11)
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} dxguid.lib)
endif (TORQUE_D3D11)
set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_WIN_SOURCES})
endif (WIN32)
# Only link Apple frameworks when on an Apple platform
if (APPLE)
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")
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} 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
if (UNIX AND NOT APPLE)
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} "X11" "Xft" "dl" "pthread")
set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_X11_SOURCES})
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})
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} ${FREETYPE_LIBRARIES})
endif (UNIX AND NOT APPLE)
################# Collect Source Files ###################
@ -84,8 +52,6 @@ torqueAddSourceDirectories("platform" "platform/threads" "platform/async"
torqueAddSourceDirectories("platform/nativeDialogs")
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} nativeFileDialogs)
# Handle T3D
torqueAddSourceDirectories("T3D/fps" "T3D/fx" "T3D/vehicles" "T3D/physics"
"T3D/decal" "T3D/sfx" "T3D/gameBase" "T3D/turret"
@ -107,9 +73,6 @@ if(TORQUE_SFX_OPENAL AND NOT TORQUE_DEDICATED)
torqueAddSourceDirectories("sfx/openal/mac")
endif()
endif()
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} libogg)
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} libvorbis)
set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} libtheora)
# Handle GFX
torqueAddSourceDirectories("gfx" "gfx/Null" "gfx/test" "gfx/bitmap" "gfx/bitmap/loaders"
"gfx/util" "gfx/video" "gfx/sim" )
@ -268,11 +231,11 @@ foreach (TORQUE_MODULE_PATH ${TORQUE_MODULE_PATHS})
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})
# 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 "")
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
@ -294,6 +257,20 @@ 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