The default `go build ./...` does NOT consult pkg-config; accel's
`ops/code/code_cpu.go` hardcodes the standard install prefixes via
`#cgo` directives. pkg-config is only used when the build tag
`lux_gpu_pkgconfig` is set explicitly, and in that mode the build
hard-fails if pkg-config can't resolve `lux-gpu`.
accel v1.1.4 auto-discovers the lux-gpu substrate (libluxgpu_hqc.a +
lux/gpu/hqc.h) by probing every standard install prefix via cgo
#cgo CFLAGS/LDFLAGS directives. The build resolves whichever prefix
has the artefacts (pkg-config, /opt/homebrew, /usr/local, /opt/lux,
in-tree mlx/ sibling) without any env var or Makefile wiring.
Makefile:
- drop the MLX_ROOT requirement
- default `make build` works with NO env vars set
- optional LUX_GPU_PREFIX override remains for non-standard installs
- rename print-env diagnostic to show LUX_GPU_PREFIX
CI:
- run `cmake --install build` so lux-gpu lands on the standard
pkg-config path
- verify discovery via `pkg-config --modversion lux-gpu`
- drop the manual CGO_CFLAGS / CGO_LDFLAGS export
- drop MLX_ROOT references everywhere
go.mod:
- bump luxfi/accel v1.1.2 → v1.1.4
- remove the local replace directive (development-only, not for
release)
Deps:
- accel v1.1.0 → v1.1.2 (MLDSAVerifyBatch mode-aware dispatch)
- crypto v1.19.3 → v1.19.10 (runtime dispatch Provenance)
- corona v0.3.1 → v0.4.1 (parallel VerifyBatch; CORONA-* tags)
- pulsar (none) → v1.0.12 (TEE-coupling reverted; protocol stays TEE-agnostic)
- magnetar (none) → v0.4.1 (FIPS 205 threshold)
Makefile: accel v1.1.2 introduced the ops/code package (HQC code-based
KEM) which is a CGO bridge to libluxgpu_hqc.a built by the sibling
mlx repo. The CGO directive `#cgo CFLAGS: -I${SRCDIR}/../../../mlx/
include` resolves against the accel module-cache path which does NOT
have a sibling mlx/ tree. Consumers must set CGO_CFLAGS/CGO_LDFLAGS
explicitly. Makefile centralises that wiring (MLX_ROOT=~/work/lux/mlx
by default) so devs and CI use the same flags.
ci.yml: matches the Makefile contract. CI checks out luxfi/mlx
sibling, builds libluxgpu_hqc.a (CPU only — no GPU device required
on GitHub-hosted runners), then runs `make build test vet` with
MLX_ROOT pointed at the checkout. govulncheck stays non-blocking.
All 41 packages build + test green locally with these flags
(slhdsa 22s longest; rest <8s).