Skip to content

Add libraries for mingw/GNU ABI rust #62

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 27, 2022

Conversation

KoviRobi
Copy link

@KoviRobi KoviRobi commented Nov 25, 2022

Otherwise you have

    $ cargo b -F static --target x86_64-pc-windows-gnu
       Compiling libftd2xx-ffi v0.8.5 (.../libftd2xx-ffi)
       Compiling cfg-if v1.0.0
    error: could not find native static library `ftd2xx`, perhaps an -L flag is missing?

    error: could not compile `libftd2xx-ffi` due to previous error

Created with gendef from mingw-w64-v10.0.0/mingw-w64-tools/gendef and x86_64-w64-mingw32-dlltool from mingw-w64 bintools

    $ gendef ftd2xx64.dll
    $ x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k --output-lib libftd2xx.a --input-def ftd2xx64.def

See
https://sourceforge.net/p/mingw-w64/wiki2/Answer%20generation%20of%20DLL%20import%20library/ https://stackoverflow.com/questions/11793370/how-can-i-convert-a-vsts-lib-to-a-mingw-a

I tried the 32-bit version equivalent too, but I didn't succeed

    $ gendef ftd2xx.dll
    $ i686-w64-mingw32-dlltool --as-flags=--32 -m i386 -k --output-lib libftd2xx.a --input-def ftd2xx.def

It gives me

    error: linking with `i686-w64-mingw32-gcc` failed: exit status: 1
      |
      = note: "i686-w64-mingw32-gcc" "-fno-use-linker-plugin" "-Wl,--dynamicbase" "-Wl,--disable-auto-image-base" "-Wl,--large-address-aware" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/rsbegin.o" "/tmp/rustcNwn5XD/symbols.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.18cg3lkp0ox1niuz.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.1a2yb283fvmix7mn.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.1e6b4s8dc47pgda7.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.1g2e0d2si4w606bh.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.1y4iskyzv8rvw0fd.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.26y00rqklyxqv569.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.2cbu41u1qakbf0jd.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.2fhfkki64esteo6x.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.2gwzznyo0iuxm3wf.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.2i7rmgcexbfz1zbx.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.2rl400t7pxm9ryzu.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.2td98tvuo3ap4yki.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.2x5zgaz88zb4530w.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.2zyv1orloclxdbf5.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.34vekv9ch94uihc.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.39manho08t3o4ig9.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.3bxk0mj2bxgoiege.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.3cyh60cp98vpslv7.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.3dru9xt795zfm9o2.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.3q3ihisxs3eb1ufp.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.3v7ew6btgq0qb55s.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.3zsoj7qmlv65ukgq.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.405d79q5orop9n9f.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.42mujrqwnp2dketl.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.48sp8gl7ynzj58fa.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.49r00ed522v71quo.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.49sj6op9sy9cxf8x.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.4al5pxycywsk0r35.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.4drxnj1ihexiyh4y.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.4qb6ne4le4sodg6l.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.4yxh9fdiduhzrnhp.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.5ciq4l067i542igs.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.5dk52pt7ivjtpn35.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.5lfmu9neb1og9hr.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.dh46i7anenqsb41.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.duvhpxi35c0zas9.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.vai1lf8dg2yvems.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.3bzsz1alnipn5jco.rcgu.o" "-L" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps" "-L" "/tmp/ftdi-windows-gnu-test/target/debug/deps" "-L" "/tmp/libftd2xx-ffi/vendor/windows/Static/i386" "-L" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib" "-Wl,-Bstatic" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/libftdi_embedded_hal-b57f9fb3ed8fda18.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/libembedded_hal_nb-a4b9cafa7e768cb4.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblibftd2xx-dac11a9d0beb7d30.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblog-077be3fa69b6c72f.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblibftd2xx_ffi-65280a271df0bbb3.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/libcfg_if-fa56bff161aa35e8.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/libftdi_mpsse-162b893530c114d6.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/libembedded_hal-852d0fb8c1e08e96.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/libvoid-4aecd2516e24c3cf.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/libnb-1ff1d3a2dfea8ecd.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/libnb-baa01238a52332c0.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/libembedded_hal-92b0fcf6cbbfcf9b.rlib" "-Wl,--start-group" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libstd-15fb4244ba810ccb.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libpanic_unwind-fb1ba884424b1391.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libobject-a2f75630be61a1e7.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libmemchr-84adb6c2964e7238.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libaddr2line-11c26fff489a4c72.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libgimli-883137f4a16c8383.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/librustc_demangle-24d2250a58f0df34.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libstd_detect-03be0bc4a5c39a79.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libhashbrown-14bef48cbad7c84a.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libminiz_oxide-b4535c8397a6efb7.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libadler-32e0c526c8215fa3.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/librustc_std_workspace_alloc-11a8dcc034680bbe.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libunwind-0167b182a8481682.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libcfg_if-25b318fc6b8592ec.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/liblibc-ca57748d8a80220e.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/liballoc-96618852d32fbf17.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/librustc_std_workspace_core-fea03c05f48b5e1d.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libcore-f3dc9a5bac545e0e.rlib" "-Wl,--end-group" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libcompiler_builtins-efe19633a174deab.rlib" "-Wl,-Bdynamic" "-ladvapi32" "-luserenv" "-lkernel32" "-lws2_32" "-lbcrypt" "-lgcc_eh" "-l:libpthread.a" "-lmsvcrt" "-lmingwex" "-lmingw32" "-lgcc" "-lmsvcrt" "-luser32" "-lkernel32" "-Wl,--nxcompat" "-L" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib" "-o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.exe" "-Wl,--gc-sections" "-no-pie" "-nodefaultlibs" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/rsend.o"
      = note: /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.1a2yb283fvmix7mn.rcgu.o: in function `ZN17ftdi_embedded_hal4gpio22InputPin$LT$Device$GT$3get17h2a83f20a4748ea96E':
              /home/rmk/.cargo/git/checkouts/ftdi-embedded-hal-2b2b820a903ffac1/1770d4c/src/gpio.rs:146: undefined reference to `_Unwind_Resume'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.1a2yb283fvmix7mn.rcgu.o: in function `ZN17ftdi_embedded_hal4gpio22InputPin$LT$Device$GT$3new17hc67119f1ba367a76E':
              /home/rmk/.cargo/git/checkouts/ftdi-embedded-hal-2b2b820a903ffac1/1770d4c/src/gpio.rs:129: undefined reference to `_Unwind_Resume'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.1e6b4s8dc47pgda7.rcgu.o: in function `ZN3std4sync5mutex14Mutex$LT$T$GT$3new17h8ce196903131195eE':
              /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52\library\std\src\sync\mutex.rs:218: undefined reference to `_Unwind_Resume'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.1g2e0d2si4w606bh.rcgu.o: in function `ZN4core3ops8function6FnOnce9call_once17he1af58539747a1f3E':
              /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52\library\core\src\ops\function.rs:248: undefined reference to `_Unwind_Resume'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.1y4iskyzv8rvw0fd.rcgu.o: in function `ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h00341bd542258844E':
              /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52\library\std\src\sys_common\backtrace.rs:118: undefined reference to `_Unwind_Resume'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.3cyh60cp98vpslv7.rcgu.o:/tmp/ftdi-windows-gnu-test/src/main.rs:8: more undefined references to `_Unwind_Resume' follow
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblibftd2xx-dac11a9d0beb7d30.rlib(libftd2xx-dac11a9d0beb7d30.libftd2xx.7e7b58c8-cgu.0.rcgu.o): in function `ZN9libftd2xx6rescan17hdcc12623cbcb5297E':
              /home/rmk/.cargo/registry/src/github.com-1ecc6299db9ec823/libftd2xx-0.32.1/src/lib.rs:492: undefined reference to `FT_Rescan@0'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblibftd2xx-dac11a9d0beb7d30.rlib(libftd2xx-dac11a9d0beb7d30.libftd2xx.7e7b58c8-cgu.0.rcgu.o): in function `ZN9libftd2xx10FtdiCommon11device_type17ha5ffaef80616176cE':
              /home/rmk/.cargo/registry/src/github.com-1ecc6299db9ec823/libftd2xx-0.32.1/src/lib.rs:590: undefined reference to `_Unwind_Resume'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblibftd2xx-dac11a9d0beb7d30.rlib(libftd2xx-dac11a9d0beb7d30.libftd2xx.7e7b58c8-cgu.0.rcgu.o): in function `ZN9libftd2xx10FtdiCommon11device_info17h1d5f8e8b94434679E':
              /home/rmk/.cargo/registry/src/github.com-1ecc6299db9ec823/libftd2xx-0.32.1/src/lib.rs:625: undefined reference to `_Unwind_Resume'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblibftd2xx-dac11a9d0beb7d30.rlib(libftd2xx-dac11a9d0beb7d30.libftd2xx.7e7b58c8-cgu.0.rcgu.o): in function `ZN9libftd2xx10ft_open_ex17h20d62565aefdcba5E':
              /home/rmk/.cargo/registry/src/github.com-1ecc6299db9ec823/libftd2xx-0.32.1/src/lib.rs:1960: undefined reference to `_Unwind_Resume'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblibftd2xx-dac11a9d0beb7d30.rlib(libftd2xx-dac11a9d0beb7d30.libftd2xx.7e7b58c8-cgu.0.rcgu.o): in function `ZN83_$LT$libftd2xx..Ft232h$u20$as$u20$core..convert..TryFrom$LT$libftd2xx..Ftdi$GT$$GT$8try_from17hc39a272ecb211747E':
              /home/rmk/.cargo/registry/src/github.com-1ecc6299db9ec823/libftd2xx-0.32.1/src/lib.rs:2272: undefined reference to `_Unwind_Resume'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblibftd2xx-dac11a9d0beb7d30.rlib(libftd2xx-dac11a9d0beb7d30.libftd2xx.7e7b58c8-cgu.0.rcgu.o): in function `ZN84_$LT$libftd2xx..Ft2232h$u20$as$u20$core..convert..TryFrom$LT$libftd2xx..Ftdi$GT$$GT$8try_from17h093cfe5b26099ad8E':
              /home/rmk/.cargo/registry/src/github.com-1ecc6299db9ec823/libftd2xx-0.32.1/src/lib.rs:2272: undefined reference to `_Unwind_Resume'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblibftd2xx-dac11a9d0beb7d30.rlib(libftd2xx-dac11a9d0beb7d30.libftd2xx.7e7b58c8-cgu.0.rcgu.o):/home/rmk/.cargo/registry/src/github.com-1ecc6299db9ec823/libftd2xx-0.32.1/src/lib.rs:2272: more undefined references to `_Unwind_Resume' follow
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libpanic_unwind-fb1ba884424b1391.rlib(panic_unwind-fb1ba884424b1391.panic_unwind.953b687c-cgu.0.rcgu.o): in function `ZN12panic_unwind8real_imp5panic17h36aaeaca180f6b19E':
              /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library\panic_unwind\src/gcc.rs:62: undefined reference to `_Unwind_RaiseException'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libpanic_unwind-fb1ba884424b1391.rlib(panic_unwind-fb1ba884424b1391.panic_unwind.953b687c-cgu.0.rcgu.o): in function `ZN5alloc5boxed12Box$LT$T$GT$3new17hb252bc87d676ca07E':
              /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library\alloc\src/boxed.rs:(.text+0x48c): undefined reference to `_Unwind_Resume'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libobject-a2f75630be61a1e7.rlib(object-a2f75630be61a1e7.object.2daa9073-cgu.0.rcgu.o):object.2daa9073-cg:(.text+0x2de): undefined reference to `_Unwind_Resume'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libobject-a2f75630be61a1e7.rlib(object-a2f75630be61a1e7.object.2daa9073-cgu.0.rcgu.o):object.2daa9073-cg:(.text+0x252c): undefined reference to `_Unwind_Resume'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libgimli-883137f4a16c8383.rlib(gimli-883137f4a16c8383.gimli.90d093f9-cgu.0.rcgu.o):gimli.90d093f9-cgu:(.text+0x4ab): undefined reference to `_Unwind_Resume'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libgimli-883137f4a16c8383.rlib(gimli-883137f4a16c8383.gimli.90d093f9-cgu.0.rcgu.o):gimli.90d093f9-cgu:(.text+0x1ebd): undefined reference to `_Unwind_Resume'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libgimli-883137f4a16c8383.rlib(gimli-883137f4a16c8383.gimli.90d093f9-cgu.0.rcgu.o):gimli.90d093f9-cgu:(.text+0x1f3a): more undefined references to `_Unwind_Resume' follow
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x32d): undefined reference to `__MCFCRT_ReallySignalMutex'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x390): undefined reference to `__MCFCRT_ReallyWaitForMutexForever'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x3ba): undefined reference to `__MCFCRT_ReallySignalMutex'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x1510): undefined reference to `__MCFCRT_ReallyWaitForMutexForever'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x15b0): undefined reference to `__MCFCRT_ReallyWaitForMutexForever'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x1650): undefined reference to `__MCFCRT_ReallyWaitForMutexForever'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x16d8): undefined reference to `__MCFCRT_ReallyWaitForMutexForever'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x1758): undefined reference to `__MCFCRT_ReallyWaitForMutexForever'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x17e0): more undefined references to `__MCFCRT_ReallyWaitForMutexForever' follow
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x18ca): undefined reference to `__MCFCRT_ReallySignalMutex'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x19d2): undefined reference to `__MCFCRT_ReallySignalMutex'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x1a05): undefined reference to `__MCFCRT_ReallyWaitForMutexForever'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x14f3): undefined reference to `__MCFCRT_ReallySignalMutex'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x1593): undefined reference to `__MCFCRT_ReallySignalMutex'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x163a): undefined reference to `__MCFCRT_ReallySignalMutex'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x16bf): undefined reference to `__MCFCRT_ReallySignalMutex'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x173f): undefined reference to `__MCFCRT_ReallySignalMutex'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x17cb): more undefined references to `__MCFCRT_ReallySignalMutex' follow
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x33): undefined reference to `__MCFCRT_ReallyWaitForOnceFlagForever'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x7d): undefined reference to `_MCFCRT_TlsAllocKey'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x9c): undefined reference to `__MCFCRT_ReallySignalOnceFlagAsFinished'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0xcc): undefined reference to `__MCFCRT_OnAssertionFailure'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x115): undefined reference to `_MCFCRT_TlsGet'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x203): undefined reference to `__MCFCRT_OnAssertionFailure'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x251): undefined reference to `_MCFCRT_TlsRequire'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x36a): undefined reference to `_MCFCRT_TlsRequire'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x451): undefined reference to `_MCFCRT_TlsGet'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x472): undefined reference to `_MCFCRT_TlsRequire'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x4c4): undefined reference to `__MCFCRT_OnAssertionFailure'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x509): undefined reference to `_MCFCRT_TlsRequire'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x6c5): undefined reference to `_MCFCRT_TlsGet'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x795): undefined reference to `_MCFCRT_TlsGet'
              /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x91d): undefined reference to `_MCFCRT_TlsGet'
              collect2: error: ld returned 1 exit status

      = help: some `extern` functions couldn't be found; some native libraries may need to be installed or have their path specified
      = note: use the `-l` flag to specify native libraries to link
      = note: use the `cargo:rustc-link-lib` directive to specify the native libraries to link with Cargo (see https://doc.rust-lang.org/cargo/reference/build-scripts.html#cargorustc-link-libkindname)

    error: could not compile `ftdi-windows-gnu-test` due to previous error

The _MCFCRT_TlsGet et al can be solved by linking against -lmcfgthreads, but I wasn't sure about the _Unwind_Resume, I don't know how to configure i686 mingw to use DWARF unwinding, see rust-lang/rust#32859 (comment)

Still adding the library in case it's useful.

Otherwise you have
        ❯ cargo b -F static --target x86_64-pc-windows-gnu
           Compiling libftd2xx-ffi v0.8.5 (.../libftd2xx-ffi)
           Compiling cfg-if v1.0.0
        error: could not find native static library `ftd2xx`, perhaps an -L flag is missing?

        error: could not compile `libftd2xx-ffi` due to previous error

Created with `gendef` from mingw-w64-v10.0.0/mingw-w64-tools/gendef and
x86_64-w64-mingw32-dlltool from mingw-w64 bintools

        $ gendef ftd2xx64.dll
        $ x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k --output-lib libftd2xx.a --input-def ftd2xx64.def

See
https://sourceforge.net/p/mingw-w64/wiki2/Answer%20generation%20of%20DLL%20import%20library/
https://stackoverflow.com/questions/11793370/how-can-i-convert-a-vsts-lib-to-a-mingw-a

I tried the 32-bit version equivalent too, but I didn't succeed

        $ gendef ftd2xx.dll
        $ i686-w64-mingw32-dlltool --as-flags=--32 -m i386 -k --output-lib libftd2xx.a --input-def ftd2xx.def

It gives me

        error: linking with `i686-w64-mingw32-gcc` failed: exit status: 1
          |
          = note: "i686-w64-mingw32-gcc" "-fno-use-linker-plugin" "-Wl,--dynamicbase" "-Wl,--disable-auto-image-base" "-Wl,--large-address-aware" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/rsbegin.o" "/tmp/rustcNwn5XD/symbols.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.18cg3lkp0ox1niuz.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.1a2yb283fvmix7mn.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.1e6b4s8dc47pgda7.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.1g2e0d2si4w606bh.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.1y4iskyzv8rvw0fd.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.26y00rqklyxqv569.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.2cbu41u1qakbf0jd.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.2fhfkki64esteo6x.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.2gwzznyo0iuxm3wf.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.2i7rmgcexbfz1zbx.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.2rl400t7pxm9ryzu.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.2td98tvuo3ap4yki.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.2x5zgaz88zb4530w.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.2zyv1orloclxdbf5.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.34vekv9ch94uihc.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.39manho08t3o4ig9.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.3bxk0mj2bxgoiege.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.3cyh60cp98vpslv7.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.3dru9xt795zfm9o2.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.3q3ihisxs3eb1ufp.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.3v7ew6btgq0qb55s.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.3zsoj7qmlv65ukgq.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.405d79q5orop9n9f.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.42mujrqwnp2dketl.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.48sp8gl7ynzj58fa.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.49r00ed522v71quo.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.49sj6op9sy9cxf8x.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.4al5pxycywsk0r35.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.4drxnj1ihexiyh4y.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.4qb6ne4le4sodg6l.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.4yxh9fdiduhzrnhp.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.5ciq4l067i542igs.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.5dk52pt7ivjtpn35.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.5lfmu9neb1og9hr.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.dh46i7anenqsb41.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.duvhpxi35c0zas9.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.vai1lf8dg2yvems.rcgu.o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.3bzsz1alnipn5jco.rcgu.o" "-L" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps" "-L" "/tmp/ftdi-windows-gnu-test/target/debug/deps" "-L" "/tmp/libftd2xx-ffi/vendor/windows/Static/i386" "-L" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib" "-Wl,-Bstatic" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/libftdi_embedded_hal-b57f9fb3ed8fda18.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/libembedded_hal_nb-a4b9cafa7e768cb4.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblibftd2xx-dac11a9d0beb7d30.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblog-077be3fa69b6c72f.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblibftd2xx_ffi-65280a271df0bbb3.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/libcfg_if-fa56bff161aa35e8.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/libftdi_mpsse-162b893530c114d6.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/libembedded_hal-852d0fb8c1e08e96.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/libvoid-4aecd2516e24c3cf.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/libnb-1ff1d3a2dfea8ecd.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/libnb-baa01238a52332c0.rlib" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/libembedded_hal-92b0fcf6cbbfcf9b.rlib" "-Wl,--start-group" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libstd-15fb4244ba810ccb.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libpanic_unwind-fb1ba884424b1391.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libobject-a2f75630be61a1e7.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libmemchr-84adb6c2964e7238.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libaddr2line-11c26fff489a4c72.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libgimli-883137f4a16c8383.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/librustc_demangle-24d2250a58f0df34.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libstd_detect-03be0bc4a5c39a79.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libhashbrown-14bef48cbad7c84a.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libminiz_oxide-b4535c8397a6efb7.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libadler-32e0c526c8215fa3.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/librustc_std_workspace_alloc-11a8dcc034680bbe.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libunwind-0167b182a8481682.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libcfg_if-25b318fc6b8592ec.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/liblibc-ca57748d8a80220e.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/liballoc-96618852d32fbf17.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/librustc_std_workspace_core-fea03c05f48b5e1d.rlib" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libcore-f3dc9a5bac545e0e.rlib" "-Wl,--end-group" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libcompiler_builtins-efe19633a174deab.rlib" "-Wl,-Bdynamic" "-ladvapi32" "-luserenv" "-lkernel32" "-lws2_32" "-lbcrypt" "-lgcc_eh" "-l:libpthread.a" "-lmsvcrt" "-lmingwex" "-lmingw32" "-lgcc" "-lmsvcrt" "-luser32" "-lkernel32" "-Wl,--nxcompat" "-L" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib" "-o" "/tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.exe" "-Wl,--gc-sections" "-no-pie" "-nodefaultlibs" "/home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/rsend.o"
          = note: /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.1a2yb283fvmix7mn.rcgu.o: in function `ZN17ftdi_embedded_hal4gpio22InputPin$LT$Device$GT$3get17h2a83f20a4748ea96E':
                  /home/rmk/.cargo/git/checkouts/ftdi-embedded-hal-2b2b820a903ffac1/1770d4c/src/gpio.rs:146: undefined reference to `_Unwind_Resume'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.1a2yb283fvmix7mn.rcgu.o: in function `ZN17ftdi_embedded_hal4gpio22InputPin$LT$Device$GT$3new17hc67119f1ba367a76E':
                  /home/rmk/.cargo/git/checkouts/ftdi-embedded-hal-2b2b820a903ffac1/1770d4c/src/gpio.rs:129: undefined reference to `_Unwind_Resume'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.1e6b4s8dc47pgda7.rcgu.o: in function `ZN3std4sync5mutex14Mutex$LT$T$GT$3new17h8ce196903131195eE':
                  /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52\library\std\src\sync\mutex.rs:218: undefined reference to `_Unwind_Resume'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.1g2e0d2si4w606bh.rcgu.o: in function `ZN4core3ops8function6FnOnce9call_once17he1af58539747a1f3E':
                  /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52\library\core\src\ops\function.rs:248: undefined reference to `_Unwind_Resume'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.1y4iskyzv8rvw0fd.rcgu.o: in function `ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h00341bd542258844E':
                  /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52\library\std\src\sys_common\backtrace.rs:118: undefined reference to `_Unwind_Resume'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/ftdi_windows_gnu_test-b77a591a11908e8d.3cyh60cp98vpslv7.rcgu.o:/tmp/ftdi-windows-gnu-test/src/main.rs:8: more undefined references to `_Unwind_Resume' follow
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblibftd2xx-dac11a9d0beb7d30.rlib(libftd2xx-dac11a9d0beb7d30.libftd2xx.7e7b58c8-cgu.0.rcgu.o): in function `ZN9libftd2xx6rescan17hdcc12623cbcb5297E':
                  /home/rmk/.cargo/registry/src/github.com-1ecc6299db9ec823/libftd2xx-0.32.1/src/lib.rs:492: undefined reference to `FT_Rescan@0'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblibftd2xx-dac11a9d0beb7d30.rlib(libftd2xx-dac11a9d0beb7d30.libftd2xx.7e7b58c8-cgu.0.rcgu.o): in function `ZN9libftd2xx10FtdiCommon11device_type17ha5ffaef80616176cE':
                  /home/rmk/.cargo/registry/src/github.com-1ecc6299db9ec823/libftd2xx-0.32.1/src/lib.rs:590: undefined reference to `_Unwind_Resume'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblibftd2xx-dac11a9d0beb7d30.rlib(libftd2xx-dac11a9d0beb7d30.libftd2xx.7e7b58c8-cgu.0.rcgu.o): in function `ZN9libftd2xx10FtdiCommon11device_info17h1d5f8e8b94434679E':
                  /home/rmk/.cargo/registry/src/github.com-1ecc6299db9ec823/libftd2xx-0.32.1/src/lib.rs:625: undefined reference to `_Unwind_Resume'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblibftd2xx-dac11a9d0beb7d30.rlib(libftd2xx-dac11a9d0beb7d30.libftd2xx.7e7b58c8-cgu.0.rcgu.o): in function `ZN9libftd2xx10ft_open_ex17h20d62565aefdcba5E':
                  /home/rmk/.cargo/registry/src/github.com-1ecc6299db9ec823/libftd2xx-0.32.1/src/lib.rs:1960: undefined reference to `_Unwind_Resume'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblibftd2xx-dac11a9d0beb7d30.rlib(libftd2xx-dac11a9d0beb7d30.libftd2xx.7e7b58c8-cgu.0.rcgu.o): in function `ZN83_$LT$libftd2xx..Ft232h$u20$as$u20$core..convert..TryFrom$LT$libftd2xx..Ftdi$GT$$GT$8try_from17hc39a272ecb211747E':
                  /home/rmk/.cargo/registry/src/github.com-1ecc6299db9ec823/libftd2xx-0.32.1/src/lib.rs:2272: undefined reference to `_Unwind_Resume'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblibftd2xx-dac11a9d0beb7d30.rlib(libftd2xx-dac11a9d0beb7d30.libftd2xx.7e7b58c8-cgu.0.rcgu.o): in function `ZN84_$LT$libftd2xx..Ft2232h$u20$as$u20$core..convert..TryFrom$LT$libftd2xx..Ftdi$GT$$GT$8try_from17h093cfe5b26099ad8E':
                  /home/rmk/.cargo/registry/src/github.com-1ecc6299db9ec823/libftd2xx-0.32.1/src/lib.rs:2272: undefined reference to `_Unwind_Resume'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /tmp/ftdi-windows-gnu-test/target/i686-pc-windows-gnu/debug/deps/liblibftd2xx-dac11a9d0beb7d30.rlib(libftd2xx-dac11a9d0beb7d30.libftd2xx.7e7b58c8-cgu.0.rcgu.o):/home/rmk/.cargo/registry/src/github.com-1ecc6299db9ec823/libftd2xx-0.32.1/src/lib.rs:2272: more undefined references to `_Unwind_Resume' follow
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libpanic_unwind-fb1ba884424b1391.rlib(panic_unwind-fb1ba884424b1391.panic_unwind.953b687c-cgu.0.rcgu.o): in function `ZN12panic_unwind8real_imp5panic17h36aaeaca180f6b19E':
                  /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library\panic_unwind\src/gcc.rs:62: undefined reference to `_Unwind_RaiseException'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libpanic_unwind-fb1ba884424b1391.rlib(panic_unwind-fb1ba884424b1391.panic_unwind.953b687c-cgu.0.rcgu.o): in function `ZN5alloc5boxed12Box$LT$T$GT$3new17hb252bc87d676ca07E':
                  /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library\alloc\src/boxed.rs:(.text+0x48c): undefined reference to `_Unwind_Resume'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libobject-a2f75630be61a1e7.rlib(object-a2f75630be61a1e7.object.2daa9073-cgu.0.rcgu.o):object.2daa9073-cg:(.text+0x2de): undefined reference to `_Unwind_Resume'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libobject-a2f75630be61a1e7.rlib(object-a2f75630be61a1e7.object.2daa9073-cgu.0.rcgu.o):object.2daa9073-cg:(.text+0x252c): undefined reference to `_Unwind_Resume'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libgimli-883137f4a16c8383.rlib(gimli-883137f4a16c8383.gimli.90d093f9-cgu.0.rcgu.o):gimli.90d093f9-cgu:(.text+0x4ab): undefined reference to `_Unwind_Resume'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libgimli-883137f4a16c8383.rlib(gimli-883137f4a16c8383.gimli.90d093f9-cgu.0.rcgu.o):gimli.90d093f9-cgu:(.text+0x1ebd): undefined reference to `_Unwind_Resume'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /home/rmk/.rustup/toolchains/1.64-x86_64-unknown-linux-gnu/lib/rustlib/i686-pc-windows-gnu/lib/libgimli-883137f4a16c8383.rlib(gimli-883137f4a16c8383.gimli.90d093f9-cgu.0.rcgu.o):gimli.90d093f9-cgu:(.text+0x1f3a): more undefined references to `_Unwind_Resume' follow
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x32d): undefined reference to `__MCFCRT_ReallySignalMutex'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x390): undefined reference to `__MCFCRT_ReallyWaitForMutexForever'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x3ba): undefined reference to `__MCFCRT_ReallySignalMutex'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x1510): undefined reference to `__MCFCRT_ReallyWaitForMutexForever'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x15b0): undefined reference to `__MCFCRT_ReallyWaitForMutexForever'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x1650): undefined reference to `__MCFCRT_ReallyWaitForMutexForever'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x16d8): undefined reference to `__MCFCRT_ReallyWaitForMutexForever'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x1758): undefined reference to `__MCFCRT_ReallyWaitForMutexForever'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x17e0): more undefined references to `__MCFCRT_ReallyWaitForMutexForever' follow
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x18ca): undefined reference to `__MCFCRT_ReallySignalMutex'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x19d2): undefined reference to `__MCFCRT_ReallySignalMutex'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x1a05): undefined reference to `__MCFCRT_ReallyWaitForMutexForever'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x14f3): undefined reference to `__MCFCRT_ReallySignalMutex'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x1593): undefined reference to `__MCFCRT_ReallySignalMutex'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x163a): undefined reference to `__MCFCRT_ReallySignalMutex'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x16bf): undefined reference to `__MCFCRT_ReallySignalMutex'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x173f): undefined reference to `__MCFCRT_ReallySignalMutex'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-dw2-fde.o):(.text+0x17cb): more undefined references to `__MCFCRT_ReallySignalMutex' follow
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x33): undefined reference to `__MCFCRT_ReallyWaitForOnceFlagForever'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x7d): undefined reference to `_MCFCRT_TlsAllocKey'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x9c): undefined reference to `__MCFCRT_ReallySignalOnceFlagAsFinished'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0xcc): undefined reference to `__MCFCRT_OnAssertionFailure'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x115): undefined reference to `_MCFCRT_TlsGet'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x203): undefined reference to `__MCFCRT_OnAssertionFailure'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x251): undefined reference to `_MCFCRT_TlsRequire'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x36a): undefined reference to `_MCFCRT_TlsRequire'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x451): undefined reference to `_MCFCRT_TlsGet'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x472): undefined reference to `_MCFCRT_TlsRequire'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x4c4): undefined reference to `__MCFCRT_OnAssertionFailure'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x509): undefined reference to `_MCFCRT_TlsRequire'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x6c5): undefined reference to `_MCFCRT_TlsGet'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x795): undefined reference to `_MCFCRT_TlsGet'
                  /nix/store/dzbd06k59z4rprc24in6h49sdllzck1s-i686-w64-mingw32-binutils-2.39/bin/i686-w64-mingw32-ld: /nix/store/h2i2i7cqsjb8ppqzdpscpb913ig9zp98-i686-w64-mingw32-stage-final-gcc-11.3.0/lib/gcc/i686-w64-mingw32/11.3.0/libgcc_eh.a(unwind-sjlj.o):(.text+0x91d): undefined reference to `_MCFCRT_TlsGet'
                  collect2: error: ld returned 1 exit status

          = help: some `extern` functions couldn't be found; some native libraries may need to be installed or have their path specified
          = note: use the `-l` flag to specify native libraries to link
          = note: use the `cargo:rustc-link-lib` directive to specify the native libraries to link with Cargo (see https://doc.rust-lang.org/cargo/reference/build-scripts.html#cargorustc-link-libkindname)

        error: could not compile `ftdi-windows-gnu-test` due to previous error

The _MCFCRT_TlsGet et al can be solved by linking against
`-lmcfgthreads`, but I wasn't sure about the _Unwind_Resume, I don't
know how to configure i686 mingw to use DWARF unwinding, see
rust-lang/rust#32859 (comment)
@newAM
Copy link
Member

newAM commented Nov 25, 2022

Maybe a dumb question, but does this work? I didn't give the GNU Windows toolchain any thought because I didn't think the USB stack would work.

@KoviRobi
Copy link
Author

That's a sensible question actually, and yes it seems to -- I have to admit I just assumed it would despite the different ABI, because I believe mingw is using the Microsoft C runtime (MSVCRT), it seems like this meant to work by desing, see
https://sourceforge.net/p/mingw-w64/wiki2/Answer%2064%20bit%20MSVC-generated%20x64%20.lib/
but there is a caveat apparently in that returning structs isn't specified enough
https://stackoverflow.com/questions/31950743/calling-convention-between-msvc-and-gcc
(Even though the stackoverflow link doesn't specify, I think it must be MinGW)

@newAM
Copy link
Member

newAM commented Nov 26, 2022

Huh, neat!

What distribution and version of dlltool and gendef did you use? I tried to reproduce this so that I can update this binary when the vendor library updates, but I got very different results with llvm-mingw 15.0.0 (ubuntu-18.04-x86_64 target). On the surface it seems to be different debug strings in the output archive, so nothing major, but it would be nice to confirm I can get the same result.

@Grinkers
Copy link
Collaborator

Just a bit of warning, I used to use FTDI's stuff from msys (2018~2020ish). I never could get stability, all from c. Different versions of mingw would be incompatible with FTDI's libraries. I never figured it out, but it was something to do with multiple incompatible msvc dlls being loaded at the same time(????) with how different versions of mingw and how ftdi is compiled (msvc). Upgrading mingw or ftdi was never safe. At best it would sometimes be poor performance (mingw implementation of pthreads and FTDI locks, I think) or run time crashes/deadlocks at worst.

The best thing I managed to do was dynamically link by ordinal (horrible, I know). For whatever reason, the way I got things working was by chaining DLLs. I have to be compatible with stuff compiled with as far back as vs2005.

This was actually the primary reason I picked up rust. I ported all of our linux code to std rust, I picked up this crate to assist in static linking. Maybe things are better today?

@KoviRobi
Copy link
Author

KoviRobi commented Nov 27, 2022

I used NixOS (I didn't make a note of the nixpkgs revision), and nix shell nixpkgs\#pkgsCross.mingwW64.stdenv.cc.bintools for dlltool, for gendef I just had a local compile. But I've put a Nix derivation up at https://github.com/KoviRobi/nixpkgs/tree/add-mingw-tools for .#windows.gendef (note, not pkgsCross.mingwW64 just native). But for what it's worth, it doesn't seem reproducible, maybe there's some flags we could give dlltool?

❯ x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k --output-lib libftd2xx.a --input-def ftd2xx64.def

❯ sha256sum libftd2xx.a
99bb90f9e011ee348b561f014659ae6c9bcb322c77c19acb3e957e02a1c21bf2  libftd2xx.a

❯ x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k --output-lib libftd2xx.a --input-def ftd2xx64.def

❯ sha256sum libftd2xx.a
422a0ba631a4d8f434fc43f7bd02a1189571101784dcb381d4fcf17dd3f34878  libftd2xx.a

EDIT: Looks like part of the reproducibility issue is to add --temp-prefix <something> to dlltool, but it also embeds timestamps. Looks like Windows doesn't like timestamps being zero, https://sourceware.org/bugzilla/show_bug.cgi?id=16887. But one can use

❯ x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k --output-lib libftd2xx.a --input-def ftd2xx64.def --temp-prefix 12345

❯ x86_64-w64-mingw32-strip --enable-deterministic-archives libftd2xx.a -o libftd2xx.a.deterministic

❯ sha256sum libftd2xx.a.deterministic
d345754aadc0d83bd95daf596696f4ef8a738c941399e9f78adf438d13e9bc50  libftd2xx.a.deterministic

Also I think that bug might apply to dynamic linking only -- I don't think anything would read the timestamps at link-time

@newAM
Copy link
Member

newAM commented Nov 27, 2022

Thanks for those links! I did not know there were mingw packages in NixOS, I was using nix-ld to run llvm-mingw. Using the binaries you pointed to I was able to reproduce this now (minus timestamps), thanks!

@newAM newAM merged commit 611b744 into ftdi-rs:main Nov 27, 2022
@newAM
Copy link
Member

newAM commented Nov 27, 2022

Also, would you like me to make a release for this?

@KoviRobi
Copy link
Author

KoviRobi commented Nov 27, 2022

Thanks for those links! I did not know there were mingw packages in NixOS, I was using nix-ld to run llvm-mingw. Using the binaries you pointed to I was able to reproduce this now (minus timestamps), thanks!

Nixpkgs' cross-compilation is actually very impressive, with just minor changes I have been able to cross-compile probe-run for Windows, so I can code with my WSL2 system (WSL2 doesn't have USB passthroug [well, the WSL2 network is considered by Windows to be a "public network" and you can't change that, and IT blocks all public networks so I can't use USBIP])

Also, would you like me to make a release for this?

Possibly worth while in case anyone else wants to try using it, but I'm also happy to just use the patch feature in cargo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants