diff --git a/Makefile b/Makefile index 416b58a..12a03f3 100755 --- a/Makefile +++ b/Makefile @@ -24,14 +24,18 @@ ifeq "$(OS)" "mingw32" ADDL_CFLAGS=-rdynamic -mwindows -DOS_WIN32 EXESUFFIX=.exe LIBSUFFIX=.a + DEPMAKEFILE=Makefile.mingw32 endif ifeq "$(OS)" "macosx" ADDL_CFLAGS=-rdynamic -DOS_MACOSX + DEPMAKEFILE=Makefile.macosx endif ifeq "$(OS)" "linux" ADDL_CFLAGS=-rdynamic -DOS_LINUX + DEPMAKEFILE=Makefile.apt + LIBSUFFIX=.a endif ifeq "$(CFG)" "Debug" @@ -101,6 +105,7 @@ clean: rm -f $(OUTDIR)/$(LIBTARGET).* rm -rf docs/* cd demo && for dir in $(DEMOS); do cd $$dir && make CFG=$(CFG) OS=$(OS) clean; if [ $$? -ne 0 ]; then exit 1 ; fi; cd .. ; done + .PHONY: demos demos: cd demo && for dir in $(DEMOS); do cd $$dir && make "ADDL_CFLAGS=$(ADDL_CFLAGS)" CFG=$(CFG) OS=$(OS); if [ $$? -ne 0 ]; then exit 1 ; fi; cd .. ; done @@ -124,4 +129,4 @@ uninstall: .PHONY: deps deps: - cd deps && make \ No newline at end of file + cd deps && make -f $(DEPMAKEFILE) diff --git a/demo/backtrace/Makefile b/demo/backtrace/Makefile index 7dd2271..11f1cef 100755 --- a/demo/backtrace/Makefile +++ b/demo/backtrace/Makefile @@ -25,6 +25,7 @@ ifeq "$(OS)" "mingw32" endif ifeq "$(OS)" "linux" ADDL_CFLAGS=-DBUILD_LINUX -rdynamic + ADDL_LDFLAGS=-rdynamic endif # default for release configs @@ -49,7 +50,7 @@ ifeq "$(CFG)" "Debug" CXXFLAGS=-I../../ -I$(HEADERDIR) -I./cpp -pg -g -ggdb -gstabs -Wall -c $(SDL_CFLAGS) $(ADDL_CFLAGS) endif -LINKLIBS=-L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf +LINKLIBS=$(ADDL_LDFLAGS) -L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf BINOBJ=$(OUTDIR)/demo.o diff --git a/demo/bouncingball/Makefile b/demo/bouncingball/Makefile index 7dd2271..11f1cef 100755 --- a/demo/bouncingball/Makefile +++ b/demo/bouncingball/Makefile @@ -25,6 +25,7 @@ ifeq "$(OS)" "mingw32" endif ifeq "$(OS)" "linux" ADDL_CFLAGS=-DBUILD_LINUX -rdynamic + ADDL_LDFLAGS=-rdynamic endif # default for release configs @@ -49,7 +50,7 @@ ifeq "$(CFG)" "Debug" CXXFLAGS=-I../../ -I$(HEADERDIR) -I./cpp -pg -g -ggdb -gstabs -Wall -c $(SDL_CFLAGS) $(ADDL_CFLAGS) endif -LINKLIBS=-L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf +LINKLIBS=$(ADDL_LDFLAGS) -L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf BINOBJ=$(OUTDIR)/demo.o diff --git a/demo/exploder/Makefile b/demo/exploder/Makefile index 7dd2271..11f1cef 100755 --- a/demo/exploder/Makefile +++ b/demo/exploder/Makefile @@ -25,6 +25,7 @@ ifeq "$(OS)" "mingw32" endif ifeq "$(OS)" "linux" ADDL_CFLAGS=-DBUILD_LINUX -rdynamic + ADDL_LDFLAGS=-rdynamic endif # default for release configs @@ -49,7 +50,7 @@ ifeq "$(CFG)" "Debug" CXXFLAGS=-I../../ -I$(HEADERDIR) -I./cpp -pg -g -ggdb -gstabs -Wall -c $(SDL_CFLAGS) $(ADDL_CFLAGS) endif -LINKLIBS=-L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf +LINKLIBS=$(ADDL_LDFLAGS) -L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf BINOBJ=$(OUTDIR)/demo.o diff --git a/demo/explodingball/Makefile b/demo/explodingball/Makefile index 7dd2271..11f1cef 100755 --- a/demo/explodingball/Makefile +++ b/demo/explodingball/Makefile @@ -25,6 +25,7 @@ ifeq "$(OS)" "mingw32" endif ifeq "$(OS)" "linux" ADDL_CFLAGS=-DBUILD_LINUX -rdynamic + ADDL_LDFLAGS=-rdynamic endif # default for release configs @@ -49,7 +50,7 @@ ifeq "$(CFG)" "Debug" CXXFLAGS=-I../../ -I$(HEADERDIR) -I./cpp -pg -g -ggdb -gstabs -Wall -c $(SDL_CFLAGS) $(ADDL_CFLAGS) endif -LINKLIBS=-L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf +LINKLIBS=$(ADDL_LDFLAGS) -L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf BINOBJ=$(OUTDIR)/demo.o diff --git a/demo/frictionball/Makefile b/demo/frictionball/Makefile index 7dd2271..11f1cef 100755 --- a/demo/frictionball/Makefile +++ b/demo/frictionball/Makefile @@ -25,6 +25,7 @@ ifeq "$(OS)" "mingw32" endif ifeq "$(OS)" "linux" ADDL_CFLAGS=-DBUILD_LINUX -rdynamic + ADDL_LDFLAGS=-rdynamic endif # default for release configs @@ -49,7 +50,7 @@ ifeq "$(CFG)" "Debug" CXXFLAGS=-I../../ -I$(HEADERDIR) -I./cpp -pg -g -ggdb -gstabs -Wall -c $(SDL_CFLAGS) $(ADDL_CFLAGS) endif -LINKLIBS=-L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf +LINKLIBS=$(ADDL_LDFLAGS) -L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf BINOBJ=$(OUTDIR)/demo.o diff --git a/demo/frictionball/gmon.out b/demo/frictionball/gmon.out index c282fa7..2183aef 100755 Binary files a/demo/frictionball/gmon.out and b/demo/frictionball/gmon.out differ diff --git a/demo/gravity/Makefile b/demo/gravity/Makefile index 7dd2271..11f1cef 100755 --- a/demo/gravity/Makefile +++ b/demo/gravity/Makefile @@ -25,6 +25,7 @@ ifeq "$(OS)" "mingw32" endif ifeq "$(OS)" "linux" ADDL_CFLAGS=-DBUILD_LINUX -rdynamic + ADDL_LDFLAGS=-rdynamic endif # default for release configs @@ -49,7 +50,7 @@ ifeq "$(CFG)" "Debug" CXXFLAGS=-I../../ -I$(HEADERDIR) -I./cpp -pg -g -ggdb -gstabs -Wall -c $(SDL_CFLAGS) $(ADDL_CFLAGS) endif -LINKLIBS=-L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf +LINKLIBS=$(ADDL_LDFLAGS) -L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf BINOBJ=$(OUTDIR)/demo.o diff --git a/demo/gravity/gmon.out b/demo/gravity/gmon.out index 9e3adab..fabb659 100755 Binary files a/demo/gravity/gmon.out and b/demo/gravity/gmon.out differ diff --git a/demo/helloworld/Makefile b/demo/helloworld/Makefile index 7dd2271..11f1cef 100755 --- a/demo/helloworld/Makefile +++ b/demo/helloworld/Makefile @@ -25,6 +25,7 @@ ifeq "$(OS)" "mingw32" endif ifeq "$(OS)" "linux" ADDL_CFLAGS=-DBUILD_LINUX -rdynamic + ADDL_LDFLAGS=-rdynamic endif # default for release configs @@ -49,7 +50,7 @@ ifeq "$(CFG)" "Debug" CXXFLAGS=-I../../ -I$(HEADERDIR) -I./cpp -pg -g -ggdb -gstabs -Wall -c $(SDL_CFLAGS) $(ADDL_CFLAGS) endif -LINKLIBS=-L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf +LINKLIBS=$(ADDL_LDFLAGS) -L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf BINOBJ=$(OUTDIR)/demo.o diff --git a/demo/tilemap/Makefile b/demo/tilemap/Makefile index 7dd2271..11f1cef 100755 --- a/demo/tilemap/Makefile +++ b/demo/tilemap/Makefile @@ -25,6 +25,7 @@ ifeq "$(OS)" "mingw32" endif ifeq "$(OS)" "linux" ADDL_CFLAGS=-DBUILD_LINUX -rdynamic + ADDL_LDFLAGS=-rdynamic endif # default for release configs @@ -49,7 +50,7 @@ ifeq "$(CFG)" "Debug" CXXFLAGS=-I../../ -I$(HEADERDIR) -I./cpp -pg -g -ggdb -gstabs -Wall -c $(SDL_CFLAGS) $(ADDL_CFLAGS) endif -LINKLIBS=-L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf +LINKLIBS=$(ADDL_LDFLAGS) -L../../$(CFG) -L$(LIBDIR) -l$(LINKLIB) $(SDL_LDFLAGS) -lSDL_image -lSDL_mixer -lSDL_gfx -lSDL_ttf BINOBJ=$(OUTDIR)/demo.o diff --git a/deps/Makefile.apt b/deps/Makefile.apt new file mode 100755 index 0000000..5e8679c --- /dev/null +++ b/deps/Makefile.apt @@ -0,0 +1,65 @@ +all: clean packages +#all: packages + +# +.PHONY: packages +packages: SDL SDL_image SDL_mixer SDL_ttf SDL_gfx libxml2 cmake yasm ffmpeg SDL_ffmpeg yaml-cpp + +.PHONY: SDL +SDL: + sudo apt-get install libsdl-dev + +.PHONY: +SDL_image: + sudo apt-get install libsdl-image1.2-dev + +.PHONY: SDL_mixer +SDL_mixer: + sudo apt-get install libsdl-mixer1.2-dev + +.PHONY: SDL_ttf +SDL_ttf: + sudo apt-get install libsdl-ttf2.0-dev + +.PHONY: SDL_gfx +SDL_gfx: + sudo apt-get install libsdl-gfx1.2-dev + +.PHONY: cmake +cmake: + sudo apt-get install cmake + +.PHONY: yasm +yasm: + sudo apt-get install yasm + +.PHONY: ffmpeg +ffmpeg: + wget http://www.ffmpeg.org/releases/ffmpeg-0.7-rc1.tar.gz + tar -zxvf ffmpeg-0.7-rc1.tar.gz + cd ffmpeg-0.7-rc1 && ./configure $(FFMPEG_CONFIGURE_FLAGS) && make && make install + +.PHONY: SDL_ffmpeg +SDL_ffmpeg: + wget http://www.arjanhouben.nl/SDL_ffmpeg/1.3.1/SDL_ffmpeg-1.3.1.tar.gz + tar -zxvf SDL_ffmpeg-1.3.1.tar.gz + cd SDL_ffmpeg && cmake -G "MSYS Makefiles" . && make + cp SDL_ffmpeg/lib/libSDL_ffmpeg.dll.a /usr/local/lib/ + cp SDL_ffmpeg/include/SDL/SDL_ffmpeg.h /usr/local/include + +.PHONY: yaml-cpp +yaml-cpp: + wget http://yaml-cpp.googlecode.com/files/yaml-cpp-0.2.6.tar.gz + tar -zxvf yaml-cpp-0.2.6.tar.gz + cd yaml-cpp && cmake -G "MSYS Makefiles" . && make + cp -vR yaml-cpp/include/yaml-cpp /usr/local/include/ + cp yaml-cpp/libyaml-cpp.a /usr/local/lib/ + +.PHONY: libxml2 +libxml2: + sudo apt-get install libxml2-dev + +.PHONY: clean +clean: + rm -rf *gz *zip *bz2 + find . -maxdepth 1 -type d -iname "[a-zA-Z0-9]*" -exec rm -rf \{\} \; \ No newline at end of file diff --git a/deps/Makefile b/deps/Makefile.mingw32 similarity index 99% rename from deps/Makefile rename to deps/Makefile.mingw32 index 14dd74f..2e53b03 100755 --- a/deps/Makefile +++ b/deps/Makefile.mingw32 @@ -4,7 +4,7 @@ CFLAGS=$(CFLAGS) -I/usr/local/include -I/usr/include LDFLAGS=$(LDFLAGS) -L/usr/local/lib -L/usr/lib .PHONY: packages -packages: SDL zlib libpng libjpeg libtiff SDL_image libvorbis flac SDL_mixer freetype SDL_ttf SDL_gfx libxml2 cmake ffmpeg SDL_ffmpeg backtrace +packages: SDL zlib libpng libjpeg libtiff SDL_image libvorbis flac SDL_mixer freetype SDL_ttf SDL_gfx libxml2 cmake ffmpeg SDL_ffmpeg backtrace yaml-cpp .PHONY: SDL SDL: diff --git a/libsdlgame/Backtrace.cpp b/libsdlgame/Backtrace.cpp index f34fbf4..c427089 100755 --- a/libsdlgame/Backtrace.cpp +++ b/libsdlgame/Backtrace.cpp @@ -2,23 +2,7 @@ #include #endif -#include -#include - -void RegisterStacktrace() -{ -#ifdef __WIN32__ - if ( LoadLibraryA("backtrace.dll") == NULL ) { - std::cerr << "Unable to locate backtrace.dll.\n"; - exit(1); - } -#else - signal(SIGSEGV, &__libsdlgame_sigsegvhandler); -#endif -} - #ifndef __WIN32__ - #include #include #include @@ -54,7 +38,7 @@ void __libsdlgame_show_stacktrace (void) void __libsdlgame_sigsegvhandler(int z) { fprintf(stderr, "Caught segmentation fault; stacktrace follows.\n"); - print_trace(); + __libsdlgame_show_stacktrace(); #ifdef DEBUG_LOOPONSEGFAULT fprintf(stderr, "Entering infinite loop; please connect a debugger to me and then kill me.\n"); fflush(stderr); @@ -65,3 +49,17 @@ void __libsdlgame_sigsegvhandler(int z) #endif +#include +#include + +void RegisterStacktrace() +{ +#ifdef __WIN32__ + if ( LoadLibraryA("backtrace.dll") == NULL ) { + std::cerr << "Unable to locate backtrace.dll.\n"; + exit(1); + } +#else + signal(SIGSEGV, &__libsdlgame_sigsegvhandler); +#endif +}