makefile (1546B)
1 2 SRC_DIR := src 3 INC_DIR := include 4 OBJ_DIR := obj 5 LIB_DIR := lib 6 BIN_DIR := bin 7 8 ENGINE_SRC_DIR := $(SRC_DIR)/engine 9 ENGINE_INC_DIR := $(INC_DIR)/engine 10 ENGINE_OBJ_DIR := $(OBJ_DIR)/engine 11 12 ENGINE_SRC := $(wildcard $(ENGINE_SRC_DIR)/*.c) 13 ENGINE_OBJ := $(ENGINE_SRC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o) 14 ENGINE_LIB := $(BIN_DIR)/libengine.a 15 16 APP_SRC_DIR := $(SRC_DIR)/app 17 APP_OBJ_DIR := $(OBJ_DIR)/app 18 19 APP_SRC := $(wildcard $(APP_SRC_DIR)/*.c) 20 APP_OBJ := $(APP_SRC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o) 21 APP_EXE := $(BIN_DIR)/app 22 23 RES_DIR := resources 24 SHD_DIR := shaders 25 REL_DIR := release 26 27 SHD := $(wildcard $(SHD_DIR)/*.vs) $(wildcard $(SHD_DIR)/*.fs) 28 29 CPPFLAGS := -I$(INC_DIR) -MMD -MP 30 CFLAGS := -Wall 31 LDFLAGS := -L$(LIB_DIR) -L$(BIN_DIR) 32 LDLIBS := -lengine -lglfw3 -framework Cocoa -framework OpenGL -framework IOKit 33 34 .PHONY: all clean 35 36 all: $(APP_EXE) $(ENGINE_LIB) 37 38 $(APP_EXE): $(APP_OBJ) $(ENGINE_LIB) | $(BIN_DIR) 39 $(CC) $(LDFLAGS) $(APP_OBJ) $(LDLIBS) -o $@ 40 41 $(APP_OBJ_DIR)/%.o: $(APP_SRC_DIR)/%.c | $(APP_OBJ_DIR) 42 $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ 43 44 $(ENGINE_LIB): $(ENGINE_OBJ) | $(BIN_DIR) 45 ar -r $@ $^ 46 47 $(ENGINE_OBJ_DIR)/%.o: $(ENGINE_SRC_DIR)/%.c | $(ENGINE_OBJ_DIR) 48 $(CC) -I$(ENGINE_INC_DIR) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ 49 50 $(BIN_DIR) $(OBJ_DIR) $(APP_OBJ_DIR) $(ENGINE_OBJ_DIR): 51 mkdir -p $@ 52 53 release: $(EXE) $(SHD) 54 mkdir -p $(REL_DIR) 55 cp -r $(BIN_DIR) $(REL_DIR) 56 cp -r $(SHD_DIR) $(REL_DIR) 57 cp $(RES_DIR)/* $(REL_DIR) 58 chmod +x $(REL_DIR)/run.sh 59 60 clean: 61 @$(RM) -rv $(BIN_DIR) $(OBJ_DIR) 62 63 -include $(ENGINE_OBJ:.o=.d)