mirror of
				https://git.h3cjp.net/H3cJP/yuzu.git
				synced 2025-10-30 22:45:10 +00:00 
			
		
		
		
	cmake: prefer system stb headers
This commit is contained in:
		
							parent
							
								
									6eb3a583cb
								
							
						
					
					
						commit
						79ba5d9c26
					
				|  | @ -147,3 +147,7 @@ License: GPL-3.0-or-later | |||
| Files: src/android/gradle/wrapper/* | ||||
| Copyright: 2023 yuzu Emulator Project | ||||
| License: GPL-3.0-or-later | ||||
| 
 | ||||
| Files: externals/stb/* | ||||
| Copyright: Sean Barrett | ||||
| License: MIT | ||||
|  |  | |||
|  | @ -294,6 +294,7 @@ find_package(lz4 REQUIRED) | |||
| find_package(nlohmann_json 3.8 REQUIRED) | ||||
| find_package(Opus 1.3 MODULE) | ||||
| find_package(RenderDoc MODULE) | ||||
| find_package(stb MODULE) | ||||
| find_package(VulkanMemoryAllocator CONFIG) | ||||
| find_package(ZLIB 1.2 REQUIRED) | ||||
| find_package(zstd 1.5 REQUIRED) | ||||
|  |  | |||
							
								
								
									
										31
									
								
								CMakeModules/Findstb.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								CMakeModules/Findstb.cmake
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | |||
| # SPDX-FileCopyrightText: 2023 Alexandre Bouvier <contact@amb.tf> | ||||
| # | ||||
| # SPDX-License-Identifier: GPL-3.0-or-later | ||||
| 
 | ||||
| find_path(stb_image_INCLUDE_DIR stb_image.h PATH_SUFFIXES stb) | ||||
| find_path(stb_image_resize_INCLUDE_DIR stb_image_resize.h PATH_SUFFIXES stb) | ||||
| find_path(stb_image_write_INCLUDE_DIR stb_image_write.h PATH_SUFFIXES stb) | ||||
| 
 | ||||
| include(FindPackageHandleStandardArgs) | ||||
| find_package_handle_standard_args(stb | ||||
|     REQUIRED_VARS | ||||
|         stb_image_INCLUDE_DIR | ||||
|         stb_image_resize_INCLUDE_DIR | ||||
|         stb_image_write_INCLUDE_DIR | ||||
| ) | ||||
| 
 | ||||
| if (stb_FOUND AND NOT TARGET stb::headers) | ||||
|     add_library(stb::headers INTERFACE IMPORTED) | ||||
|     set_property(TARGET stb::headers PROPERTY | ||||
|         INTERFACE_INCLUDE_DIRECTORIES | ||||
|             "${stb_image_INCLUDE_DIR}" | ||||
|             "${stb_image_resize_INCLUDE_DIR}" | ||||
|             "${stb_image_write_INCLUDE_DIR}" | ||||
|     ) | ||||
| endif() | ||||
| 
 | ||||
| mark_as_advanced( | ||||
|     stb_image_INCLUDE_DIR | ||||
|     stb_image_resize_INCLUDE_DIR | ||||
|     stb_image_write_INCLUDE_DIR | ||||
| ) | ||||
							
								
								
									
										6
									
								
								externals/CMakeLists.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								externals/CMakeLists.txt
									
									
									
									
										vendored
									
									
								
							|  | @ -168,9 +168,13 @@ if (NOT TARGET LLVM::Demangle) | |||
|     add_library(LLVM::Demangle ALIAS demangle) | ||||
| endif() | ||||
| 
 | ||||
| add_library(stb stb/stb_dxt.cpp stb/stb_image.cpp stb/stb_image_resize.cpp stb/stb_image_write.cpp) | ||||
| add_library(stb stb/stb_dxt.cpp) | ||||
| target_include_directories(stb PUBLIC ./stb) | ||||
| 
 | ||||
| if (NOT TARGET stb::headers) | ||||
|     add_library(stb::headers ALIAS stb) | ||||
| endif() | ||||
| 
 | ||||
| add_library(bc_decoder bc_decoder/bc_decoder.cpp) | ||||
| target_include_directories(bc_decoder PUBLIC ./bc_decoder) | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										7529
									
								
								externals/stb/stb_image.cpp
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7529
									
								
								externals/stb/stb_image.cpp
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										7221
									
								
								externals/stb/stb_image.h
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7221
									
								
								externals/stb/stb_image.h
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										2282
									
								
								externals/stb/stb_image_resize.cpp
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2282
									
								
								externals/stb/stb_image_resize.cpp
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										2214
									
								
								externals/stb/stb_image_resize.h
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2214
									
								
								externals/stb/stb_image_resize.h
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										1677
									
								
								externals/stb/stb_image_write.cpp
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1677
									
								
								externals/stb/stb_image_write.cpp
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										1435
									
								
								externals/stb/stb_image_write.h
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1435
									
								
								externals/stb/stb_image_write.h
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -120,6 +120,8 @@ add_library(common STATIC | |||
|     socket_types.h | ||||
|     spin_lock.cpp | ||||
|     spin_lock.h | ||||
|     stb.cpp | ||||
|     stb.h | ||||
|     steady_clock.cpp | ||||
|     steady_clock.h | ||||
|     stream.cpp | ||||
|  | @ -208,6 +210,8 @@ if (MSVC) | |||
|     /we4254 # 'operator': conversion from 'type1:field_bits' to 'type2:field_bits', possible loss of data | ||||
|     /we4800 # Implicit conversion from 'type' to bool. Possible information loss | ||||
|   ) | ||||
| else() | ||||
|   set_source_files_properties(stb.cpp PROPERTIES COMPILE_OPTIONS "-Wno-implicit-fallthrough;-Wno-missing-declarations;-Wno-missing-field-initializers") | ||||
| endif() | ||||
| 
 | ||||
| if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") | ||||
|  | @ -223,7 +227,7 @@ endif() | |||
| 
 | ||||
| create_target_directory_groups(common) | ||||
| 
 | ||||
| target_link_libraries(common PUBLIC Boost::context Boost::headers fmt::fmt microprofile Threads::Threads) | ||||
| target_link_libraries(common PUBLIC Boost::context Boost::headers fmt::fmt microprofile stb::headers Threads::Threads) | ||||
| target_link_libraries(common PRIVATE lz4::lz4 zstd::zstd LLVM::Demangle) | ||||
| 
 | ||||
| if (ANDROID) | ||||
|  |  | |||
							
								
								
									
										8
									
								
								src/common/stb.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/common/stb.cpp
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | |||
| // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
 | ||||
| // SPDX-License-Identifier: GPL-2.0-or-later
 | ||||
| 
 | ||||
| #define STB_IMAGE_IMPLEMENTATION | ||||
| #define STB_IMAGE_RESIZE_IMPLEMENTATION | ||||
| #define STB_IMAGE_WRITE_IMPLEMENTATION | ||||
| 
 | ||||
| #include "common/stb.h" | ||||
							
								
								
									
										8
									
								
								src/common/stb.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/common/stb.h
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | |||
| // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
 | ||||
| // SPDX-License-Identifier: GPL-2.0-or-later
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include <stb_image.h> | ||||
| #include <stb_image_resize.h> | ||||
| #include <stb_image_write.h> | ||||
|  | @ -2,13 +2,11 @@ | |||
| // SPDX-License-Identifier: GPL-2.0-or-later
 | ||||
| 
 | ||||
| #include <sstream> | ||||
| #include <stb_image.h> | ||||
| #include <stb_image_resize.h> | ||||
| #include <stb_image_write.h> | ||||
| 
 | ||||
| #include "common/fs/file.h" | ||||
| #include "common/fs/path_util.h" | ||||
| #include "common/logging/log.h" | ||||
| #include "common/stb.h" | ||||
| #include "core/core.h" | ||||
| #include "core/hle/service/caps/caps_manager.h" | ||||
| #include "core/hle/service/caps/caps_result.h" | ||||
|  | @ -409,6 +407,12 @@ Result AlbumManager::LoadImage(std::span<u8> out_image, const std::filesystem::p | |||
|     return ResultSuccess; | ||||
| } | ||||
| 
 | ||||
| static void PNGToMemory(void* context, void* png, int len) { | ||||
|     std::vector<u8>* png_image = static_cast<std::vector<u8>*>(context); | ||||
|     png_image->reserve(len); | ||||
|     std::memcpy(png_image->data(), png, len); | ||||
| } | ||||
| 
 | ||||
| Result AlbumManager::SaveImage(ApplicationAlbumEntry& out_entry, std::span<const u8> image, | ||||
|                                u64 title_id, const AlbumFileDateTime& date) const { | ||||
|     const auto screenshot_path = | ||||
|  | @ -422,16 +426,12 @@ Result AlbumManager::SaveImage(ApplicationAlbumEntry& out_entry, std::span<const | |||
|     const Common::FS::IOFile db_file{file_path, Common::FS::FileAccessMode::Write, | ||||
|                                      Common::FS::FileType::BinaryFile}; | ||||
| 
 | ||||
|     s32 len; | ||||
|     const u8* png = stbi_write_png_to_mem(image.data(), 0, 1280, 720, STBI_rgb_alpha, &len); | ||||
| 
 | ||||
|     if (!png) { | ||||
|     std::vector<u8> png_image; | ||||
|     if (!stbi_write_png_to_func(PNGToMemory, &png_image, 1280, 720, STBI_rgb_alpha, image.data(), | ||||
|                                 0)) { | ||||
|         return ResultFileCountLimit; | ||||
|     } | ||||
| 
 | ||||
|     std::vector<u8> png_image(len); | ||||
|     std::memcpy(png_image.data(), png, len); | ||||
| 
 | ||||
|     if (db_file.Write(png_image) != png_image.size()) { | ||||
|         return ResultFileCountLimit; | ||||
|     } | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue