From 1cf5178c80c1675e576da9b7d48a6d507aa1da05 Mon Sep 17 00:00:00 2001 From: Snider Date: Thu, 19 Feb 2026 19:34:38 +0000 Subject: [PATCH] refactor(metal): move dtype, array, metal, stream to internal/metal Move foundation CGO files from root package to internal/metal/ package. Changes package declaration from `package mlx` to `package metal`. Updates CGO SRCDIR paths to account for new location (two levels deeper). Extracts go:generate directives into root generate.go. Co-Authored-By: Virgil --- generate.go | 5 +++++ array.go => internal/metal/array.go | 2 +- dtype.go => internal/metal/dtype.go | 2 +- mlx.go => internal/metal/metal.go | 22 +++++----------------- stream.go => internal/metal/stream.go | 2 +- 5 files changed, 13 insertions(+), 20 deletions(-) create mode 100644 generate.go rename array.go => internal/metal/array.go (99%) rename dtype.go => internal/metal/dtype.go (99%) rename mlx.go => internal/metal/metal.go (80%) rename stream.go => internal/metal/stream.go (99%) diff --git a/generate.go b/generate.go new file mode 100644 index 0000000..aed0d3a --- /dev/null +++ b/generate.go @@ -0,0 +1,5 @@ +package mlx + +//go:generate cmake -S . -B build -DCMAKE_INSTALL_PREFIX=dist -DCMAKE_BUILD_TYPE=Release +//go:generate cmake --build build --parallel +//go:generate cmake --install build diff --git a/array.go b/internal/metal/array.go similarity index 99% rename from array.go rename to internal/metal/array.go index 0968bda..e580304 100644 --- a/array.go +++ b/internal/metal/array.go @@ -1,6 +1,6 @@ //go:build darwin && arm64 -package mlx +package metal /* #include diff --git a/dtype.go b/internal/metal/dtype.go similarity index 99% rename from dtype.go rename to internal/metal/dtype.go index eae583f..1e57c65 100644 --- a/dtype.go +++ b/internal/metal/dtype.go @@ -1,6 +1,6 @@ //go:build darwin && arm64 -package mlx +package metal // #include "mlx/c/mlx.h" import "C" diff --git a/mlx.go b/internal/metal/metal.go similarity index 80% rename from mlx.go rename to internal/metal/metal.go index 470e1f7..d997407 100644 --- a/mlx.go +++ b/internal/metal/metal.go @@ -1,27 +1,15 @@ //go:build darwin && arm64 -// Package mlx provides Go bindings for Apple's MLX framework via mlx-c. -// -// Build mlx-c before use: -// -// cd pkg/mlx && go generate ./... -// -// Build (MLX is auto-enabled on darwin/arm64): -// -// go build -o core . -package mlx - -//go:generate cmake -S . -B build -DCMAKE_INSTALL_PREFIX=dist -DCMAKE_BUILD_TYPE=Release -//go:generate cmake --build build --parallel -//go:generate cmake --install build +// Package metal provides Go bindings for Apple's MLX framework via mlx-c. +package metal /* #cgo CXXFLAGS: -std=c++17 #cgo CFLAGS: -mmacosx-version-min=26.0 -#cgo CPPFLAGS: -I${SRCDIR}/dist/include -#cgo LDFLAGS: -L${SRCDIR}/dist/lib -lmlxc -lmlx +#cgo CPPFLAGS: -I${SRCDIR}/../../dist/include +#cgo LDFLAGS: -L${SRCDIR}/../../dist/lib -lmlxc -lmlx #cgo darwin LDFLAGS: -framework Foundation -framework Metal -framework Accelerate -#cgo darwin LDFLAGS: -Wl,-rpath,${SRCDIR}/dist/lib +#cgo darwin LDFLAGS: -Wl,-rpath,${SRCDIR}/../../dist/lib #include #include diff --git a/stream.go b/internal/metal/stream.go similarity index 99% rename from stream.go rename to internal/metal/stream.go index 248a224..4b3afd9 100644 --- a/stream.go +++ b/internal/metal/stream.go @@ -1,6 +1,6 @@ //go:build darwin && arm64 -package mlx +package metal /* #include "mlx/c/mlx.h"