summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile48
1 files changed, 48 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..311e873
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,48 @@
+CC := clang
+INCLUDES := -I./include -Ideps/glfw-3.3.8/include/GLFW
+CFLAGS := -Wall -Wextra -O2 $(INCLUDES)
+LDFLAGS := -lglfw3
+
+# Directories
+SRC_DIR := new_src
+BUILD_DIR := build
+OBJ_DIR := $(BUILD_DIR)/objs
+SHADER_DIR := assets/shaders
+SHADER_OUT_DIR := $(BUILD_DIR)/shaders
+
+# Source files
+SRCS := $(wildcard $(SRC_DIR)/*.c $(SRC_DIR)/**/*.c)
+OBJS := $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRCS))
+
+# Library outputs
+STATIC_LIB := $(BUILD_DIR)/libceleritas.a
+SHARED_LIB := $(BUILD_DIR)/libceleritas.so
+
+## Makefile notes
+# $@ - target of current rule
+# $^ - prerequisites of current rule separated by spaces
+# $< - first prerequisite file only
+
+$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
+ @mkdir -p $(OBJ_DIR)
+ $(CC) $(CFLAGS) -c $< -o $@
+
+$(SHARED_LIB): $(OBJS)
+ @mkdir -p $(BUILD_DIR)
+ $(CC) -shared -o $@ $^ $(LDFLAGS)
+
+$(STATIC_LIB): $(OBJS)
+ @mkdir -p $(BUILD_DIR)
+ ar rcs $@ $^
+
+shared: $(SHARED_LIB)
+
+static: $(STATIC_LIB)
+
+.PHONY: all
+all: shared static
+
+
+.PHONY: clean
+clean:
+ rm -rf $(BUILD_DIR)