Files
chains/evm
zeekayandHanzo Dev 1231964a90 fix: give the Metal anchor a package-unique symbol name
deps: gpu v1.1.2 — the older tags name the wrong pkg-config package

gpu v1.0.1/v1.1.0 declare `#cgo pkg-config: lux-gpu` while including
<lux/gpu.h>. Those are two different libraries with confusingly similar names:

  luxgpu.pc   unified GPU acceleration, -lluxgpu,   Cflags -I${includedir}
  lux-gpu.pc  the DEX order matcher,    -llux_gpu,  Cflags -I${includedir}/lux

Under lux-gpu the include resolves to .../include/lux/lux/gpu.h, so every cgo
build failed with "fatal error: lux/gpu.h file not found" — the arm64 stall
signature. libluxgpu.dylib is also what actually exports _lux_gpu_ecrecover_batch.

gpu v1.1.2 already declares luxgpu; only the pin was stale.

With that fixed the link got one step further and hit a duplicate symbol:
cevm and dex/pkg/lx both define a global lux_secp256k1_metal_anchor, so any
binary linking both refuses. The anchor exists only to keep the Metal driver
alive through linker dead-code elimination — luxcpp resolves the DRIVER symbol
(secp256k1_ecrecover_address_batch_metal) via dlsym, never the anchor, so the
anchor name is internal and safe to qualify. Named lux_cevm_secp256k1_metal_anchor
after the package that owns it.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 08:43:24 -07:00
..