Преглед на файлове

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

AzaezelX преди 2 години
родител
ревизия
9f01515e78

+ 43 - 0
Engine/lib/Torque_postBuild.cmake

@@ -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)

+ 0 - 2
Engine/lib/libogg/CMakeLists.txt

@@ -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()

+ 1 - 0
Engine/lib/libogg/Torque_postBuild.cmake

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

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

@@ -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()

+ 1 - 0
Engine/lib/libtheora/Torque_postBuild.cmake

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

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

@@ -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()

+ 1 - 0
Engine/lib/libvorbis/Torque_postBuild.cmake

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

+ 1 - 0
Engine/lib/nativeFileDialogs/Torque_postBuild.cmake

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

+ 20 - 43
Engine/source/CMakeLists.txt

@@ -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