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"