1 | ifeq ($(shell uname -m), x86_64) |
---|
2 | ifeq ($(shell [ -d /lib64 ] && echo 64), 64) |
---|
3 | CFLAGS = -m32 -march=i686 -mcpu=pentium4 -fomit-frame-pointer |
---|
4 | CPPFLAGS = -m32 |
---|
5 | LDFLAGS = -melf_i386 |
---|
6 | endif |
---|
7 | else # ! x86_64 |
---|
8 | |
---|
9 | ifeq ($(shell uname -m), i686) |
---|
10 | CFLAGS = -march=i686 -mcpu=i686 -fomit-frame-pointer |
---|
11 | CPPFLAGS = -m32 |
---|
12 | LDFLAGS = -melf_i386 |
---|
13 | else # ! i686 |
---|
14 | |
---|
15 | ifeq ($(shell uname -m), ppc64) |
---|
16 | # mcpu means march and mtune means mcpu, oh well |
---|
17 | CFLAGS = -m32 -mcpu=750 -mtune=970 |
---|
18 | CPPFLAGS = -m32 |
---|
19 | LDFLAGS = -melf32ppclinux |
---|
20 | else # ! ppc64 |
---|
21 | |
---|
22 | ifeq ($(shell uname -m), ppc) |
---|
23 | # mcpu means march and mtune means mcpu, oh well |
---|
24 | CFLAGS = -mcpu=750 -mtune=970 |
---|
25 | CPPFLAGS = -m32 |
---|
26 | LDFLAGS = -melf32ppclinux |
---|
27 | endif # ppc |
---|
28 | |
---|
29 | endif # ppc64 |
---|
30 | endif # i686 |
---|
31 | endif # x86_64 |
---|
32 | |
---|
33 | CFLAGS += -fno-common -O2 -Wall -Iglibc -I. |
---|
34 | CPPFLAGS += -Iglibc -I. |
---|
35 | LDFLAGS += -O2 |
---|
36 | |
---|
37 | CC = $(CROSS_COMPILE)gcc |
---|
38 | CPP = $(CROSS_COMPILE)cpp |
---|
39 | LD = $(CROSS_COMPILE)ld |
---|
40 | |
---|
41 | OBJCOPY = $(CROSS_COMPILE)objcopy |
---|
42 | |
---|
43 | LIBGCC = $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) |
---|
44 | LIBGCCEH = $(shell $(CC) $(CFLAGS) -print-file-name=libgcc_eh.a) |
---|
45 | LIBM = $(shell $(CC) $(CFLAGS) -print-file-name=libm.a) |
---|
46 | LIBC = $(shell $(CC) $(CFLAGS) -print-file-name=libc.a) |
---|
47 | |
---|
48 | all: bytecode.text.bin bytecode.data.bin main xy2d vote |
---|
49 | |
---|
50 | bytecode.o: main.c |
---|
51 | $(CC) -DBYTECODE -c $(CFLAGS) $< -o $@ |
---|
52 | |
---|
53 | bytecode.lds.s: bytecode.lds.S |
---|
54 | $(CPP) $(CPPFLAGS) $< -o $@ |
---|
55 | |
---|
56 | bytecode.lds: bytecode.lds.s |
---|
57 | grep -A100000000 SECTION $< > $@ |
---|
58 | |
---|
59 | bytecode: bytecode.o bytecode.lds |
---|
60 | $(LD) $(LDFLAGS) -static -T bytecode.lds $< --start-group $(LIBGCC) $(LIBC) $(LIBM) $(LIBGCCEH) --end-group -o $@ |
---|
61 | |
---|
62 | bytecode.text.bin: bytecode |
---|
63 | $(OBJCOPY) -O binary $< -j .text $@ |
---|
64 | |
---|
65 | bytecode.data.bin: bytecode |
---|
66 | $(OBJCOPY) -O binary $< -j .data $@ |
---|
67 | |
---|
68 | clean: |
---|
69 | rm -f bytecode bytecode.lds bytecode.lds.s |
---|
70 | rm -f xy2d vote main |
---|
71 | rm -f *.pyc *.bin *.o |
---|
72 | |
---|
73 | xy2d: xy2d.c |
---|
74 | $(CC) -W -Wall $^ -o $@ |
---|
75 | |
---|
76 | vote: vote.c |
---|
77 | $(CC) -W -Wall $^ -o $@ |
---|
78 | |
---|
79 | main: main.c |
---|
80 | $(CC) -Wall -O3 -funroll-loops -ffast-math -W -Wall $^ -o $@ $$(pkg-config --cflags --libs sdl) -lSDL_image -lm |
---|
81 | |
---|
82 | .PHONY: clean |
---|