From f4764973339c3abc670f37dc5efd4acff110b9e8 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Thu, 8 Oct 2026 21:16:53 +0100 Subject: [PATCH] Enable multithreading. --- 3rdparty/lzma.cmake | 2 +- 3rdparty/zstd.cmake | 8 ++------ CMakeLists.txt | 16 +++++++--------- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/3rdparty/lzma.cmake b/3rdparty/lzma.cmake index 6f0f78b..b9e3799 100644 --- a/3rdparty/lzma.cmake +++ b/3rdparty/lzma.cmake @@ -95,7 +95,7 @@ target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/LzmaEnc.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Lzma86Dec.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Lzma86Enc.c) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Lzma2Dec.c) -#target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Lzma2DecMt.c) +target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Lzma2DecMt.c) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Lzma2Enc.c) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/LzmaLib.c) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/MtCoder.c) diff --git a/3rdparty/zstd.cmake b/3rdparty/zstd.cmake index 27ca9e3..54d199f 100644 --- a/3rdparty/zstd.cmake +++ b/3rdparty/zstd.cmake @@ -177,12 +177,8 @@ else() add_definitions(-DZSTD_LEGACY_SUPPORT=0) endif() -# Multi-threading support -if(ANDROID) - option(ZSTD_MULTITHREAD_SUPPORT "MULTITHREADING SUPPORT" OFF) -else() - option(ZSTD_MULTITHREAD_SUPPORT "MULTITHREADING SUPPORT" ON) -endif() +# Multi-threading support (Android's bionic provides pthreads in libc) +option(ZSTD_MULTITHREAD_SUPPORT "MULTITHREADING SUPPORT" ON) #----------------------------------------------------------------------------- # External dependencies diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ff17ea..7ce0199 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -308,18 +308,16 @@ target_link_libraries_whole_archive("Aaru.Compression.Native" libzstd_static lz4 # Add LZO include directories for library.c to resolve includes target_include_directories("Aaru.Compression.Native" PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/lzo-2.10/include) -check_include_file("semaphore.h" HAVE_SEMAPHORE_H) - -if(HAVE_SEMAPHORE_H) - set(CMAKE_THREAD_PREFER_PTHREAD TRUE) - set(THREADS_PREFER_PTHREAD_FLAG TRUE) +# LZMA SDK and Zstandard are built multithreaded: they use Win32 threads on Windows and pthreads elsewhere +set(CMAKE_THREAD_PREFER_PTHREAD TRUE) +set(THREADS_PREFER_PTHREAD_FLAG TRUE) +if(WIN32) find_package(Threads) - if(CMAKE_USE_PTHREADS_INIT) - set(HAVE_PTHREAD 1) - endif() +else() + find_package(Threads REQUIRED) endif() -if(HAVE_PTHREAD) +if(Threads_FOUND) target_link_libraries_whole_archive("Aaru.Compression.Native" Threads::Threads) endif()