summaryrefslogtreecommitdiffstats
path: root/sdl/mingw32
diff options
context:
space:
mode:
Diffstat (limited to 'sdl/mingw32')
-rw-r--r--sdl/mingw3245
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)