LIBGL := -lGL -lGLU LIBSDL := `sdl-config --libs` LIBS := ${LIBSDL} ${LIBGL} OPTFLAGS := -O2 DBGFLAGS := -ggdb PRFFLAGS := ${DBGFLAGS} -pg #CXX := g++ CXXFLAGS := -Wall -pedantic -ansi ${DBGFLAGS} TARGET := ../run_physics SRCS := # simply to keep every line below the same SRCS += game.cpp SRCS += main.cpp SRCS += mathw.cpp SRCS += ticks.cpp SRCS += Vector2.cpp SRCS += handleSignal.cpp SRCS += entityManager.cpp SRCS += effectManager.cpp SRCS += entityCreator.cpp SRCS += collisionHandler.cpp SRCS += CollisionInfo.cpp SRCS += Entities/Ball.cpp SRCS += Entities/Entity.cpp SRCS += Entities/Line.cpp SRCS += Entities/Particle.cpp SRCS += Entities/PhysicsEntity.cpp SRCS += Entities/Point.cpp SRCS += Entities/Polygon.cpp SRCS += Entities/WindParticle.cpp SRCS += GameStates/CreatingPolygon.cpp SRCS += GameStates/GameState.cpp SRCS += GameStates/Paused.cpp SRCS += GameStates/Running.cpp SRCS += Effects/Effect.cpp SRCS += Effects/Gravity.cpp SRCS += Effects/Screen.cpp SRCS += input/inputManager.cpp SRCS += graphics/graphics.cpp OBJS := ${SRCS:.cpp=.o} DEPENDS := ${SRCS:.cpp=.d} HRDS := ${SRCS:.cpp=.h} HRDS := ${HRDS:main.h=} # remove main.h HRDS += debug.h HRDS += graphics/colors.h TARS := ${SRCS} ${HRDS} Makefile VERBOSE := 0 ifeq (${VERBOSE},0) # quiet the echo command Q1 := @ # quiet the command that is `replaced' by an echo Q2 := @ else # EAT the echo command as if it was not there Q1 := @true # NOTE: the space between @true and the # is VERY important!! # do not quiet the command output Q2 := endif .PHONY: all all: ${TARGET} ${TARGET}: ${OBJS} ${Q1}echo "${CXX}: $@" ${Q2}${CXX} ${CXXFLAGS} -o ${TARGET} $^ ${LIBS} # rule to make a depend file from a .cpp %.d: %.cpp ${Q1}echo "DEP: $@" ${Q2}${CXX} -M ${CXXFLAGS} $< | sed 's,: , $@: ,' > $@ # rule to make an object file from a .cpp %.o: %.cpp ${Q1}echo "${CXX}: $@" ${Q2}${CXX} ${CXXFLAGS} -c -o $@ $< .PHONY: clean clean: ${Q1}echo "CLEAN: OBJS" ${Q2}rm -f ${OBJS} ${Q1}echo "CLEAN: TARGET" ${Q2}rm -f ${TARGET} .PHONY: distclean distclean: clean ${Q1}echo "CLEAN: DEPENDS" ${Q2}rm -f ${DEPENDS} ${Q1}echo "CLEAN: tags prof gmon.out" ${Q2}rm -f tags prof gmon.out tags: ${SRCS} ctags $^ .PHONY: tar tar: ${Q1}echo "tar: physics.tar.bz2" ${Q2}rm -f physics.tar # prevents appending ${Q2}for f in ${TARS}; do\ tar -C ../.. -rf physics.tar "physics/src/$$f"; done ${Q2}bzip2 physics.tar .PHONY: git-tar git-tar: ${Q1}echo "git-archive: ../physics.tar.bz2" ${Q2}cd ..; git-archive --prefix=physics/ HEAD | bzip2 > physics.tar.bz2 .PHONY: run run: all ${TARGET} .PHONY: gdb gdb: all gdb ${TARGET} .PHONY: val val: all valgrind --leak-check=full ${TARGET} .PHONY: prof prof: all ${TARGET} gprof -b ${TARGET} > prof kprof -f prof -include ${DEPENDS}