mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-10-31 06:46:40 +08:00 
			
		
		
		
	Merge pull request #9862 from abouvier/cmake-components
cmake: support components in find modules
This commit is contained in:
		
						commit
						304d6e9870
					
				| @ -212,8 +212,8 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) | ||||
| # Enforce the search mode of non-required packages for better and shorter failure messages | ||||
| find_package(enet 1.3 MODULE) | ||||
| find_package(fmt 9 REQUIRED) | ||||
| find_package(inih MODULE) | ||||
| find_package(LLVM MODULE) | ||||
| find_package(inih 52 MODULE COMPONENTS INIReader) | ||||
| find_package(LLVM MODULE COMPONENTS Demangle) | ||||
| find_package(lz4 REQUIRED) | ||||
| find_package(nlohmann_json 3.8 REQUIRED) | ||||
| find_package(Opus 1.3 MODULE) | ||||
| @ -246,7 +246,7 @@ endif() | ||||
| 
 | ||||
| if (ENABLE_WEB_SERVICE) | ||||
|     find_package(cpp-jwt 1.4 CONFIG) | ||||
|     find_package(httplib 0.12 MODULE) | ||||
|     find_package(httplib 0.12 MODULE COMPONENTS OpenSSL) | ||||
| endif() | ||||
| 
 | ||||
| if (YUZU_TESTS) | ||||
|  | ||||
| @ -2,15 +2,25 @@ | ||||
| # | ||||
| # SPDX-License-Identifier: GPL-3.0-or-later | ||||
| 
 | ||||
| find_package(LLVM QUIET CONFIG) | ||||
| find_package(LLVM QUIET COMPONENTS CONFIG) | ||||
| if (LLVM_FOUND) | ||||
|     separate_arguments(LLVM_DEFINITIONS) | ||||
|     if (LLVMDemangle IN_LIST LLVM_AVAILABLE_LIBS) | ||||
|         set(LLVM_Demangle_FOUND TRUE) | ||||
|     endif() | ||||
| endif() | ||||
| 
 | ||||
| include(FindPackageHandleStandardArgs) | ||||
| find_package_handle_standard_args(LLVM CONFIG_MODE) | ||||
| find_package_handle_standard_args(LLVM HANDLE_COMPONENTS CONFIG_MODE) | ||||
| 
 | ||||
| if (LLVM_FOUND AND NOT TARGET LLVM::Demangle) | ||||
| if (LLVM_FOUND AND LLVM_Demangle_FOUND AND NOT TARGET LLVM::Demangle) | ||||
|     add_library(LLVM::Demangle INTERFACE IMPORTED) | ||||
|     llvm_map_components_to_libnames(LLVM_LIBRARIES demangle) | ||||
|     target_compile_definitions(LLVM::Demangle INTERFACE ${LLVM_DEFINITIONS}) | ||||
|     target_include_directories(LLVM::Demangle INTERFACE ${LLVM_INCLUDE_DIRS}) | ||||
|     # prefer shared LLVM: https://github.com/llvm/llvm-project/issues/34593 | ||||
|     # but use ugly hack because llvm_config doesn't support interface library | ||||
|     add_library(_dummy_lib SHARED EXCLUDE_FROM_ALL src/yuzu/main.cpp) | ||||
|     llvm_config(_dummy_lib USE_SHARED demangle) | ||||
|     get_target_property(LLVM_LIBRARIES _dummy_lib LINK_LIBRARIES) | ||||
|     target_link_libraries(LLVM::Demangle INTERFACE ${LLVM_LIBRARIES}) | ||||
| endif() | ||||
|  | ||||
| @ -6,13 +6,23 @@ include(FindPackageHandleStandardArgs) | ||||
| 
 | ||||
| find_package(httplib QUIET CONFIG) | ||||
| if (httplib_CONSIDERED_CONFIGS) | ||||
|     find_package_handle_standard_args(httplib CONFIG_MODE) | ||||
|     find_package_handle_standard_args(httplib HANDLE_COMPONENTS CONFIG_MODE) | ||||
| else() | ||||
|     find_package(PkgConfig QUIET) | ||||
|     pkg_search_module(HTTPLIB QUIET IMPORTED_TARGET cpp-httplib) | ||||
|     if ("-DCPPHTTPLIB_OPENSSL_SUPPORT" IN_LIST HTTPLIB_CFLAGS_OTHER) | ||||
|         set(httplib_OpenSSL_FOUND TRUE) | ||||
|     endif() | ||||
|     if ("-DCPPHTTPLIB_ZLIB_SUPPORT" IN_LIST HTTPLIB_CFLAGS_OTHER) | ||||
|         set(httplib_ZLIB_FOUND TRUE) | ||||
|     endif() | ||||
|     if ("-DCPPHTTPLIB_BROTLI_SUPPORT" IN_LIST HTTPLIB_CFLAGS_OTHER) | ||||
|         set(httplib_Brotli_FOUND TRUE) | ||||
|     endif() | ||||
|     find_package_handle_standard_args(httplib | ||||
|         REQUIRED_VARS HTTPLIB_INCLUDEDIR | ||||
|         VERSION_VAR HTTPLIB_VERSION | ||||
|         HANDLE_COMPONENTS | ||||
|     ) | ||||
| endif() | ||||
| 
 | ||||
|  | ||||
| @ -3,14 +3,25 @@ | ||||
| # SPDX-License-Identifier: GPL-3.0-or-later | ||||
| 
 | ||||
| find_package(PkgConfig QUIET) | ||||
| pkg_search_module(INIH QUIET IMPORTED_TARGET inih) | ||||
| if (INIReader IN_LIST inih_FIND_COMPONENTS) | ||||
|     pkg_search_module(INIREADER QUIET IMPORTED_TARGET INIReader) | ||||
|     if (INIREADER_FOUND) | ||||
|         set(inih_INIReader_FOUND TRUE) | ||||
|     endif() | ||||
| endif() | ||||
| 
 | ||||
| include(FindPackageHandleStandardArgs) | ||||
| find_package_handle_standard_args(inih | ||||
|     REQUIRED_VARS INIREADER_LINK_LIBRARIES | ||||
|     VERSION_VAR INIREADER_VERSION | ||||
|     REQUIRED_VARS INIH_LINK_LIBRARIES | ||||
|     VERSION_VAR INIH_VERSION | ||||
|     HANDLE_COMPONENTS | ||||
| ) | ||||
| 
 | ||||
| if (inih_FOUND AND NOT TARGET inih::INIReader) | ||||
| if (inih_FOUND AND NOT TARGET inih::inih) | ||||
|     add_library(inih::inih ALIAS PkgConfig::INIH) | ||||
| endif() | ||||
| 
 | ||||
| if (inih_FOUND AND inih_INIReader_FOUND AND NOT TARGET inih::INIReader) | ||||
|     add_library(inih::INIReader ALIAS PkgConfig::INIREADER) | ||||
| endif() | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user