package main
import (
"fmt"
"os"
"runtime"
ccgo "modernc.org/ccgo/v4/lib"
)
func main() {
if ccgo.IsExecEnv() {
goarch := os.Getenv("TARGET_GOARCH")
goos := os.Getenv("TARGET_GOOS")
if goarch == "" {
goarch = runtime.GOARCH
}
if goos == "" {
goos = runtime.GOOS
}
if err := ccgo.NewTask(goos, goarch, os.Args,
os.Stdout, os.Stderr, nil).Main(); err != nil {
fmt.Fprintln(os.Stderr, err)
}
return
}
treeSitterDir := os.Getenv("HOME") + "/src/github.com/tree-sitter/tree-sitter/lib"
goos := runtime.GOOS
goarch := runtime.GOARCH
config := []string{
os.Args[0],
"--package-name", "treesitter",
"-o", "tree-sitter.go",
"--prefix-external", "X",
"--prefix-field", "F",
"--prefix-static-internal", "_",
"--prefix-static-none", "_",
"--prefix-typename", "T",
"--prefix-tagged-struct", "T",
"--prefix-tagged-union", "T",
"--prefix-enumerator", "_",
"--prefix-undefined", "_",
"-std=c11",
"-D_POSIX_C_SOURCE=200112L",
"-D__TINYC__",
"-Dinline=",
"-I", treeSitterDir + "/src",
"-I", treeSitterDir + "/include",
"-ignore-unsupported-alignment",
"-extended-errors",
treeSitterDir + "/src/lib.c",
}
if err := ccgo.NewTask(goos, goarch, config,
os.Stdout, os.Stderr, nil).Main(); err != nil {
fmt.Fprintf(os.Stderr, "ccgo: %v\n", err)
os.Exit(1)
}
}