1
1
# NOTE: compile with -s to get it REAL small for release
2
- # NOTE: cpp parser is NOT behaving WELL
3
2
CC := clang
4
3
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
7
9
CROSS_DIR := cross_compiled
8
10
TREE-SITTER_INCLUDES = -I tree-sitter/lib/include -I tree-sitter/lib/src
9
11
SRC := $(wildcard src/* .c)
@@ -12,32 +14,28 @@ OBJ := $(patsubst src/%.c,obj/%.o,$(SRC)) $(TREE_SITTER_OBJ)
12
14
13
15
PREFIX ?= /usr/local/
14
16
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
16
18
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 )
23
21
24
22
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 )
26
24
27
25
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 )
29
27
30
28
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 )
32
30
33
31
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 )
35
33
36
34
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 )
38
36
39
37
obj/% .o : src/% .c | obj_dir
40
- $(CC ) $(CFLAGS ) -c $^ -o $@ $(DEBUG_RELEASE )
38
+ $(CC ) $(CFLAGS ) -c $^ -o $@ $(TARGET_OPT )
41
39
42
40
ts_obj_dir :
43
41
@mkdir -p ts_obj
@@ -78,9 +76,10 @@ compile_commands:
78
76
| grep -w ' \-[co]' \
79
77
| jq -nR ' [inputs|{command:., directory:".", file: match("\\-c [\\w\\-/]+\\.c").string[3:], output: match("\\-o [\\w\\-/]+\\.o").string[3:]}]' > compile_commands.json
80
78
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