jguhlin / minimap2-rs

Rust bindings to minimap2 library
Other
51 stars 11 forks source link

compiling on macOS #30

Closed scfurl closed 11 months ago

scfurl commented 1 year ago

Hi @jguhlin,

Thanks for all your work on minimap2-rs! I am working on a rust project that would be ideal for minimap2 bindings. I have successfully integrated into my project in a linux environment, but compiling fails on a Mac. I suspect that it is related to SSE4 code that I need to disable when successfully building minimap2 on a Mac using make sse2only=1. I see you have related tasks in your todo list. Have you gotten minimap2-rs to specifically compile on an ARM Mac? Could you share the trick? :) Or do you think something else is causing compilation failure?

Thanks for looking!!

I have output the compilation errors when running cargo build --release below:

Compiling minimap2-sys v0.1.10 Compiling seq_io v0.3.1 Compiling csv v1.2.1 Compiling itertools v0.10.5 Compiling toml v0.5.11 The following warnings were emitted during compilation:

warning: clang: warning: -lm: 'linker' input unused [-Wunused-command-line-argument] warning: clang: warning: -lpthread: 'linker' input unused [-Wunused-command-line-argument] warning: clang: warning: -lm: 'linker' input unused [-Wunused-command-line-argument] warning: clang: warning: -lpthread: 'linker' input unused [-Wunused-command-line-argument] warning: clang: warning: -lm: 'linker' input unused [-Wunused-command-line-argument] warning: clang: warning: -lpthread: 'linker' input unused [-Wunused-command-line-argument] warning: clang: warning: -lm: 'linker' input unused [-Wunused-command-line-argument] warning: clang: warning: -lpthread: 'linker' input unused [-Wunused-command-line-argument] warning: clang: warning: -lm: 'linker' input unused [-Wunused-command-line-argument] warning: clang: warning: -lpthread: 'linker' input unused [-Wunused-command-line-argument] warning: clang: warning: -lm: 'linker' input unused [-Wunused-command-line-argument] warning: clang: warning: -lpthread: 'linker' input unused [-Wunused-command-line-argument] warning: In file included from minimap2/ksw2_ll_sse.c:9: warning: In file included from /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/emmintrin.h:13: warning: In file included from /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/xmmintrin.h:13: warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:50:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_vec_init_v2si(i, 0); warning: ^~~~~~~~~~~ warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:129:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_packsswb((v4hi)m1, (v4hi)m2); warning: ^~~~~~~~~~~~~~ warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:159:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_packssdw((v2si)m1, (v2si)m2); warning: ^~~~~~~~~~~~~~ warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:189:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_packuswb((v4hi)m1, (v4hi)m2); warning: ^~~~~~~~~~~~~~ warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:216:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_punpckhbw((v8qi)m1, (v8qi)m2); warning: ^~~~~~~~~~~~~~~ warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:239:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_punpckhwd((v4hi)m1, (v4hi)m2); warning: ^~~~~~~~~~~~~~~ warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:260:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_punpckhdq((v2si)m1, (v2si)m2); warning: ^~~~~~~~~~~~~~~ warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:287:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_punpcklbw((v8qi)m1, (v8qi)m2); warning: ^~~~~~~~~~~~~~~ warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:310:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_punpcklwd((v4hi)m1, (v4hi)m2); warning: ^~~~~~~~~~~~~~~ warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:331:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_punpckldq((v2si)m1, (v2si)m2); warning: ^~~~~~~~~~~~~~~ warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:352:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_paddb((v8qi)m1, (v8qi)m2); warning: ^~~~~~~~~~~~~~~ warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:373:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_paddw((v4hi)m1, (v4hi)m2); warning: ^~~~~~~~~~~~~~~ warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:394:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_paddd((v2si)m1, (v2si)m2); warning: ^~~~~~~~~~~~~~~ warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:416:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_paddsb((v8qi)m1, (v8qi)m2); warning: ^~~~~~~~~~~~ warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:439:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_paddsw((v4hi)m1, (v4hi)m2); warning: ^~~~~~~~~~~~ warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:461:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_paddusb((v8qi)m1, (v8qi)m2); warning: ^~~~~~~~~~~~~ warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:483:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_paddusw((v4hi)m1, (v4hi)m2); warning: ^~~~~~~~~~~~~ warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:504:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_psubb((v8qi)m1, (v8qi)m2); warning: ^~~~~~~~~~~~~~~ warning: /Library/Developer/CommandLineTools/usr/lib/clang/13.1.6/include/mmintrin.h:525:12: error: invalid conversion between vector type 'm64' (vector of 1 'long long' value) and integer type 'int' of different size warning: return (m64)builtin_ia32_psubw((v4hi)m1, (v4hi)m2); warning: ^~~~~~~~~~~~~~~ warning: fatal error: too many errors emitted, stopping now [-ferror-limit=] warning: 20 errors generated.

error: failed to run custom build command for minimap2-sys v0.1.10

jguhlin commented 1 year ago

Trying to find a CircleCI config that lets me test mac compilation. I can try and add a feature for sse1only, but for now, can you try simde?

cargo build --release --features simde ?

scfurl commented 1 year ago

Thanks for the quick reply! Hmm. Maybe I am missing something?

cargo build --release --features simde error: none of the selected packages contains these features: simde

jguhlin commented 1 year ago

Are you running the compilation from your own project? You'll have to set up the features in Cargo.toml Otherwise, if you are using the github version maybe do a new pull?

scfurl commented 1 year ago

Yes, I was... And I can confirm that a clone of the minimap2-rs repo will compile fine if I use the --features simde flag, but not without it.

So I guess I need to figure out how to have my project recognize the architecture and compile minimap2-rs appropriately. I tried just putting this in my Cargo.toml file, but it didn't work

[dependencies]
minimap2 = { version = "0.1.11", default-features = false, features = ["simde"] }

(I realize this is now outside the scope of the question so I will close this, but any help would be greatly appreciated)!!

thank you

jguhlin commented 1 year ago

You can leave this open if you'd like. SIMDe is SIMD-everywhere, so you should be good with it always on.

Looks like there is no option yet for per-target features: https://github.com/rust-lang/cargo/issues/1197

scfurl commented 1 year ago

Thanks for clarifying! So including this in my project should technically work everywhere right? But it still doesn't compile on Mac...

[dependencies]
minimap2-sys = { version = "0.1.10", features = ["simde"] }
minimap2 = "0.1.11"
jguhlin commented 1 year ago

Do you need minimap2-sys? If not, you can use

minimap2 = { version = "0.1.11", features = ["simde"] }

scfurl commented 1 year ago

Unfortunately that doesn't work either...

   Compiling minimap2-sys v0.1.10
   Compiling minimap2 v0.1.11
   Compiling scrHLAtag v0.0.1 (/Users/sfurlan/develop/scrHLAtag)
warning: unused imports: `Command`, `Stdio`
  --> src/scrHLAtag.rs:49:20
   |
49 | use std::process::{Command, Stdio};
   |                    ^^^^^^^  ^^^^^
   |
   = note: `#[warn(unused_imports)]` on by default

error: linking with `cc` failed: exit status: 1
  |
  = note: LC_ALL="C" PATH="/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/bin:/Users/sfurlan/.gem/ruby/3.1.2/bin:/Users/sfurlan/.rubies/ruby-3.1.2/lib/ruby/gems/3.1.0/bin:/Users/sfurlan/.rubies/ruby-3.1.2/bin:/opt/homebrew/opt/ruby/bin:/Users/sfurlan/miniforge3x86/bin:/Users/sfurlan/miniforge3x86/condabin:/Users/sfurlan/.local/bin:/Users/sfurlan/.cargo/bin:/Users/sfurlan/.pyenv/shims:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Users/sfurlan/.cargo/bin" VSLANG="1033" ZERO_AR_DATE="1" "cc" "-arch" "arm64" "/var/folders/bs/c21jznv97xv0cqtbkz8qb6yw0000gr/T/rustcLrYlU9/symbols.o" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/scrHLAtag-2472820d4ffe8973.scrHLAtag.92c46941-cgu.0.rcgu.o" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/scrHLAtag-2472820d4ffe8973.scrHLAtag.92c46941-cgu.1.rcgu.o" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/scrHLAtag-2472820d4ffe8973.scrHLAtag.92c46941-cgu.10.rcgu.o" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/scrHLAtag-2472820d4ffe8973.scrHLAtag.92c46941-cgu.11.rcgu.o" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/scrHLAtag-2472820d4ffe8973.scrHLAtag.92c46941-cgu.12.rcgu.o" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/scrHLAtag-2472820d4ffe8973.scrHLAtag.92c46941-cgu.13.rcgu.o" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/scrHLAtag-2472820d4ffe8973.scrHLAtag.92c46941-cgu.14.rcgu.o" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/scrHLAtag-2472820d4ffe8973.scrHLAtag.92c46941-cgu.15.rcgu.o" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/scrHLAtag-2472820d4ffe8973.scrHLAtag.92c46941-cgu.2.rcgu.o" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/scrHLAtag-2472820d4ffe8973.scrHLAtag.92c46941-cgu.3.rcgu.o" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/scrHLAtag-2472820d4ffe8973.scrHLAtag.92c46941-cgu.4.rcgu.o" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/scrHLAtag-2472820d4ffe8973.scrHLAtag.92c46941-cgu.5.rcgu.o" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/scrHLAtag-2472820d4ffe8973.scrHLAtag.92c46941-cgu.6.rcgu.o" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/scrHLAtag-2472820d4ffe8973.scrHLAtag.92c46941-cgu.7.rcgu.o" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/scrHLAtag-2472820d4ffe8973.scrHLAtag.92c46941-cgu.8.rcgu.o" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/scrHLAtag-2472820d4ffe8973.scrHLAtag.92c46941-cgu.9.rcgu.o" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/scrHLAtag-2472820d4ffe8973.4r7pu59z8t6g5384.rcgu.o" "-L" "/Users/sfurlan/develop/scrHLAtag/target/release/deps" "-L" "/usr/lib" "-L" "/Users/sfurlan/develop/scrHLAtag/target/release/build/minimap2-sys-e0329e5a5c5d54a4/out" "-L" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libsimple_log-dec01fff28a9ef3d.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libis_debug-91a956ea01d17ff4.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libonce_cell-e9b6773e3e801492.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/liblog4rs-d08ba6f0df011d33.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/liblog_mdc-d31e3518368d8124.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libserde_json-47b39a10403fab17.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libthread_id-8558365ced778fa2.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libchrono-c1ed3e684d619fb7.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libiana_time_zone-4e4f35357b935073.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libcore_foundation_sys-4ad6027676ebf4e4.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libnum_integer-185a1a4b8d075822.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libnum_traits-edb08c86796ea668.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libtime-9bcdd2a6dd82a4f8.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libparking_lot-9c31d4eb20fe1bfa.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libparking_lot_core-2f5c3e34bb543635.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libsmallvec-a5e26d898a15adf0.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/liblock_api-e116bde074b28167.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libinstant-38d7dc712d381402.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libfnv-430ae26f79c5552b.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libarc_swap-2f0dcd0fa2167db0.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libconvert_case-e27b64bea88e3a25.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/liblog-9acdcbc6abd40ac9.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libminimap2-8a330f42239efc52.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libfffx-96b7d3c784a6d3b7.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libbytelines-a0c736ea790569bd.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libfutures-7a7eca74c029cfed.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libfutures_executor-1a8335ae31edcfd9.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libfutures_util-3b62b15699044562.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libfutures_io-6575827260aa6f9c.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libslab-be7a4faf69b2ca30.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libfutures_channel-f89de6c366e33454.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libfutures_sink-6c99656e7c41a2e3.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libfutures_task-cc11e44101c03dee.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libpin_utils-9fc140aebbff8f37.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libfutures_core-7e10c4fd68610bc1.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libtokio-0b0d5d5f4a7908b6.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libbytes-457a94e2651dd7fa.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libpin_project_lite-5e5abf9a6042fdb7.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libsimdutf8-29ed6f5a5dc8da9f.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libminimap2_sys-40fef831d385dba0.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libseq_io-6ae1e6ce20f4afc2.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libscoped_threadpool-7353b02d80a31eb7.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libcrossbeam-c1d37bd9af95b350.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libcrossbeam_channel-ab4667f08870e8d1.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libcrossbeam_deque-1829b0ab214b5cdd.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libcrossbeam_queue-5efa597cb8ac6133.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libcrossbeam_epoch-680e007fc2dd1dc2.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libmemoffset-816569fd8ce97c9f.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libscopeguard-5d9e709bd77e6960.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libcrossbeam_utils-f20660ed735cae53.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libbuf_redux-40042d3ab6e09682.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libsafemem-cfcd39679784f769.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libbam-8e34e2b0d2c6b2c1.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libflate2-e1202bc0f9162a9d.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/liblibz_sys-b60efcd5ef420a3b.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libcrc32fast-d4c7925fab08dc6e.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libcfg_if-d2c864408ca38020.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libbyteorder-12fbc19cdd5c4a76.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libclap-d5015d9fd898f086.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libyaml_rust-55fea1ddbd8073a3.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libvec_map-0840b45a1bc60346.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libtextwrap-a49efba1d234fa13.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libunicode_width-864bec546b87a99e.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libstrsim-e6c897b6aaeeb5a7.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libbitflags-c80ec46968c969b9.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libatty-8c7a6c98a12899b3.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/liblibc-4946bc6751694fb2.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libansi_term-b5e76740abedb19f.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libcsv-74b3ae68aedd54d0.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libryu-c616d8778d4ab23c.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libitoa-3151631cdc7f6a79.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libcsv_core-730975fc32031efd.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libmemchr-848d3714c5fd2ab7.rlib" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/libserde-40d3969c401760db.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libstd-6d3bb15ae9e42a6c.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libpanic_unwind-104bd99d1ebda646.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libobject-00e34679a4924306.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libmemchr-fed841a233db0b7c.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libaddr2line-213adb42b522d3f5.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libgimli-0ce81f712f982129.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/librustc_demangle-dcaa4442c7b0af52.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libstd_detect-c9336c0badc0444f.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libhashbrown-808b5de2e4735936.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libminiz_oxide-5e2f3f7f80f17910.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libadler-bb0de43b6a37ba94.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/librustc_std_workspace_alloc-d1c021689f193e6a.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libunwind-b235019e73283224.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libcfg_if-f7cc99877a4b63db.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/liblibc-5e17cf73151dd353.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/liballoc-c5b271d7e6853623.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/librustc_std_workspace_core-03ed4852e826790d.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libcore-fec9c040e123eb85.rlib" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libcompiler_builtins-30535ac27d951dda.rlib" "-framework" "CoreFoundation" "-lm" "-lpthread" "-lz" "-lz" "-liconv" "-lSystem" "-lc" "-lm" "-L" "/Users/sfurlan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib" "-o" "/Users/sfurlan/develop/scrHLAtag/target/release/deps/scrHLAtag-2472820d4ffe8973" "-Wl,-dead_strip" "-nodefaultlibs"
  = note: Undefined symbols for architecture arm64:
            "_ksw_extz2_sse", referenced from:
                _mm_align_pair in libminimap2_sys-40fef831d385dba0.rlib(align.o)
            "_ksw_exts2_sse", referenced from:
                _mm_align_pair in libminimap2_sys-40fef831d385dba0.rlib(align.o)
            "_ksw_extd2_sse", referenced from:
                _mm_align_pair in libminimap2_sys-40fef831d385dba0.rlib(align.o)
          ld: symbol(s) not found for architecture arm64
          clang: error: linker command failed with exit code 1 (use -v to see invocation)
jguhlin commented 1 year ago

Hmm, thanks for that. What about a cargo clean, then try again?

Otherwise, that's helpful info; I need to get a way to test mac builds automatically!

scfurl commented 1 year ago

Same result after clean and retry :(

jguhlin commented 1 year ago

Ok thanks for that. I've got some meetings right now but will try to get to this later today / tomorrow and reach back to you!

jguhlin commented 1 year ago

Still working on this, been busy! Any luck on your end?

scfurl commented 1 year ago

Thanks for checking in! No, I admittedly put it aside and just have been calling the minimap executable from rust for now as I need the cigar string. Look forward to eventually getting it working though!

jguhlin commented 1 year ago

It took me way too long to get Github actions to test on MacOS, but it's working now, so once that's finished I'll push this release out.

Adoni5 commented 1 year ago

@jguhlin - did you find a way of testing GitHUb actions for this on Arm based architectures for MacOS? We're having issues compiling mappy-rs on M1/M2 Macs on arm, and have to use x86 emulation.

Unfortunately I'm a linux lover, and have no access to an Arm based CPU, so would be great if I could find an environment to test in!

jguhlin commented 1 year ago

@Adoni5 Hmm, it compiles on macos with the latest github workflow, but I think that runs on x86_64. I'm trying cross (https://github.com/cross-rs/cross) now, but under wsl2. It won't do aarch64 + macos but I guess if they are tested independently, it may work?

My work machine's ubuntu install has died during an upgrade. I'm going in on Monday with a gentoo install, but it puts me behind a bit. :/

Edit to add: Gentoo was going to take several days to build. Back on Ubuntu, but open to recommendations. Maybe Arch?

jguhlin commented 1 year ago

Froze on building tokio on my machine, will have to try on Monday.

jguhlin commented 1 year ago

@scfurl @Adoni5 New version is out, I can build on aarch64 but the cfg flags do not properly propagate for my cross compilation. Can you give it a try?

leiste375 commented 1 year ago

@scfurl @Adoni5 New version is out, I can build on aarch64 but the cfg flags do not properly propagate for my cross compilation. Can you give it a try?

Hi

I encountered the same issue while trying to compile chopper.

I tested it by cloning the github repo, and minimap2 compiles on its own, however the error still persists when not using the "--features simde" flag mentioned above.

When trying to compile chopper I fail with the same error message as encountered by scfurl.

jguhlin commented 1 year ago

Hey thanks. Could you post your error logs?

On Mon, 17 Jul 2023, 10:12 pm leiste375, @.***> wrote:

@scfurl https://github.com/scfurl @Adoni5 https://github.com/Adoni5 New version is out, I can build on aarch64 but the cfg flags do not properly propagate for my cross compilation. Can you give it a try?

Hi

I encountered the same issue while trying to compile chopper. I tested it by cloning the github repo, however the error still persists when not using the "--features simde" flag mentioned above.

— Reply to this email directly, view it on GitHub https://github.com/jguhlin/minimap2-rs/issues/30#issuecomment-1638002626, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAOA2CBSQOBB4S2QKSQXVOTXQUT2FANCNFSM6AAAAAAWQOEIJY . You are receiving this because you were mentioned.Message ID: @.***>

leiste375 commented 1 year ago

Hey thanks. Could you post your error logs?

The error messages were exactly the same as encountered by @scfurl. Without simde the one at the top, and with simde the one further below (Undefined symbols for architecture arm64...).

When turning default-features off completely and only using simde, as suggested above, I run into a versioning error. I was able to resolve that by playing around with the .toml but ended up with the latter error.

PS: On a side-note, cross-compile (x86_64-apple-darwin) works fine for now, and at least as far as chopper goes, the performance is fine.

PPS: minimap2 itself compiles succesfully, albeit with a couple of warnings about unused flags, and generates all the *.o files, but the final program, chopper in my case, then fails to compile.

Here are the warnings: warning: clang: warning: -lm: 'linker' input unused [-Wunused-command-line-argument] warning: clang: warning: -lpthread: 'linker' input unused [-Wunused-command-line-argument] warning: clang: warning: argument unused during compilation: '-mfpu=neon' [-Wunused-command-line-argument]

From what I can gather, minimap2 uses neon for the ARM instruction set, but this is not properly translated in the build.rs. I haven't figured out the proper way to do it tho, or whether the issue lies with my own compiler, minimap2 or minimap2-rs...

jguhlin commented 1 year ago

Cool thanks. Good to know. I'll dig into it more next week. Cheers

On Tue, 18 Jul 2023, 4:14 pm leiste375, @.***> wrote:

Hey thanks. Could you post your error logs?

The error messages were exactly the same as encountered by @scfurl https://github.com/scfurl. Without simde the one at the top, and with simde the one further below (Undefined symbols for architecture arm64...).

I also tried loading the crate directly via GitHub. When doing so I have to manually turn default-features off and separately specify flate2 (in the chopper .toml) in addition to simde (as a feature of minimap2), only to end up at the latter error message (Undefined symbols...).

— Reply to this email directly, view it on GitHub https://github.com/jguhlin/minimap2-rs/issues/30#issuecomment-1639555523, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAOA2CGRCQ22THDTNZBLIGDXQYSSVANCNFSM6AAAAAAWQOEIJY . You are receiving this because you were mentioned.Message ID: @.***>

jguhlin commented 11 months ago

@leiste375 I think it's the build.rs not taking in the proper options. I've sorted a mac to borrow for a few weeks to get it sorted (hopefully it takes an afternoon!). It's my first FFI project so am surprised it has worked this well even.

jguhlin commented 11 months ago

I did not get an aarch64 mac to test on. :/ Still trying.

Adoni5 commented 11 months ago

Thanks @jguhlin - I'll have a think and see what I can do as well.

leiste375 commented 11 months ago

I did not get an aarch64 mac to test on. :/ Still trying.

Let me know if there is anything I can try from my end. I hope I'll find time to look at it again soon

leiste375 commented 11 months ago

Managed to compile. Will test it and create a pull request later on if that's ok with you

Adoni5 commented 11 months ago

🔥 Thanks @leiste375