diff options
Diffstat (limited to 'sdl/mingw32')
-rw-r--r-- | sdl/mingw32 | 45 |
1 files changed, 28 insertions, 17 deletions
diff --git a/sdl/mingw32 b/sdl/mingw32 index 94a935b..951fdf7 100644 --- a/sdl/mingw32 +++ b/sdl/mingw32 @@ -1,33 +1,44 @@ -PROG = pyramid -OBJS = $(PROG).o math3d.o gltools.o glframe.o shader.o +BIN = pyramid +SRC = pyramid.c math3d.c gltools.c glframe.c shader.c CC = gcc +CFLAGS = -Wall -std=c99 -MD DBGFLAGS = -g -O0 ifdef DEBUG - CFLAGS = $(DBGFLAGS) -Wall -std=c99 + CFLAGS += $(DBGFLAGS) else - CFLAGS = -Wall -std=c99 -O2 -march=native -mtune=native + CFLAGS += -O2 -march=native -mtune=native endif LDFLAGS = -lglew32 -lopengl32 -lglu32 -lm -lfreeglut -lmingw32 -lsdlmain -lsdl -lsdl_image -mwindows -$(PROG): $(OBJS) - $(CC) -o $(PROG) $(OBJS) $(LDFLAGS) +OBJ_DIR = obj +DEPS_DIR = obj +BIN_DIR = . -$(PROG).o: $(PROG).c math3d.h gltools.h glframe.h - $(CC) -c $(CFLAGS) $(PROG).c +C_FILES = $(filter %.c, $(SRC)) +DEP_FILES = $(addprefix $(DEPS_DIR)\, $(addsuffix .d, $(notdir $(subst .c,,$(SRC))))) +OBJ_FILES = $(addprefix $(OBJ_DIR)\, $(addsuffix .o, $(notdir $(subst .c,,$(SRC))))) -math3d.o: math3d.c math3d.h - $(CC) -c $(CFLAGS) math3d.c +INCL = -I/include -gltools.o: gltools.c gltools.h math3d.h - $(CC) -c $(CFLAGS) gltools.c +define C_template +$(1): $(2) + @mkdir -p $$(OBJ_DIR) + @mkdir -p $$(DEPS_DIR) + $$(CC) -c $$(CFLAGS) $$(INCL) $$< -o $$@ +endef -glframe.o: glframe.c glframe.h math3d.h - $(CC) -c $(CFLAGS) glframe.c +all: $(BIN) -shader.o: shader.c shader.h math3d.h - $(CC) -c $(CFLAGS) shader.c +$(foreach cfile, $(C_FILES), $(eval $(call C_template, $(OBJ_DIR)\$(notdir $(subst .c,,$(cfile))).o, $(cfile)))) + +$(BIN): $(OBJ_FILES) + @mkdir -p $(BIN_DIR) + $(CC) -o $(BIN_DIR)/$@ $(OBJ_FILES) $(LDFLAGS) .PHONY: clean clean: - rm -f *.o ./$(PROG).exe + rm -rf $(OBJ_DIR) + rm -f $(BIN_DIR)/$(BIN) + +-include $(DEP_FILES) |