terrain

Real-time terrain generation using marching cubes
git clone git://git.christianermann.dev/terrain
Log | Files | Refs | README | LICENSE

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)