Bladeren bron

Updated NVTT so it now a static library

BearishSun 8 jaren geleden
bovenliggende
commit
943b118066

+ 5 - 2
Source/BansheeCore/CMakeLists.txt

@@ -1,11 +1,14 @@
 # Source files and their filters
 include(CMakeSources.cmake)
 
+# Packages
+find_package(NVTT REQUIRED)
+
 # Includes
 set(BansheeCore_INC 
 	"Include" 
 	"../BansheeUtility/Include" 
-	"../../Dependencies/nvtt/include")
+	${NVTT_INCLUDE_DIRS})
 
 if(WIN32)
 	set(BansheeCore_INC ${BansheeCore_INC} "Include/Win32")
@@ -21,7 +24,7 @@ target_compile_definitions(BansheeCore PRIVATE -DBS_CORE_EXPORTS)
 
 # Libraries
 ## External lib: NVTT
-add_library_per_config(BansheeCore nvtt Release/nvtt Debug/nvtt)
+target_link_libraries(BansheeCore PUBLIC ${NVTT_LIBRARIES})	
 
 ## Local libs
 target_link_libraries(BansheeCore PUBLIC BansheeUtility)	

+ 61 - 0
Source/CMake/Common.cmake

@@ -0,0 +1,61 @@
+# Adds a library as a dependency to a target. The dependency is assumed to have separate libraries for release and debug builds.
+function(add_library_per_config target_name lib_name release_name debug_name)
+	add_library(${lib_name} STATIC IMPORTED)
+	set_target_properties(${lib_name} PROPERTIES IMPORTED_LOCATION_DEBUG ${PROJECT_SOURCE_DIR}/../Dependencies/${lib_name}/lib/${BS_OUTPUT_DIR_PREFIX}/${debug_name}${BS_LIBRARY_EXTENSION})
+	set_target_properties(${lib_name} PROPERTIES IMPORTED_LOCATION_OPTIMIZEDDEBUG ${PROJECT_SOURCE_DIR}/../Dependencies/${lib_name}/lib/${BS_OUTPUT_DIR_PREFIX}/${release_name}${BS_LIBRARY_EXTENSION})
+	set_target_properties(${lib_name} PROPERTIES IMPORTED_LOCATION_RELEASE ${PROJECT_SOURCE_DIR}/../Dependencies/${lib_name}/lib/${BS_OUTPUT_DIR_PREFIX}/${release_name}${BS_LIBRARY_EXTENSION})	
+	
+	target_link_libraries(${target_name} PRIVATE ${lib_name})	
+endfunction()
+
+# Adds a library as a dependency to a target. The dependency is assumed to have separate libraries for release and debug builds. The libraries
+# are assumed to be named differently from its dependency folder (which happens if a single dependency consists of multiple libraries).
+function(add_library_per_config_multi target_name lib_name file_name release_name debug_name)
+	add_library(${lib_name} STATIC IMPORTED)
+	set_target_properties(${lib_name} PROPERTIES IMPORTED_LOCATION_DEBUG ${PROJECT_SOURCE_DIR}/../Dependencies/${file_name}/lib/${BS_OUTPUT_DIR_PREFIX}/${debug_name}${BS_LIBRARY_EXTENSION})
+	set_target_properties(${lib_name} PROPERTIES IMPORTED_LOCATION_OPTIMIZEDDEBUG ${PROJECT_SOURCE_DIR}/../Dependencies/${file_name}/lib/${BS_OUTPUT_DIR_PREFIX}/${release_name}${BS_LIBRARY_EXTENSION})
+	set_target_properties(${lib_name} PROPERTIES IMPORTED_LOCATION_RELEASE ${PROJECT_SOURCE_DIR}/../Dependencies/${file_name}/lib/${BS_OUTPUT_DIR_PREFIX}/${release_name}${BS_LIBRARY_EXTENSION})	
+	
+	target_link_libraries(${target_name} PRIVATE ${lib_name})	
+endfunction()
+
+function(add_engine_dependencies target_name)
+	if(RENDER_API_MODULE MATCHES "DirectX 11")
+		add_dependencies(${target_name} BansheeD3D11RenderAPI)
+	elseif(RENDER_API_MODULE MATCHES "Vulkan")
+		add_dependencies(${target_name} BansheeVulkanRenderAPI)
+	else()
+		add_dependencies(${target_name} BansheeGLRenderAPI)
+	endif()
+
+	if(AUDIO_MODULE MATCHES "FMOD")
+		add_dependencies(${target_name} BansheeFMOD)
+	else() # Default to OpenAudio
+		add_dependencies(${target_name} BansheeOpenAudio)
+	endif()
+	
+	add_dependencies(${target_name} BansheeMono BansheeSL BansheeOISInput BansheePhysX RenderBeast SBansheeEngine)
+endfunction()
+
+function(add_subdirectory_optional subdir_name)
+	get_filename_component(fullPath ${subdir_name} ABSOLUTE)
+	if(EXISTS ${fullPath}/CMakeLists.txt)
+		add_subdirectory(${subdir_name})
+	endif()
+endfunction()
+
+MACRO(find_imported_library FOLDER_NAME LIB_NAME)
+	find_library(${LIB_NAME}_LIBRARY_RELEASE NAMES ${LIB_NAME} PATHS ${${FOLDER_NAME}_LIBRARY_RELEASE_SEARCH_DIRS})
+	find_library(${LIB_NAME}_LIBRARY_DEBUG NAMES ${LIB_NAME} PATHS ${${FOLDER_NAME}_LIBRARY_DEBUG_SEARCH_DIRS})
+
+	if(${LIB_NAME}_LIBRARY_RELEASE AND ${LIB_NAME}_LIBRARY_DEBUG)
+		add_library(${LIB_NAME} STATIC IMPORTED)
+		set_target_properties(${LIB_NAME} PROPERTIES IMPORTED_LOCATION_DEBUG "${${LIB_NAME}_LIBRARY_DEBUG}")
+		set_target_properties(${LIB_NAME} PROPERTIES IMPORTED_LOCATION_OPTIMIZEDDEBUG "${${LIB_NAME}_LIBRARY_DEBUG}")
+		set_target_properties(${LIB_NAME} PROPERTIES IMPORTED_LOCATION_RELEASE "${${LIB_NAME}_LIBRARY_RELEASE}")
+	else()
+		set(${FOLDER_NAME}_FOUND FALSE)
+	endif()
+
+	mark_as_advanced(${LIB_NAME}_LIBRARY_RELEASE ${LIB_NAME}_LIBRARY_DEBUG)
+ENDMACRO()

+ 51 - 0
Source/CMake/Modules/FindNVTT.cmake

@@ -0,0 +1,51 @@
+# Find NVTT dependency
+#
+# This module defines
+#  NVTT_INCLUDE_DIRS
+#  NVTT_LIBRARIES
+#  NVTT_FOUND
+
+set(NVTT_INSTALL_DIR ${PROJECT_SOURCE_DIR}/../Dependencies/NVTT CACHE PATH "")
+set(NVTT_INCLUDE_SEARCH_DIRS "${NVTT_INSTALL_DIR}/include")
+
+if(BS_64BIT)
+	list(APPEND NVTT_LIBRARY_RELEASE_SEARCH_DIRS "${NVTT_INSTALL_DIR}/lib/x64/Release")
+	list(APPEND NVTT_LIBRARY_DEBUG_SEARCH_DIRS "${NVTT_INSTALL_DIR}/lib/x64/Debug")
+else()
+	list(APPEND NVTT_LIBRARY_RELEASE_SEARCH_DIRS "${NVTT_INSTALL_DIR}/lib/x86/Release")
+	list(APPEND NVTT_LIBRARY_DEBUG_SEARCH_DIRS "${NVTT_INSTALL_DIR}/lib/x86/Debug")
+endif()
+
+message(STATUS "Looking for NVTT installation...")
+	
+find_path(NVTT_INCLUDE_DIR nvtt.h PATHS ${NVTT_INCLUDE_SEARCH_DIRS})	
+	
+if(NVTT_INCLUDE_DIR)
+	set(NVTT_FOUND TRUE)
+else()
+	set(NVTT_FOUND FALSE)
+endif()	
+	
+find_imported_library(NVTT nvtt)
+find_imported_library(NVTT bc6h)
+find_imported_library(NVTT bc7)
+find_imported_library(NVTT nvcore)
+find_imported_library(NVTT nvimage)
+find_imported_library(NVTT nvmath)
+find_imported_library(NVTT nvthread)
+find_imported_library(NVTT squish)
+
+if(NOT NVTT_FOUND)
+	if(NVTT_FIND_REQUIRED)
+		message(FATAL_ERROR "Cannot find NVTT installation. Try modifying the NVTT_INSTALL_DIR path.")
+	elseif(NOT NVTT_FIND_QUIETLY)
+		message(WARNING "Cannot find NVTT installation. Try modifying the NVTT_INSTALL_DIR path.")
+	endif()
+else()
+	message(STATUS "...NVTT OK.")
+endif()
+
+mark_as_advanced(NVTT_INSTALL_DIR NVTT_INCLUDE_DIR)
+
+set(NVTT_INCLUDE_DIRS ${NVTT_INCLUDE_DIR})
+set(NVTT_LIBRARIES nvtt bc6h bc7 nvcore nvimage nvmath nvthread squish)

+ 1 - 1
Source/CMake/Modules/FindXShaderCompiler.cmake

@@ -1,4 +1,4 @@
-# Find XShaderCompiler tool dependency
+# Find XShaderCompiler dependency
 #
 # This module defines
 #  XShaderCompiler_INCLUDE_DIRS

+ 1 - 44
Source/CMakeLists.txt

@@ -187,50 +187,7 @@ else()
 	set(BS_LIBRARY_EXTENSION ".a")
 endif()
 
-# Helper functions
-function(add_library_per_config target_name lib_name release_name debug_name)
-	add_library(${lib_name} STATIC IMPORTED)
-	set_target_properties(${lib_name} PROPERTIES IMPORTED_LOCATION_DEBUG ${PROJECT_SOURCE_DIR}/../Dependencies/${lib_name}/lib/${BS_OUTPUT_DIR_PREFIX}/${debug_name}${BS_LIBRARY_EXTENSION})
-	set_target_properties(${lib_name} PROPERTIES IMPORTED_LOCATION_OPTIMIZEDDEBUG ${PROJECT_SOURCE_DIR}/../Dependencies/${lib_name}/lib/${BS_OUTPUT_DIR_PREFIX}/${release_name}${BS_LIBRARY_EXTENSION})
-	set_target_properties(${lib_name} PROPERTIES IMPORTED_LOCATION_RELEASE ${PROJECT_SOURCE_DIR}/../Dependencies/${lib_name}/lib/${BS_OUTPUT_DIR_PREFIX}/${release_name}${BS_LIBRARY_EXTENSION})	
-	
-	target_link_libraries(${target_name} PRIVATE ${lib_name})	
-endfunction()
-
-function(add_library_per_config_multi target_name lib_name file_name release_name debug_name)
-	add_library(${lib_name} STATIC IMPORTED)
-	set_target_properties(${lib_name} PROPERTIES IMPORTED_LOCATION_DEBUG ${PROJECT_SOURCE_DIR}/../Dependencies/${file_name}/lib/${BS_OUTPUT_DIR_PREFIX}/${debug_name}${BS_LIBRARY_EXTENSION})
-	set_target_properties(${lib_name} PROPERTIES IMPORTED_LOCATION_OPTIMIZEDDEBUG ${PROJECT_SOURCE_DIR}/../Dependencies/${file_name}/lib/${BS_OUTPUT_DIR_PREFIX}/${release_name}${BS_LIBRARY_EXTENSION})
-	set_target_properties(${lib_name} PROPERTIES IMPORTED_LOCATION_RELEASE ${PROJECT_SOURCE_DIR}/../Dependencies/${file_name}/lib/${BS_OUTPUT_DIR_PREFIX}/${release_name}${BS_LIBRARY_EXTENSION})	
-	
-	target_link_libraries(${target_name} PRIVATE ${lib_name})	
-endfunction()
-
-function(add_engine_dependencies target_name)
-	if(RENDER_API_MODULE MATCHES "DirectX 11")
-		add_dependencies(${target_name} BansheeD3D11RenderAPI)
-	elseif(RENDER_API_MODULE MATCHES "Vulkan")
-		add_dependencies(${target_name} BansheeVulkanRenderAPI)
-	else()
-		add_dependencies(${target_name} BansheeGLRenderAPI)
-	endif()
-
-	if(AUDIO_MODULE MATCHES "FMOD")
-		add_dependencies(${target_name} BansheeFMOD)
-	else() # Default to OpenAudio
-		add_dependencies(${target_name} BansheeOpenAudio)
-	endif()
-	
-	add_dependencies(${target_name} BansheeMono BansheeSL BansheeOISInput BansheePhysX RenderBeast SBansheeEngine)
-endfunction()
-
-function(add_subdirectory_optional subdir_name)
-	get_filename_component(fullPath ${subdir_name} ABSOLUTE)
-	if(EXISTS ${fullPath}/CMakeLists.txt)
-		add_subdirectory(${subdir_name})
-	endif()
-endfunction()
-
+include(CMake/Common.cmake)
 include(CMake/FindPackageOrBuild.cmake)
 
 set_property(GLOBAL PROPERTY USE_FOLDERS TRUE)