Support build on MSYS2
This commit is contained in:
36
.github/workflows/test-msys2.yaml
vendored
Normal file
36
.github/workflows/test-msys2.yaml
vendored
Normal file
@ -0,0 +1,36 @@
|
||||
name: Run tests on Windows
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
IMAGE_MAGICK_LIBS: "MagickCore-7.Q16HDRI;MagickWand-7.Q16HDRI"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Install dependencies
|
||||
shell: C:\msys64\usr\bin\bash.exe --login '{0}'
|
||||
run: |
|
||||
export PATH="/mingw64/bin:$PATH"
|
||||
pacman --noconfirm -S mingw-w64-x86_64-imagemagick mingw-w64-x86_64-pkg-config
|
||||
cd /mingw64/lib
|
||||
mv libMagickCore-7.Q16HDRI.dll.a MagickCore-7.Q16HDRI.lib
|
||||
mv libMagickWand-7.Q16HDRI.dll.a MagickWand-7.Q16HDRI.lib
|
||||
|
||||
- name: Set environment variables
|
||||
shell: C:\msys64\usr\bin\bash.exe --login '{0}'
|
||||
run: |
|
||||
export PATH="/mingw64/bin:$PATH"
|
||||
echo "BINDGEN_EXTRA_CLANG_ARGS=$(MagickCore-config --cppflags)" >> $GITHUB_ENV
|
||||
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
cache-on-failure: true
|
||||
- name: Test
|
||||
run: |
|
||||
echo $env:BINDGEN_EXTRA_CLANG_ARGS
|
||||
$env:PATH = "C:\msys64\mingw64\bin;C:\msys64\usr\bin;$env:PATH"
|
||||
cargo test test_new_drop -- --nocapture
|
||||
26
build.rs
26
build.rs
@ -26,6 +26,19 @@ use std::process::Command;
|
||||
const MIN_VERSION: &str = "7.0";
|
||||
const MAX_VERSION: &str = "7.2";
|
||||
|
||||
#[cfg(windows)]
|
||||
static HEADER: &str = r#"
|
||||
#if !defined(ssize_t) && !defined(__MINGW32__)
|
||||
#if defined(_WIN64)
|
||||
typedef __int64 ssize_t;
|
||||
#else
|
||||
typedef long ssize_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <MagickWand/MagickWand.h>
|
||||
"#;
|
||||
#[cfg(not(windows))]
|
||||
static HEADER: &str = "#include <MagickWand/MagickWand.h>\n";
|
||||
|
||||
//on windows path env always contain : like c:
|
||||
@ -35,7 +48,18 @@ pub const PATH_SEPARATOR: &str = match cfg!(target_os = "windows") {
|
||||
};
|
||||
|
||||
fn main() {
|
||||
let check_cppflags = Command::new("MagickCore-config").arg("--cppflags").output();
|
||||
let check_cppflags = if cfg!(target_os = "windows") {
|
||||
// Resolve bash from directories listed in the PATH environment variable in the
|
||||
// order they appear.
|
||||
Command::new("cmd")
|
||||
.arg("/C")
|
||||
.arg("bash")
|
||||
.arg("MagickCore-config")
|
||||
.arg("--cppflags")
|
||||
.output()
|
||||
} else {
|
||||
Command::new("MagickCore-config").arg("--cppflags").output()
|
||||
};
|
||||
if let Ok(ok_cppflags) = check_cppflags {
|
||||
let cppflags = ok_cppflags.stdout;
|
||||
let cppflags = String::from_utf8(cppflags).unwrap();
|
||||
|
||||
Reference in New Issue
Block a user