-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmakefile
79 lines (53 loc) · 1.72 KB
/
makefile
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# specify your own C compiler if you don't have gcc
# change from `gcc` to `cc` for FreeBSD
CC = gcc
# flags (may be gcc-specific)
FLAGS = -O3 -Wall
# debug flags (if you want a debuggable version)
DEBUG = -g -Wall
# asm flags (if you want to read the assembly output)
ASM = -S\
-fverbose-asm\
-masm=intel\
-fno-asynchronous-unwind-tables\
-Wall
# flags for gprof
PROF = -pg -Wall
# flags for linking SDL2
# change to `SDL2 = -D_REENTRANT -I/usr/local/include -L/usr/local/lib -lSDL2` for FreeBSD
SDL2 = -D_REENTRANT -I/usr/include/SDL2 -lSDL2
# name of the target
TARGET = physics.x86
# required sourcefiles
SOURCE = src/geometry.c\
src/geometry.h\
src/main.c\
src/particle.c\
src/particle.h
# expected object files for main.c
OBJS = src/geometry.o src/particle.o
$(TARGET): $(SOURCE)
$(CC) $(FLAGS) -c src/geometry.c -o src/geometry.o -lm
$(CC) $(FLAGS) -c src/particle.c -o src/particle.o
$(CC) $(FLAGS) $(OBJS) src/main.c -o $(TARGET) $(SDL2) -lm
run: $(TARGET)
./$(TARGET)
prof: $(SOURCE)
$(CC) $(PROF) -c src/geometry.c -o src/geometry.o -lm
$(CC) $(PROF) -c src/particle.c -o src/particle.o
$(CC) $(PROF) $(OBJS) src/main.c -o $(TARGET) $(SDL2) -lm
asm: $(SOURCE)
$(CC) $(ASM) -c src/geometry.c -o src/geometry.s
$(CC) $(ASM) -c src/particle.c -o src/particle.s
$(CC) $(ASM) src/main.c -o src/main.s
debug: $(SOURCE)
$(CC) $(DEBUG) -c src/geometry.c -o src/geometry.o -lm
$(CC) $(DEBUG) -c src/particle.c -o src/particle.o
$(CC) $(DEBUG) $(OBJS) src/main.c -o $(TARGET) $(SDL2) -lm
clean: $(TARGET) $(OBJS)
rm $(TARGET)
rm $(OBJS)
clean-asm: src/geometry.s src/main.s src/particle.s
rm src/geometry.s src/main.s src/particle.s
clean-prof: gmon.out $(TARGET)
rm gmon.out $(TARGET)