aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann Collet <Cyan4973@users.noreply.github.com>2024-04-20 20:25:19 -0700
committerGitHub <noreply@github.com>2024-04-20 20:25:19 -0700
commit1232d4c45d18f124e44fe382b11dee095566b610 (patch)
tree20c353f0a0ae7467ec9420ad7feb04bffcbeae9b
parentda797d0a4354108f396eb2858479de0704f740ab (diff)
parent5be2a8721d527ae349539b459b35fb628467e00d (diff)
downloadzstd-1232d4c45d18f124e44fe382b11dee095566b610.tar.gz
Merge pull request #3931 from bgilbert/pthread
meson: don't add `-pthread` to static linking flags on Windows
-rw-r--r--.github/workflows/dev-short-tests.yml44
-rw-r--r--build/meson/meson.build9
-rw-r--r--build/meson/meson_options.txt2
3 files changed, 52 insertions, 3 deletions
diff --git a/.github/workflows/dev-short-tests.yml b/.github/workflows/dev-short-tests.yml
index 5324b38d..b8afcb76 100644
--- a/.github/workflows/dev-short-tests.yml
+++ b/.github/workflows/dev-short-tests.yml
@@ -237,6 +237,50 @@ jobs:
meson test -C builddir/ --print-errorlogs
meson install -C builddir --destdir staging/
+ meson-mingw-cross-compilation:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
+ - name: Install packages
+ run: |
+ sudo apt-get -qqq update
+ sudo apt-get -y install build-essential python3-pip ninja-build {gcc,g++}-mingw-w64-x86-64
+ pip install --pre meson
+ - name: Build with Meson
+ run: |
+ cat > cross.ini <<EOF
+ [binaries]
+ ar = 'x86_64-w64-mingw32-ar'
+ c = 'x86_64-w64-mingw32-gcc'
+ cpp = 'x86_64-w64-mingw32-g++'
+ ld = 'x86_64-w64-mingw32-ld'
+ objcopy = 'x86_64-w64-mingw32-objcopy'
+ objdump = 'x86_64-w64-mingw32-objdump'
+ strip = 'x86_64-w64-mingw32-strip'
+ windres = 'x86_64-w64-mingw32-windres'
+
+ [host_machine]
+ system = 'windows'
+ endian = 'little'
+ cpu_family = 'x86_64'
+ cpu = 'x86_64'
+ EOF
+
+ # pzstd doesn't build; skip -Dbin_contrib=true
+ meson setup \
+ --buildtype=debugoptimized \
+ --cross-file=cross.ini \
+ -Db_lundef=false \
+ -Dbin_programs=true \
+ -Dbin_tests=true \
+ -Ddefault_library=both \
+ build/meson builddir
+ ninja -C builddir/
+ if grep -- -pthread builddir/meson-private/libzstd.pc; then
+ echo "Error: found stray pthread dependency"
+ exit 1
+ fi
+
meson-windows:
runs-on: windows-latest
steps:
diff --git a/build/meson/meson.build b/build/meson/meson.build
index 15c56c2b..7ddca2e7 100644
--- a/build/meson/meson.build
+++ b/build/meson/meson.build
@@ -88,8 +88,13 @@ feature_lz4 = get_option('lz4')
# =============================================================================
libm_dep = cc.find_library('m', required: false)
-thread_dep = dependency('threads', required: feature_multi_thread)
-use_multi_thread = thread_dep.found()
+if host_machine_os == os_windows
+ thread_dep = dependency('', required: false)
+ use_multi_thread = not feature_multi_thread.disabled()
+else
+ thread_dep = dependency('threads', required: feature_multi_thread)
+ use_multi_thread = thread_dep.found()
+endif
# Arguments in dependency should be equivalent to those passed to pkg-config
zlib_dep = dependency('zlib', required: feature_zlib)
use_zlib = zlib_dep.found()
diff --git a/build/meson/meson_options.txt b/build/meson/meson_options.txt
index f35cd5fc..47051782 100644
--- a/build/meson/meson_options.txt
+++ b/build/meson/meson_options.txt
@@ -27,7 +27,7 @@ option('bin_contrib', type: 'boolean', value: false,
description: 'Enable contrib build')
option('multi_thread', type: 'feature', value: 'enabled',
- description: 'Enable multi-threading when pthread is detected')
+ description: 'Enable multi-threading when pthread or Windows is detected')
option('zlib', type: 'feature', value: 'auto',
description: 'Enable zlib support')
option('lzma', type: 'feature', value: 'auto',