Skip to content

Commit 4cead30

Browse files
author
Lol Lmao
committed
batch cross compilation a go
1 parent cc3647a commit 4cead30

File tree

1 file changed

+21
-22
lines changed

1 file changed

+21
-22
lines changed

Makefile

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
# NOTE: compile with -s to get it REAL small for release
2-
# NOTE: cpp parser is NOT behaving WELL
32
CC := clang
43
CFLAGS := -Wall -Wextra -ggdb3 -O2
5-
ARCH := x86_64
6-
OS := native
4+
ifdef TARGET
5+
TARGET_OPT := -target $(TARGET)
6+
else
7+
TARGET_OPT :=
8+
endif
79
CROSS_DIR := cross_compiled
810
TREE-SITTER_INCLUDES = -I tree-sitter/lib/include -I tree-sitter/lib/src
911
SRC := $(wildcard src/*.c)
@@ -12,32 +14,28 @@ OBJ := $(patsubst src/%.c,obj/%.o,$(SRC)) $(TREE_SITTER_OBJ)
1214

1315
PREFIX ?= /usr/local/
1416

15-
.PHONY: default all test clean clean_ts clean_obj compile_commnds obj_dir ts_obj_dir install uninstall
17+
.PHONY: default all test clean clean_ts clean_obj compile_commnds obj_dir ts_obj_dir install uninstall batchxc
1618

17-
default: coil
18-
19-
all: coil
20-
21-
coil: $(OBJ)
22-
$(CC) $(CFLAGS) $(TREE-SITTER_INCLUDES) -o $@ $^
19+
default: $(OBJ)
20+
$(CC) $(CFLAGS) $(TREE-SITTER_INCLUDES) -o coil $^ $(TARGET_OPT)
2321

2422
cross: $(OBJ) | $(CROSS_DIR)
25-
$(CC) $(CFLAGS) -fuse-ld=lld $(TREE-SITTER_INCLUDES) -target $(ARCH)-$(OS) -o $(CROSS_DIR)/coil_$(ARCH)-$(OS) $^
23+
$(CC) $(CFLAGS) $(TREE-SITTER_INCLUDES) -o $(CROSS_DIR)/coil_$(TARGET) $^ $(TARGET_OPT)
2624

2725
ts_obj/tree_sitter.o: | ts_obj_dir
28-
$(CC) $(CFLAGS) $(TREE-SITTER_INCLUDES) -c tree-sitter/lib/src/lib.c -o $@
26+
$(CC) $(CFLAGS) $(TREE-SITTER_INCLUDES) -c tree-sitter/lib/src/lib.c -o $@ $(TARGET_OPT)
2927

3028
ts_obj/%_parser.o: | ts_obj_dir
31-
$(CC) $(CFLAGS) $(TREE-SITTER_INCLDUES) -c tree-sitter-$*/src/parser.c -o $@
29+
$(CC) $(CFLAGS) $(TREE-SITTER_INCLDUES) -c tree-sitter-$*/src/parser.c -o $@ $(TARGET_OPT)
3230

3331
ts_obj/cpp_scanner.o: | ts_obj_dir
34-
$(CC) $(CFLAGS) $(TREE-SITTER_INCLDUES) -c tree-sitter-cpp/src/scanner.c -o $@
32+
$(CC) $(CFLAGS) $(TREE-SITTER_INCLDUES) -c tree-sitter-cpp/src/scanner.c -o $@ $(TARGET_OPT)
3533

3634
obj/coil.o : | obj_dir
37-
$(CC) $(CFLAGS) $(TREE-SITTER_INCLUDES) -c src/coil.c -o $@
35+
$(CC) $(CFLAGS) $(TREE-SITTER_INCLUDES) -c src/coil.c -o $@ $(TARGET_OPT)
3836

3937
obj/%.o: src/%.c | obj_dir
40-
$(CC) $(CFLAGS) -c $^ -o $@ $(DEBUG_RELEASE)
38+
$(CC) $(CFLAGS) -c $^ -o $@ $(TARGET_OPT)
4139

4240
ts_obj_dir:
4341
@mkdir -p ts_obj
@@ -78,9 +76,10 @@ compile_commands:
7876
| grep -w '\-[co]' \
7977
| jq -nR '[inputs|{command:., directory:".", file: match("\\-c [\\w\\-/]+\\.c").string[3:], output: match("\\-o [\\w\\-/]+\\.o").string[3:]}]' > compile_commands.json
8078

81-
# AAAAAAAAAAAAAA
82-
batch-cross:
83-
make ARCH=x86_64 OS=windows clean-objs clean-ts cross CC="zig cc"
84-
make ARCH=x86_64 OS=linux clean-objs clean-ts cross CC="zig cc"
85-
make ARCH=aarch64 OS=macos clean-objs clean-ts cross CC="zig cc"
86-
make ARCH=aarch64 OS=linux clean-objs clean-ts cross CC="zig cc"
79+
# macos is freaking out about my FILE forward dec >:^(
80+
# AND I CANT INCLUDE stdio.h EITHER! WHY?
81+
batchxc:
82+
make clean-objs clean-ts cross CC="zig cc" TARGET=x86_64-windows-gnu
83+
make clean-objs clean-ts cross CC="zig cc" TARGET=x86_64-linux-musl
84+
make clean-objs clean-ts cross CC="zig cc" TARGET=aarch64-windows-gnu
85+
make clean-objs clean-ts cross CC="zig cc" TARGET=aarch64-linux-gnu

0 commit comments

Comments
 (0)