######################## # Utility Declarations # ######################## ifeq ($(VERBOSE_BUILD),true) DO_CC=$(CC) $(CFLAGS) -o $@ -c $< DO_CXX=$(CXX) $(CFLAGS) -o $@ -c $< else DO_CC=@$(ECHO) "CC: $@" ;\ $(CC) $(CFLAGS) -o $@ -c $< DO_CXX=@$(ECHO) "CXX: $@" ;\ $(CXX) $(CFLAGS) -o $@ -c $< endif ######################## # GameLib Declarations # ######################## CFLAGS += -IGameLib GAMELIB_HEADS = \ GameLib/Time.h \ GameLib/Util.h \ GameLib/QuadArray2D.h \ GameLib/Draw.h \ GameLib/Input.h \ GameLib/Audio.h \ GameLib/Anim.h \ GameLib/Entity.h \ GameLib/GameLib.h GAMELIBS_OBJS = \ $(BUILDDIR)/GameLib/Time.o \ $(BUILDDIR)/GameLib/Util.o \ $(BUILDDIR)/GameLib/QuadArray2D.o \ $(BUILDDIR)/GameLib/Draw.o \ $(BUILDDIR)/GameLib/Input.o \ $(BUILDDIR)/GameLib/Audio.o \ $(BUILDDIR)/GameLib/Anim.o \ $(BUILDDIR)/GameLib/Entity.o \ $(BUILDDIR)/GameLib/GameLib.o RES_GAMELIB_OUT = $(BUILDDIR)/$(RES_GAMELIB) ##################### # Game Declarations # ##################### GAME_HEADS = $(GAMELIB_HEADS) Game/GameEnts.h Game/GameMap.h GAME_OBJS = \ $(BUILDDIR)/Game/GameEnts.o \ $(BUILDDIR)/Game/GameMap.o \ $(BUILDDIR)/Game/main.o RES_GAME_OUT = $(BUILDDIR)/$(RES_GAME) ################# # General Rules # ################# all: $(BUILDDIR) $(RES_GAME_OUT) $(BUILDDIR): $(MKDIR) $(BUILDDIR) $(MKDIR) $(BUILDDIR)/GameLib $(MKDIR) $(BUILDDIR)/Game clean: $(RM) $(GAMELIBS_OBJS) $(RES_GAMELIB_OUT) $(GAME_OBJS) $(RES_GAME_OUT) run: $(BUILDDIR) $(RES_GAME_OUT) $(LAUNCHER) ./$(RES_GAME_OUT) debug rebuild: clean all ################# # GameLib Rules # ################# $(BUILDDIR)/GameLib/Time.o: GameLib/Time.c $(HEADS) $(DO_CC) $(BUILDDIR)/GameLib/Util.o: GameLib/Util.c $(HEADS) $(DO_CC) $(BUILDDIR)/GameLib/QuadArray2D.o: GameLib/QuadArray2D.c $(HEADS) $(DO_CC) $(BUILDDIR)/GameLib/Draw.o: GameLib/Draw.c $(HEADS) $(DO_CC) $(BUILDDIR)/GameLib/Input.o: GameLib/Input.c $(HEADS) $(DO_CC) $(BUILDDIR)/GameLib/Audio.o: GameLib/Audio.c $(HEADS) $(DO_CC) $(BUILDDIR)/GameLib/Entity.o: GameLib/Entity.c $(HEADS) $(DO_CC) $(BUILDDIR)/GameLib/Anim.o: GameLib/Anim.c $(HEADS) $(DO_CC) $(BUILDDIR)/GameLib/GameLib.o: GameLib/GameLib.c $(HEADS) $(DO_CC) ############## # Game Rules # ############## $(BUILDDIR)/Game/GameEnts.o: Game/GameEnts.c $(HEADS) $(DO_CC) $(BUILDDIR)/Game/GameMap.o: Game/GameMap.c $(HEADS) $(DO_CC) $(BUILDDIR)/Game/main.o: Game/main.c $(HEADS) $(DO_CC) ################ # Result Rules # ################ $(RES_GAMELIB_OUT): $(GAMELIBS_OBJS) @$(ECHO) "STATICLIB: $@" @$(AR) rcs $(RES_GAMELIB_OUT) $(GAMELIBS_OBJS) $(RES_GAME_OUT): $(RES_GAMELIB_OUT) $(GAME_OBJS) @$(ECHO) "LINK: $@" @$(CC) $(GAME_OBJS) $(RES_GAMELIB_OUT) -o $(RES_GAME_OUT) $(CFLAGS) $(LIBS) $(LDFLAGS)