From 3c3c195d2c5230cc55a9c3b67af12fb1c6f84b87 Mon Sep 17 00:00:00 2001 From: Patrik Gornicz Date: Sat, 15 Nov 2008 18:05:15 -0500 Subject: [PATCH] starting windows cross compiling --- .gitignore | 1 + src/Makefile.mingw32 | 141 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/debug.h | 2 +- src/handleSignal.cpp | 4 ++ src/main.cpp | 19 ++++++- 5 files changed, 165 insertions(+), 2 deletions(-) create mode 100644 src/Makefile.mingw32 diff --git a/.gitignore b/.gitignore index 20d0e14..9a182e2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ run_physics objs deps +objs.mingw32 diff --git a/src/Makefile.mingw32 b/src/Makefile.mingw32 new file mode 100644 index 0000000..ed5d00a --- /dev/null +++ b/src/Makefile.mingw32 @@ -0,0 +1,141 @@ + +LIBGL := -lopengl32 -lglu32 +LIBSDL := `/usr/mingw32/bin/sdl-config --libs` +LIBS := ${LIBSDL} ${LIBGL} + +OPTFLAGS := -O2 +DBGFLAGS := -ggdb +PRFFLAGS := ${DBGFLAGS} -pg +MYFLAGS := -Wall -pedantic -ansi +CXXFLAGS := ${OPTFLAGS} + +VALFLAGS := --leak-check=full + +CXX := mingw32-g++ + +WORKINGDIR := ../bin-mingw32 +TARGETNAME := run_physics.exe +TARGET := ${WORKINGDIR}/${TARGETNAME} + +SRCS := # simply to keep every line below the same + +DIRS := # := start +DIRS += . +DIRS += Entities +DIRS += GameStates +DIRS += Effects +DIRS += config +DIRS += input +DIRS += graphics + +include $(addsuffix /files.mk,${DIRS}) + +OBJSDIR := ../objs-mingw32/ +OBJS := ${SRCS:.cpp=.o} +OBJS := $(addprefix ${OBJSDIR},${OBJS}) + +DEPSDIR := ../deps/ +DEPS := ${SRCS:.cpp=.d} +DEPS := $(addprefix ${DEPSDIR},${DEPS}) + +BLDDIRS := $(addprefix ${DEPSDIR},${DIRS}) $(addprefix ${OBJSDIR},${DIRS}) +BLDDIRS := $(addsuffix /,${BLDDIRS}) + + +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} + +# how to link the main target +${TARGET}: ${OBJS} + ${Q1}echo "${CXX}: $@" + ${Q2}${CXX} ${CXXFLAGS} -o $@ $^ ${LIBS} + +# how to make a directory +${BLDDIRS}: + ${Q2}mkdir -p $@ + +# rule to make a depend file from a .cpp +${DEPSDIR}%.d: %.cpp | ${BLDDIRS} + ${Q1}echo "DEP: $@" + ${Q2}${CXX} -MM ${CXXFLAGS} $< | sed 's,\(^.*\):,${OBJSDIR}\1 $@:,' > $@ + +# rule to make an object file from a .cpp +${OBJSDIR}%.o: %.cpp | ${BLDDIRS} + ${Q1}echo "${CXX}: $@" + ${Q2}${CXX} ${CXXFLAGS} -c -o $@ $< + + +tags: ${SRCS} + ${Q1}echo "ctags: $@" + ${Q2}ctags $^ + + +.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: DEPS" + ${Q2}rm -f ${DEPS} + ${Q1}echo "CLEAN: tags prof gmon.out" + ${Q2}rm -f tags prof gmon.out + +.PHONY: gitclean +gitclean: + ${Q1}echo "git-clean: show, use gitcleanf to force" + ${Q2}cd ..; git clean -nxd + +.PHONY: gitcleanf +gitcleanf: + ${Q1}echo "git-clean: forced" + ${Q2}cd ..; git clean -fxd + +.PHONY: tar +tar: ../physics.tar.bz2 + +.PHONY: ../physics.tar.bz2 +../physics.tar.bz2: + @echo "git-archive: Warning, archives HEAD not current" + ${Q1}echo "git-archive: ../physics.tar.bz2" + ${Q2}cd ..; git-archive --prefix=physics/ HEAD | bzip2 > physics.tar.bz2 + +.PHONY: run +run: all + cd ${WORKINGDIR}; wine ${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} > src/prof + kprof -f prof + +-include ${DEPS} diff --git a/src/debug.h b/src/debug.h index 9460055..d639b8e 100644 --- a/src/debug.h +++ b/src/debug.h @@ -27,7 +27,7 @@ using std::endl; // comment out when not debugging #define DEBUGGING -// comment out to supress warnings +// comment out to suppress warnings #define WARNINGS // comment out to prevent FPS and UPS printing diff --git a/src/handleSignal.cpp b/src/handleSignal.cpp index 9068827..ef9daa6 100644 --- a/src/handleSignal.cpp +++ b/src/handleSignal.cpp @@ -28,6 +28,7 @@ void sighandler( int sig ); void installSignal() { +#ifndef __WIN32__ // register signal handler struct sigaction sa; sigemptyset( &sa.sa_mask ); @@ -38,6 +39,7 @@ void installSignal() { std::cerr << "could not install SIGINT handler" << std::endl; } +#endif // __WIN32__ } /// ***** Private Methods ***** @@ -45,6 +47,7 @@ void installSignal() // signal handler function void sighandler( int sig ) { +#ifndef __WIN32__ switch(sig) { case SIGINT: @@ -56,4 +59,5 @@ void sighandler( int sig ) // normally an abort is better ... but this is just SIGINT exit(sig); +#endif // __WIN32__ } diff --git a/src/main.cpp b/src/main.cpp index 7576077..1e9d4ad 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -86,7 +86,7 @@ float num = 10; float total = 0; /// ***** MAIN Method ***** -int main() +int main(int argc, char** args) { init(); run(); @@ -102,13 +102,30 @@ void init() graphics::init(); +#ifdef DEBUGGING + cout << "Graphics initialized" << endl; + cout << "Graphics initialized2" << endl; +#endif + game::init(); +#ifdef DEBUGGING + cout << "Game initialized" << endl; +#endif + input::init(); +#ifdef DEBUGGING + cout << "Input initialized" << endl; +#endif + cfg::init(); #ifdef DEBUGGING + cout << "Configs initialized" << endl; +#endif + +#ifdef DEBUGGING cout << "Initialization Complete" << endl; #endif } -- 2.10.2