-
Notifications
You must be signed in to change notification settings - Fork 2
/
Makefile
134 lines (104 loc) · 3.56 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
SHELL = /bin/sh
.SUFFIXES:
.SUFFIXES: .c .o
CFLAGS = -Wall -Wextra -mtune=native -no-pie `sdl2-config --cflags`
WARN_OFF = -Wno-implicit-function-declaration
CFLAGS1 = $(CFLAGS) $(WARN_OFF)
LDFLAGS = `sdl2-config --libs` -lm -lGL
LDFLAGS1 = $(LDFLAGS) -lSDL2_image
LDFLAGS3 = $(LDFLAGS1) -lGLEW
LDFLAGS4 = $(LDFLAGS) -lGLU
LDFLAGS5 = $(LDFLAGS1) $(LDFLAGS3)
# Define the source directory
SOURCE_DIR := src/
# Define the build directory
BUILD_DIR := build/
# Create the build directory if it doesn't exist
$(shell mkdir -p $(BUILD_DIR))
TARGETS = 0 \
0a \
1 \
1a \
1b \
1c \
2 \
2a \
2a1 \
2b \
2c \
2d \
3 \
3a1 \
3a2 \
texture_SOIL \
texture_SDL2 \
texture_devil \
texture_stb_image
.PHONY: all
all: $(TARGETS)
# get an OpenGL Window
0: $(SOURCE_DIR)helper.c $(SOURCE_DIR)0.c
$(CC) $(CFLAGS) -o $(BUILD_DIR)$@ $+ $(LDFLAGS1)
# get used OpenGL Version
0a: $(SOURCE_DIR)helper.c $(SOURCE_DIR)0a.c
$(CC) $(CFLAGS) -o $(BUILD_DIR)$@ $+ $(LDFLAGS1)
# draw a white rectangle
1: $(SOURCE_DIR)helper.c $(SOURCE_DIR)1.c
$(CC) $(CFLAGS) -o $(BUILD_DIR)$@ $+ $(LDFLAGS1)
# draw 4 rectangles
1a: $(SOURCE_DIR)helper.c $(SOURCE_DIR)1a.c
$(CC) $(CFLAGS) -o $(BUILD_DIR)$@ $+ $(LDFLAGS1)
# draw 4 rectangles and rotate the screen
1b: $(SOURCE_DIR)helper.c $(SOURCE_DIR)1b.c
$(CC) $(CFLAGS) -o $(BUILD_DIR)$@ $+ $(LDFLAGS1)
# draw 4 rectangles and rotate them individually around their center.
1c: $(SOURCE_DIR)helper.c $(SOURCE_DIR)1c.c
$(CC) $(CFLAGS) -o $(BUILD_DIR)$@ $+ $(LDFLAGS1)
# use shader-program, one custom vertex-shader, one custom fragment-shader
2: $(SOURCE_DIR)2.c
$(CC) $(CFLAGS1) -o $(BUILD_DIR)$@ $+ $(LDFLAGS1)
# animate gradient using attribute and uniform
2a: $(SOURCE_DIR)2a.c
$(CC) $(CFLAGS1) -o $(BUILD_DIR)$@ $+ $(LDFLAGS1)
# animate gradient using attribute and uniform
2a1: $(SOURCE_DIR)2a1.c
$(CC) $(CFLAGS) -o $(BUILD_DIR)$@ $+ $(LDFLAGS3)
# embed a default shader
2b: $(SOURCE_DIR)2b.c
$(CC) $(CFLAGS) -o $(BUILD_DIR)$@ $+ $(LDFLAGS3)
# embed multiple shader
2c: $(SOURCE_DIR)2c.c
$(CC) $(CFLAGS) -o $(BUILD_DIR)$@ $+ $(LDFLAGS3)
# make mouse work
2d: $(SOURCE_DIR)2d.c
$(CC) $(CFLAGS) -o $(BUILD_DIR)$@ $+ $(LDFLAGS3)
# load shadertoy fragment shader optional
3: $(SOURCE_DIR)3.c
$(CC) $(CFLAGS) -o $(BUILD_DIR)$@ $+ $(LDFLAGS5)
# getting Textures work
3a: $(SOURCE_DIR)3a.c
$(CC) $(CFLAGS) -o $(BUILD_DIR)$@ $+ $(LDFLAGS5)
# make new shader in preferred Editor
3a1: $(SOURCE_DIR)3a1.c
$(CC) $(CFLAGS) -o $(BUILD_DIR)$@ $+ $(LDFLAGS5)
# make new shader in preferred Editor, check file change via inotify an epoll
3a2: $(SOURCE_DIR)3a2.c
$(CC) $(CFLAGS) -o $(BUILD_DIR)$@ $+ $(LDFLAGS5)
texture_SOIL: $(SOURCE_DIR)helper.c $(SOURCE_DIR)texture_SOIL.c
$(CC) $(CFLAGS) -o $(BUILD_DIR)$@ $+ $(LDFLAGS1) -lSOIL
texture_SDL2: $(SOURCE_DIR)helper.c $(SOURCE_DIR)texture_SDL2.c
$(CC) $(CFLAGS) -o $(BUILD_DIR)$@ $+ $(LDFLAGS1)
texture_devil: $(SOURCE_DIR)helper.c $(SOURCE_DIR)texture_devil.c
$(CC) $(CFLAGS) -o $(BUILD_DIR)$@ $+ $(LDFLAGS1) -lIL -lILU
texture_stb_image: $(SOURCE_DIR)helper.c $(SOURCE_DIR)texture_stb_image.c
$(CC) $(CFLAGS) -o $(BUILD_DIR)$@ $+ $(LDFLAGS1)
.PHONY: clean
clean:
@rm -rf $(BUILD_DIR) 2>/dev/null || true
# Makefile Hilfe:
# $< first dependency
# $@ name of target
# $+ list of all dependencies
# $^ list of all dependencies, no duplicates
# build after save:
# while inotifywait -e close_write ./sourcefile.c; do date +%X; make > /dev/null; done