defmodule Zig.Assembler do
@moduledoc """
Assembles the staging directory for zig content.
The staging directory contains:
- `build.zig` for the library file.
"""
alias Zig.Builder
@doc "staging directory for the zigler assembly"
def directory(module) do
Path.join(System.tmp_dir(), to_string(module))
end
def assemble(module, opts) do
directory = directory(module)
File.mkdir_p!(directory)
opts =
Keyword.take(opts, [
:to,
:from,
:link_lib,
:build_opts,
:stage1,
:include_dir,
:c_src,
:packages
])
opts = Keyword.merge([to: directory], opts)
Builder.build(module, opts)
end
end