mirror of
https://github.com/stenzek/duckstation.git
synced 2025-06-06 03:25:36 +00:00
CMake: Use upstream-compatible Findzstd
This commit is contained in:
parent
876b80ccd2
commit
bd558efaaa
@ -10,7 +10,7 @@ set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|||||||
find_package(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
|
|
||||||
find_package(SDL3 3.2.0 REQUIRED)
|
find_package(SDL3 3.2.0 REQUIRED)
|
||||||
find_package(Zstd 1.5.6 REQUIRED)
|
find_package(zstd 1.5.6 REQUIRED)
|
||||||
find_package(WebP REQUIRED) # v1.4.0, spews an error on Linux because no pkg-config.
|
find_package(WebP REQUIRED) # v1.4.0, spews an error on Linux because no pkg-config.
|
||||||
find_package(ZLIB REQUIRED) # 1.3, but Mac currently doesn't use it.
|
find_package(ZLIB REQUIRED) # 1.3, but Mac currently doesn't use it.
|
||||||
find_package(PNG 1.6.40 REQUIRED)
|
find_package(PNG 1.6.40 REQUIRED)
|
||||||
|
@ -1,45 +0,0 @@
|
|||||||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
#
|
|
||||||
# - Try to find Facebook zstd library
|
|
||||||
# This will define
|
|
||||||
# Zstd_FOUND
|
|
||||||
# Zstd_INCLUDE_DIR
|
|
||||||
# Zstd_LIBRARY
|
|
||||||
#
|
|
||||||
|
|
||||||
find_path(Zstd_INCLUDE_DIR NAMES zstd.h)
|
|
||||||
|
|
||||||
find_library(Zstd_LIBRARY_DEBUG NAMES zstdd zstd_staticd)
|
|
||||||
find_library(Zstd_LIBRARY_RELEASE NAMES zstd zstd_static)
|
|
||||||
|
|
||||||
include(SelectLibraryConfigurations)
|
|
||||||
SELECT_LIBRARY_CONFIGURATIONS(Zstd)
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
|
|
||||||
Zstd DEFAULT_MSG
|
|
||||||
Zstd_LIBRARY Zstd_INCLUDE_DIR
|
|
||||||
)
|
|
||||||
|
|
||||||
mark_as_advanced(Zstd_INCLUDE_DIR Zstd_LIBRARY)
|
|
||||||
|
|
||||||
if(Zstd_FOUND AND NOT (TARGET Zstd::Zstd))
|
|
||||||
add_library (Zstd::Zstd UNKNOWN IMPORTED)
|
|
||||||
set_target_properties(Zstd::Zstd
|
|
||||||
PROPERTIES
|
|
||||||
IMPORTED_LOCATION ${Zstd_LIBRARY}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES ${Zstd_INCLUDE_DIR})
|
|
||||||
endif()
|
|
186
CMakeModules/Findzstd.cmake
Normal file
186
CMakeModules/Findzstd.cmake
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
# Copyright (C) 2020 Dieter Baron and Thomas Klausner
|
||||||
|
#
|
||||||
|
# The authors can be contacted at <info@libzip.org>
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in
|
||||||
|
# the documentation and/or other materials provided with the
|
||||||
|
# distribution.
|
||||||
|
#
|
||||||
|
# 3. The names of the authors may not be used to endorse or promote
|
||||||
|
# products derived from this software without specific prior
|
||||||
|
# written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
|
||||||
|
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
|
||||||
|
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||||
|
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||||
|
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||||
|
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||||
|
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
#[=======================================================================[.rst:
|
||||||
|
Findzstd
|
||||||
|
-------
|
||||||
|
|
||||||
|
Finds the Zstandard (zstd) library.
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module provides the following imported targets, if found:
|
||||||
|
|
||||||
|
``zstd::libzstd_shared``
|
||||||
|
The shared Zstandard library
|
||||||
|
``zstd::libzstd_static``
|
||||||
|
The shared Zstandard library
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This will define the following variables:
|
||||||
|
|
||||||
|
``zstd_FOUND``
|
||||||
|
True if the system has the Zstandard library.
|
||||||
|
``zstd_VERSION``
|
||||||
|
The version of the Zstandard library which was found.
|
||||||
|
|
||||||
|
Cache Variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``zstd_INCLUDE_DIR``
|
||||||
|
The directory containing ``zstd.h``.
|
||||||
|
``zstd_STATIC_LIBRARY``
|
||||||
|
The path to the Zstandard static library.
|
||||||
|
``zstd_SHARED_LIBRARY``
|
||||||
|
The path to the Zstandard shared library.
|
||||||
|
``zstd_DLL``
|
||||||
|
The path to the Zstandard DLL.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
find_package(PkgConfig)
|
||||||
|
pkg_check_modules(PC_zstd QUIET libzstd)
|
||||||
|
|
||||||
|
find_path(zstd_INCLUDE_DIR
|
||||||
|
NAMES zstd.h
|
||||||
|
HINTS ${PC_zstd_INCLUDE_DIRS}
|
||||||
|
)
|
||||||
|
|
||||||
|
find_file(zstd_DLL
|
||||||
|
NAMES libzstd.dll zstd.dll
|
||||||
|
PATH_SUFFIXES bin
|
||||||
|
HINTS ${PC_zstd_PREFIX}
|
||||||
|
)
|
||||||
|
|
||||||
|
# On Windows, we manually define the library names to avoid mistaking the
|
||||||
|
# implib for the static library
|
||||||
|
if(zstd_DLL)
|
||||||
|
set(_zstd_win_static_name zstd-static)
|
||||||
|
set(_zstd_win_shared_name zstd)
|
||||||
|
else()
|
||||||
|
# vcpkg removes the -static suffix in static builds
|
||||||
|
set(_zstd_win_static_name zstd zstd_static)
|
||||||
|
set(_zstd_win_shared_name)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(_previous_suffixes ${CMAKE_FIND_LIBRARY_SUFFIXES})
|
||||||
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".dylib" ".dll.a" ".lib")
|
||||||
|
find_library(zstd_SHARED_LIBRARY
|
||||||
|
NAMES zstd ${_zstd_win_shared_name}
|
||||||
|
HINTS ${PC_zstd_LIBDIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".lib")
|
||||||
|
find_library(zstd_STATIC_LIBRARY
|
||||||
|
NAMES zstd ${_zstd_win_static_name}
|
||||||
|
HINTS ${PC_zstd_LIBDIR}
|
||||||
|
)
|
||||||
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ${_previous_suffixes})
|
||||||
|
|
||||||
|
# Set zstd_LIBRARY to the shared library or fall back to the static library
|
||||||
|
if(zstd_SHARED_LIBRARY)
|
||||||
|
set(_zstd_LIBRARY ${zstd_SHARED_LIBRARY})
|
||||||
|
else()
|
||||||
|
set(_zstd_LIBRARY ${zstd_STATIC_LIBRARY})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Extract version information from the header file
|
||||||
|
if(zstd_INCLUDE_DIR)
|
||||||
|
file(STRINGS ${zstd_INCLUDE_DIR}/zstd.h _ver_major_line
|
||||||
|
REGEX "^#define ZSTD_VERSION_MAJOR *[0-9]+"
|
||||||
|
LIMIT_COUNT 1)
|
||||||
|
string(REGEX MATCH "[0-9]+"
|
||||||
|
zstd_MAJOR_VERSION "${_ver_major_line}")
|
||||||
|
file(STRINGS ${zstd_INCLUDE_DIR}/zstd.h _ver_minor_line
|
||||||
|
REGEX "^#define ZSTD_VERSION_MINOR *[0-9]+"
|
||||||
|
LIMIT_COUNT 1)
|
||||||
|
string(REGEX MATCH "[0-9]+"
|
||||||
|
zstd_MINOR_VERSION "${_ver_minor_line}")
|
||||||
|
file(STRINGS ${zstd_INCLUDE_DIR}/zstd.h _ver_release_line
|
||||||
|
REGEX "^#define ZSTD_VERSION_RELEASE *[0-9]+"
|
||||||
|
LIMIT_COUNT 1)
|
||||||
|
string(REGEX MATCH "[0-9]+"
|
||||||
|
zstd_RELEASE_VERSION "${_ver_release_line}")
|
||||||
|
set(Zstd_VERSION "${zstd_MAJOR_VERSION}.${zstd_MINOR_VERSION}.${zstd_RELEASE_VERSION}")
|
||||||
|
unset(_ver_major_line)
|
||||||
|
unset(_ver_minor_line)
|
||||||
|
unset(_ver_release_line)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(zstd
|
||||||
|
FOUND_VAR zstd_FOUND
|
||||||
|
REQUIRED_VARS
|
||||||
|
_zstd_LIBRARY
|
||||||
|
zstd_INCLUDE_DIR
|
||||||
|
VERSION_VAR zstd_VERSION
|
||||||
|
)
|
||||||
|
|
||||||
|
if(zstd_FOUND AND zstd_SHARED_LIBRARY AND NOT TARGET zstd::libzstd_shared)
|
||||||
|
add_library(zstd::libzstd_shared SHARED IMPORTED)
|
||||||
|
if(WIN32)
|
||||||
|
set_target_properties(zstd::libzstd_shared PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${zstd_DLL}"
|
||||||
|
IMPORTED_IMPLIB "${zstd_SHARED_LIBRARY}"
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
set_target_properties(zstd::libzstd_shared PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${zstd_SHARED_LIBRARY}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(zstd::libzstd_shared PROPERTIES
|
||||||
|
INTERFACE_COMPILE_OPTIONS "${PC_zstd_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${zstd_INCLUDE_DIR}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(zstd_FOUND AND zstd_STATIC_LIBRARY AND NOT TARGET zstd::libzstd_static)
|
||||||
|
add_library(zstd::libzstd_static STATIC IMPORTED)
|
||||||
|
set_target_properties(zstd::libzstd_static PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${zstd_STATIC_LIBRARY}"
|
||||||
|
INTERFACE_COMPILE_OPTIONS "${PC_zstd_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${zstd_INCLUDE_DIR}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
mark_as_advanced(
|
||||||
|
zstd_INCLUDE_DIR
|
||||||
|
zstd_DLL
|
||||||
|
zstd_SHARED_LIBRARY
|
||||||
|
zstd_STATIC_LIBRARY
|
||||||
|
)
|
@ -15,5 +15,5 @@ add_library(libchdr
|
|||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(libchdr PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
|
target_include_directories(libchdr PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
|
||||||
target_link_libraries(libchdr PRIVATE ZLIB::ZLIB Zstd::Zstd lzma)
|
target_link_libraries(libchdr PRIVATE ZLIB::ZLIB zstd::libzstd_shared lzma)
|
||||||
|
|
||||||
|
@ -142,7 +142,7 @@ target_precompile_headers(core PRIVATE "pch.h")
|
|||||||
target_include_directories(core PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/..")
|
target_include_directories(core PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/..")
|
||||||
target_include_directories(core PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/..")
|
target_include_directories(core PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/..")
|
||||||
target_link_libraries(core PUBLIC Threads::Threads common util)
|
target_link_libraries(core PUBLIC Threads::Threads common util)
|
||||||
target_link_libraries(core PRIVATE xxhash imgui rapidyaml rcheevos cpuinfo::cpuinfo ZLIB::ZLIB Zstd::Zstd libzip::zip)
|
target_link_libraries(core PRIVATE xxhash imgui rapidyaml rcheevos cpuinfo::cpuinfo ZLIB::ZLIB zstd::libzstd_shared libzip::zip)
|
||||||
|
|
||||||
if(CPU_ARCH_X64)
|
if(CPU_ARCH_X64)
|
||||||
target_compile_definitions(core PUBLIC "ENABLE_RECOMPILER=1" "ENABLE_MMAP_FASTMEM=1")
|
target_compile_definitions(core PUBLIC "ENABLE_RECOMPILER=1" "ENABLE_MMAP_FASTMEM=1")
|
||||||
|
@ -77,7 +77,7 @@ target_precompile_headers(util PRIVATE "pch.h")
|
|||||||
target_include_directories(util PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/..")
|
target_include_directories(util PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/..")
|
||||||
target_include_directories(util PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/..")
|
target_include_directories(util PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/..")
|
||||||
target_link_libraries(util PUBLIC common simpleini imgui)
|
target_link_libraries(util PUBLIC common simpleini imgui)
|
||||||
target_link_libraries(util PRIVATE libchdr lzma JPEG::JPEG PNG::PNG WebP::libwebp plutosvg::plutosvg ZLIB::ZLIB SoundTouch::SoundTouchDLL xxhash Zstd::Zstd reshadefx)
|
target_link_libraries(util PRIVATE libchdr lzma JPEG::JPEG PNG::PNG WebP::libwebp plutosvg::plutosvg ZLIB::ZLIB SoundTouch::SoundTouchDLL xxhash zstd::libzstd_shared reshadefx)
|
||||||
|
|
||||||
if(ENABLE_X11)
|
if(ENABLE_X11)
|
||||||
target_sources(util PRIVATE
|
target_sources(util PRIVATE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user