-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
36 lines (26 loc) · 1.06 KB
/
Makefile
File metadata and controls
36 lines (26 loc) · 1.06 KB
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
CC = gcc
CFLAGS = -Iinclude -g $(shell pkg-config --cflags freetype2) -fPIC -fvisibility=hidden
LDFLAGS = -Wl,--whole-archive -lglfw -Wl,--no-whole-archive -lGL -ldl -lpthread -lportaudio -lfreetype -lX11 -lXrandr -lXi -lm
BUILD_DIR = build
LIB_DIR = $(BUILD_DIR)/lib
OBJ_DIR = $(BUILD_DIR)/obj
EXAMPLES_DIR = examples
BUILD_INCLUDE_DIR = $(BUILD_DIR)/include
RESOLVED_HEADER = $(BUILD_INCLUDE_DIR)/odc_resolved.h
CORE_SRC = src/glad.c src/debug.c src/engine.c src/renderer.c src/shader.c src/input.c src/font.c src/oscillator.c src/audio.c src/note_parser.c
CORE_OBJ = $(CORE_SRC:%.c=$(OBJ_DIR)/%.o)
LIBRARY = $(LIB_DIR)/libodc.so
all: $(LIBRARY) headers
headers: $(BUILD_INCLUDE_DIR)
@echo "Copying headers to $(BUILD_INCLUDE_DIR)"
@cp -r include/* $(BUILD_INCLUDE_DIR)/
$(BUILD_DIR) $(OBJ_DIR) $(LIB_DIR) $(BUILD_INCLUDE_DIR):
mkdir -p $@
$(LIBRARY): $(CORE_OBJ) | $(BUILD_DIR) $(LIB_DIR)
$(CC) -shared -o $@ $^ $(LDFLAGS)
$(OBJ_DIR)/%.o: %.c | $(BUILD_DIR) $(OBJ_DIR)
mkdir -p $(dir $@)
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -rf $(BUILD_DIR)
.PHONY: all clean