aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: c69c23b9a16e57d1c2bebd483ad24ec49778b779 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
FLAGS = -Wno-incompatible-library-redeclaration -nostartfiles -nostdlib
SIZE_FLAGS = -Wl,--undefined=main -flto -Oz -ffunction-sections -fdata-sections -Wl,--gc-sections -Wl,--strip-all -finline-hint-functions -fno-builtin -Wl,--print-gc-sections -fno-unwind-tables -fomit-frame-pointer -fno-asynchronous-unwind-tables -fno-ident -fvisibility=hidden -march=native -Wl,--build-id=none

all: m4 c test

clean:
	rm -rf out.*
	rm -rf *.m4.h
	rm -rf perf.data*

m4:
	m4 moonshine.m4 > moonshine.m4.h

c:
	clang main.c -o out.bin $(FLAGS) -O3

test:
	./out.bin

profile:
	clang main.c -o out.bin.profile $(FLAGS) -O3
	perf record ./out.bin.profile
	perf report > ./out.profile.txt

release:
	clang main.c -o out.bin.release $(FLAGS) $(SIZE_FLAGS)

debug: m4
	clang main.c -o out.bin $(FLAGS) -g
	lldb ./out.bin -o run

install:
	# make sure you have your CPATH configured to recognize `~/include/`!
	cp moonshine.h ~/include/moonshine.h
	cp moonshine.m4.h ~/include/moonshine.m4.h

full: m4 c test install