From: Patrik Gornicz Date: Mon, 27 Apr 2009 19:27:20 +0000 (-0400) Subject: moved files into src, copied dir.mk and Makefile X-Git-Tag: libbear-premerge~105 X-Git-Url: http://gitweb.pgornicz.com/gitweb.cgi?a=commitdiff_plain;h=6da586f4b73dd41405b70805b9e3240673bb0731;p=libbear.git moved files into src, copied dir.mk and Makefile --- diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1b6a3c6 --- /dev/null +++ b/Makefile @@ -0,0 +1,225 @@ + +LIBGL := -lGL -lGLU +LIBSDL := `sdl-config --libs` +LIBS := ${LIBSDL} ${LIBGL} + +OPTFLAGS := -O2 +DBGFLAGS := -ggdb +PRFFLAGS := ${DBGFLAGS} -pg +MYFLAGS := -Wall -pedantic -ansi + +VALFLAGS := --leak-check=full +CXXFLAGS := ${MYFLAGS} ${DBGFLAGS} + +CXX := g++ + +DIRS := # := start + +SRCSDIR := src/ +SRCS := # := start + +OBJSDIR := objsd/ +OBJS := # := start + +DEPSDIR := deps/ +DEPS := # := start + +# include all of the dir.mk +DIRMK := dir.mk +include ${SRCSDIR}${DIRMK} + +WORKINGDIR := bind/ + +CFGDIRNAME := configs/ +SRCCFGDIR := ${CFGDIRNAME} +DSTCFGDIR := ${WORKINGDIR}${CFGDIRNAME} + +CFGS := # := start +CFGS += keys.cfg +CFGS := $(addprefix ${DSTCFGDIR},${CFGS}) + +SRCLIBSDIR := libs/ +DSTLIBSDIR := ${WORKINGDIR} + +LIBSTXT := # := start +LIBSTXT += COPYING-SDL +LIBSTXT += README-SDL +LIBSTXT += VERSION-SDL +LIBSTXT := $(addprefix ${DSTLIBSDIR},${LIBSTXT}) + +LIBSCPY := # := start +LIBSCPY += libSDL.so +LIBSCPY := $(addprefix ${DSTLIBSDIR},${LIBSCPY}) + +SRCTXTDIR := +DSTTXTDIR := ${WORKINGDIR} + +TXT := # := start +TXT += COPYING +TXT := $(addprefix ${DSTTXTDIR},${TXT}) + +TARGETNAME := run_physics +TARGETTMP := ${OBJSDIR}${TARGETNAME} +TARGET := ${WORKINGDIR}${TARGETNAME} + +DEPSBLDDIRS := ${DEPSDIR} $(addprefix ${DEPSDIR},${DIRS}) +OBJSBLDDIRS := ${OBJSDIR} $(addprefix ${OBJSDIR},${DIRS}) +BLDDIRS := ${OBJSBLDDIRS} ${DEPSBLDDIRS} ${WORKINGDIR} ${DSTCFGDIR} + +INCDIRS := ${SRCSDIR} + + +PRNTFMT := printf "%-5s: %s\n" + +VERBOSE := 0 + +ifeq (${VERBOSE},0) + # quiet the printf command + Q1 := @ + # quiet the command that is `replaced' by an echo + Q2 := @ +else + # EAT the printf 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} ${CFGS} ${LIBSTXT} ${LIBSCPY} ${TXT} + +# cause the fancy $$ directory rules to work out +.SECONDEXPANSION: + +# how to link the main target +${TARGETTMP}: ${OBJS} + ${Q1}${PRNTFMT} "${CXX}" "$@" + ${Q2}${CXX} ${CXXFLAGS} -o $@ $^ ${LIBS} + +# rule to copy tmp target to working directory +${TARGET}: ${TARGETTMP} | ${WORKINGDIR} + ${Q1}${PRNTFMT} "cp" "$@" + ${Q2}cp $< $@ + +# rule to copy the config files into the working directory +${DSTCFGDIR}%: ${SRCCFGDIR}% | $$(dir $$@) + ${Q1}${PRNTFMT} "cp" "$@" + ${Q2}cp $< $@ + +# rule to copy the library files into the working directory +${DSTLIBSDIR}%: ${SRCLIBSDIR}% | $$(dir $$@) + ${Q1}${PRNTFMT} "cp" "$@" + ${Q2}cp $< $@ + +# rule to copy the library files into the working directory +${DSTTXTDIR}%: ${SRCTXTDIR}% | $$(dir $$@) + ${Q1}${PRNTFMT} "cp" "$@" + ${Q2}cp $< $@ + +# how to make a directory +${BLDDIRS}: + ${Q1}${PRNTFMT} "mkdir" "$@" + ${Q2}mkdir -p $@ + +# rule to make an object file from a .cpp +${OBJSDIR}%.o: ${SRCSDIR}%.cpp | $$(dir $$@) + ${Q1}${PRNTFMT} "${CXX}" "$@" + ${Q2}${CXX} ${CXXFLAGS} -c -o $@ $< -I "${INCDIRS}" + +# rule to make a depend file from a .cpp +# be clever and escape the / chars in file paths +# DON'T simply use another sed delimiter or it can't appear in the file paths +${DEPSDIR}%.d: ${SRCSDIR}%.cpp | $$(dir $$@) + ${Q1}${PRNTFMT} "DEP" "$@" + ${Q2}${CXX} -MM ${CXXFLAGS} $< -I "${INCDIRS}" | \ + sed 's/\(^.*\):/$(subst /,\/,${OBJSDIR}\1 $@):/' > $@ + +.PHONY: cleanbin +cleanbin: + ${Q1}${PRNTFMT} "rm" "${WORKINGDIR}" + ${Q2}rm -rf ${WORKINGDIR} + +.PHONY: cleanobjs +cleanobjs: + ${Q1}${PRNTFMT} "rm" "${OBJSDIR}" + ${Q2}rm -rf ${OBJSDIR} + +.PHONY: cleandeps +cleandeps: + ${Q1}${PRNTFMT} "rm" "${DEPSDIR}" + ${Q2}rm -rf ${DEPSDIR} + +.PHONY: clean +clean: cleanobjs + +.PHONY: cleanall +cleanall: clean cleanbin cleandeps + +.PHONY: gitclean +gitclean: + ${Q1}${PRNTFMT} "git clean" "showing; use gitcleanf to force removal" + ${Q2}git clean -nxd + +.PHONY: gitcleanf +gitcleanf: + ${Q1}${PRNTFMT} "git clean" "forcing" + ${Q2}git clean -fxd + +.PHONY: tar +tar: physics.tar.bz2 + +.PHONY: physics.tar.bz2 +physics.tar.bz2: + @${PRNTFMT} "git archive" "Warning, archives HEAD not current" + ${Q1}${PRNTFMT} "git archive" "physics.tar.bz2" + ${Q2}git archive --prefix=physics/ HEAD | bzip2 > physics.tar.bz2 + +.PHONY: run +run: all + cd ${WORKINGDIR}; ./${TARGETNAME} + +.PHONY: gdb +gdb: all + cd ${WORKINGDIR}; gdb ${TARGETNAME} + +.PHONY: cgdb +cgdb: all + cd ${WORKINGDIR}; cgdb ${TARGETNAME} + +.PHONY: val +val: all + cd ${WORKINGDIR}; valgrind ${VALFLAGS} ./${TARGETNAME} + +.PHONY: prof +prof: run + cd ${WORKINGDIR}; gprof -b ${TARGETNAME} > prof + cd ${WORKINGDIR}; kprof -f prof + + +MINGMAKEARGS := "LIBGL := -lopengl32 -lglu32" \ + "LIBSDL := `/usr/mingw32/bin/sdl-config --libs`" \ + "LIBSCPY := $(addprefix bin-mingw32/,SDL.dll)" \ + "CXXFLAGS := ${OPTFLAGS}" \ + "CXX := mingw32-g++" \ + "OBJSDIR := objs-mingw32/" \ + "WORKINGDIR := bin-mingw32/" \ + "TARGETNAME := run_physics.exe" + +.PHONY: mingw32 +mingw32: + ${Q1}${PRNTFMT} "make" "mingw32" + ${Q2}${MAKE} ${MINGMAKEARGS} cleanbin cleanobjs + ${Q2}${MAKE} ${MINGMAKEARGS} all + +FINALMAKEARGS := "CXXFLAGS := ${OPTFLAGS}" \ + "OBJSDIR := objs/" \ + "WORKINGDIR := bin/" + +.PHONY: final +final: + ${Q1}${PRNTFMT} "make" "final" + ${Q2}${MAKE} ${FINALMAKEARGS} cleanbin cleanobjs + ${Q2}${MAKE} ${FINALMAKEARGS} all + + +-include ${DEPS} diff --git a/Vector2.cpp b/src/Vector2.cpp similarity index 100% rename from Vector2.cpp rename to src/Vector2.cpp diff --git a/Vector2.h b/src/Vector2.h similarity index 100% rename from Vector2.h rename to src/Vector2.h diff --git a/src/dir.mk b/src/dir.mk new file mode 100644 index 0000000..303c805 --- /dev/null +++ b/src/dir.mk @@ -0,0 +1,47 @@ +NEWSRCS := # insure blank + +NEWSRCS += game.cpp +NEWSRCS += main.cpp +NEWSRCS += mathw.cpp +NEWSRCS += ticks.cpp +NEWSRCS += Vector2.cpp +NEWSRCS += handleSignal.cpp + +NEWSRCS += entityCreator.cpp +NEWSRCS += entityManager.cpp +NEWSRCS += effectManager.cpp +NEWSRCS += collisionManager.cpp +NEWSRCS += CollisionInfo.cpp + +NEWSRCS += debug.cpp + + +NEWDIRS := # insure blank + +NEWDIRS += Entities/ +NEWDIRS += GameStates/ +NEWDIRS += Effects/ +NEWDIRS += config/ +NEWDIRS += input/ +NEWDIRS += graphics/ +NEWDIRS += locks/ + + +# Post dir setup + +CURDIR := + +NEWSRCS := $(addprefix ${CURDIR},${NEWSRCS}) +NEWDIRS := $(addprefix ${CURDIR},${NEWDIRS}) +NEWOBJS := ${NEWSRCS:.cpp=.o} +NEWDEPS := ${NEWSRCS:.cpp=.d} + +# Append to lists + +SRCS += ${NEWSRCS} +DIRS += ${NEWDIRS} +OBJS += $(addprefix ${OBJSDIR},${NEWOBJS}) +DEPS += $(addprefix ${DEPSDIR},${NEWDEPS}) + + +include $(addprefix ${SRCSDIR},$(addsuffix ${DIRMK},${NEWDIRS}))