cmake: prefer system stb headers
This commit is contained in:
		@@ -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;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user