From d47da18958b5214def5127e201f60668c566d9bb Mon Sep 17 00:00:00 2001 From: Starla Insigna Date: Sun, 25 Aug 2013 17:07:35 -0400 Subject: Moved to an autoconf-based build system --- .hgignore | 13 +++- Makefile | 45 -------------- Makefile.am | 7 +++ acinclude.m4 | 185 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ chlstate.cpp | 4 +- configure.ac | 44 ++++++++++++++ hsglobal.cpp | 4 +- hslocal.cpp | 6 +- hsnew.cpp | 4 +- hssubmit.cpp | 6 +- htpstate.cpp | 6 +- includes.h | 4 +- mazeoflife.cpp | 4 +- titlestate.cpp | 4 +- 14 files changed, 269 insertions(+), 67 deletions(-) delete mode 100644 Makefile create mode 100644 Makefile.am create mode 100644 acinclude.m4 create mode 100644 configure.ac diff --git a/.hgignore b/.hgignore index d76b74e..85018a3 100644 --- a/.hgignore +++ b/.hgignore @@ -1,2 +1,13 @@ -build .DS_Store +(.*)\.o +Makefile.in +aclocal.m4 +autom4te.cache +configure +.deps +config.log +config.status +missing +install-sh +depcomp +mazeoflife diff --git a/Makefile b/Makefile deleted file mode 100644 index 8a9d3b5..0000000 --- a/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -PROJECT = mazeoflife -LTARGET = build/$(PROJECT) -WTARGET = build/$(PROJECT).exe -CC = g++ -WINCC = i586-mingw32msvc-g++ -WINDRES = i586-mingw32msvc-windres -FILES = $(addprefix build/,$(wildcard *.cpp)) -HEADERS = $(wildcard *.h) -MODULES = $(patsubst %.cpp,%,$(FILES)) -SOURCES = $(addsuffix .o,$(MODULES)) -WINSRC = $(addsuffix win,$(SOURCES)) -RES = $(wildcard resources/*) -CRES = $(patsubst resources/%,build/%,$(RES)) -LINCCFL = `sdl-config --cflags` -I/usr/local/Cellar/sdl_net/1.2.8/include/SDL/ -I/usr/local/Cellar/sdl_ttf/2.0.11/include/SDL/ -LINLDFL = `sdl-config --libs` -lSDL_ttf -lSDL_net -WINCCFL = `/opt/SDL-1.2.9/bin/i386-mingw32msvc-sdl-config --cflags` -DWINDOWS -WINLDFL = `/opt/SDL-1.2.9/bin/i386-mingw32msvc-sdl-config --libs` -lSDL_ttf -lSDL_net - -all: init $(LTARGET) $(WTARGET) -linux: init $(LTARGET) -windows: init $(WTARGET) - -init: - mkdir -p build - -clean: - rm -rdfv build - -$(LTARGET): $(SOURCES) $(CRES) - $(CC) $(SOURCES) -o $(LTARGET) $(LINLDFL) - -$(SOURCES): build/%.o: %.cpp $(HEADERS) - $(CC) -c $< -o $@ $(LINCCFL) - -$(WTARGET): $(WINSRC) $(CRES) build/winres.o - $(WINCC) $(WINSRC) build/winres.o -o $(WTARGET) $(WINLDFL) - -$(WINSRC): build/%.owin: %.cpp $(HEADERS) - $(WINCC) -c $< -o $@ $(WINCCFL) - -build/winres.o: winres.rc - $(WINDRES) $? $@ - -$(CRES): build/%: resources/% - cp $? $@ diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..f1b00a1 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,7 @@ +AUTOMAKE_OPTIONS = subdir-objects +ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS} + +bin_PROGRAMS = mazeoflife +mazeoflife_SOURCES = chlstate.cpp gamestate.cpp highscore.cpp hsglobal.cpp hslist.cpp hslocal.cpp hsnew.cpp hssubmit.cpp htpstate.cpp mazeoflife.cpp titlestate.cpp +AM_CXXFLAGS = $(SDLTTF_CXXFLAGS) $(SDLNET_CXXFLAGS) +mazeoflife_LDADD = $(SDLTTF_LIBS) $(SDLNET_LIBS) diff --git a/acinclude.m4 b/acinclude.m4 new file mode 100644 index 0000000..0d44c45 --- /dev/null +++ b/acinclude.m4 @@ -0,0 +1,185 @@ +# Configure paths for SDL +# Sam Lantinga 9/21/99 +# stolen from Manish Singh +# stolen back from Frank Belew +# stolen from Manish Singh +# Shamelessly stolen from Owen Taylor + +# serial 1 + +dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS +dnl +AC_DEFUN([AM_PATH_SDL], +[dnl +dnl Get the cflags and libraries from the sdl-config script +dnl +AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)], + sdl_prefix="$withval", sdl_prefix="") +AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)], + sdl_exec_prefix="$withval", sdl_exec_prefix="") +AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program], + , enable_sdltest=yes) + + if test x$sdl_exec_prefix != x ; then + sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix" + if test x${SDL_CONFIG+set} != xset ; then + SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config + fi + fi + if test x$sdl_prefix != x ; then + sdl_config_args="$sdl_config_args --prefix=$sdl_prefix" + if test x${SDL_CONFIG+set} != xset ; then + SDL_CONFIG=$sdl_prefix/bin/sdl-config + fi + fi + + as_save_PATH="$PATH" + if test "x$prefix" != xNONE; then + PATH="$prefix/bin:$prefix/usr/bin:$PATH" + fi + AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH]) + PATH="$as_save_PATH" + min_sdl_version=ifelse([$1], ,0.11.0,$1) + AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) + no_sdl="" + if test "$SDL_CONFIG" = "no" ; then + no_sdl=yes + else + SDL_CFLAGS=`$SDL_CONFIG $sdl_config_args --cflags` + SDL_LIBS=`$SDL_CONFIG $sdl_config_args --libs` + + sdl_major_version=`$SDL_CONFIG $sdl_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + sdl_minor_version=`$SDL_CONFIG $sdl_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_sdltest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_CXXFLAGS="$CXXFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $SDL_CFLAGS" + CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" + LIBS="$LIBS $SDL_LIBS" +dnl +dnl Now check if the installed SDL is sufficiently new. (Also sanity +dnl checks the results of sdl-config to some extent +dnl + rm -f conf.sdltest + AC_TRY_RUN([ +#include +#include +#include +#include "SDL.h" + +char* +my_strdup (char *str) +{ + char *new_str; + + if (str) + { + new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); + strcpy (new_str, str); + } + else + new_str = NULL; + + return new_str; +} + +int main (int argc, char *argv[]) +{ + int major, minor, micro; + char *tmp_version; + + /* This hangs on some systems (?) + system ("touch conf.sdltest"); + */ + { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = my_strdup("$min_sdl_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_sdl_version"); + exit(1); + } + + if (($sdl_major_version > major) || + (($sdl_major_version == major) && ($sdl_minor_version > minor)) || + (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); + printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); + printf("*** best to upgrade to the required version.\n"); + printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); + printf("*** to point to the correct copy of sdl-config, and remove the file\n"); + printf("*** config.cache before re-running configure\n"); + return 1; + } +} + +],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + CXXFLAGS="$ac_save_CXXFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_sdl" = x ; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$SDL_CONFIG" = "no" ; then + echo "*** The sdl-config script installed by SDL could not be found" + echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the SDL_CONFIG environment variable to the" + echo "*** full path to sdl-config." + else + if test -f conf.sdltest ; then + : + else + echo "*** Could not run SDL test program, checking why..." + CFLAGS="$CFLAGS $SDL_CFLAGS" + CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" + LIBS="$LIBS $SDL_LIBS" + AC_TRY_LINK([ +#include +#include "SDL.h" + +int main(int argc, char *argv[]) +{ return 0; } +#undef main +#define main K_and_R_C_main +], [ return 0; ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding SDL or finding the wrong" + echo "*** version of SDL. If it is not finding SDL, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means SDL was incorrectly installed" + echo "*** or that you have moved SDL since it was installed. In the latter case, you" + echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ]) + CFLAGS="$ac_save_CFLAGS" + CXXFLAGS="$ac_save_CXXFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + SDL_CFLAGS="" + SDL_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(SDL_CFLAGS) + AC_SUBST(SDL_LIBS) + rm -f conf.sdltest +]) \ No newline at end of file diff --git a/chlstate.cpp b/chlstate.cpp index 48bf8c2..5c9f488 100644 --- a/chlstate.cpp +++ b/chlstate.cpp @@ -2,8 +2,8 @@ ChooseHighscoreListState::ChooseHighscoreListState() { - background = SDL_LoadBMP("chl.bmp"); - pointer = SDL_LoadBMP("pointer.bmp"); + background = SDL_LoadBMP("resources/chl.bmp"); + pointer = SDL_LoadBMP("resources/pointer.bmp"); selection = 0; } diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..f311aa6 --- /dev/null +++ b/configure.ac @@ -0,0 +1,44 @@ +AC_INIT(mazeoflife, version-2.0) +AC_PREREQ([2.59]) +AM_INIT_AUTOMAKE([1.10 no-define foreign]) +AC_PROG_CXX +AC_CONFIG_FILES([Makefile]) + +dnl Check for SDL +SDL_VERSION=1.2.0 +AM_PATH_SDL($SDL_VERSION, + :, + AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!]) +) +CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" +LIBS="$LIBS $SDL_LIBS" + +dnl Check for SDL_ttf +AC_ARG_WITH([sdl-ttf-include-path], + [AS_HELP_STRING([--with-sdl-ttf-include-path], + [location of the SDL_ttf headers, defaults to /usr/include/SDL])], + [SDLTTF_CXXFLAGS="-I$withval"], + [SDLTTF_CXXFLAGS="-I/usr/include/SDL"]) +AC_SUBST([SDLTTF_CXXFLAGS]) + +AC_ARG_WITH([sdl-ttf-lib-path], + [AS_HELP_STRING([--with-sdl-ttf-lib-path], [location of the SDL_ttf library])], + [SDLTTF_LIBS="-L$withval -lsdl_ttf"], + [SDLTTF_LIBS="-lsdl_ttf"]) +AC_SUBST([SDLTTF_LIBS]) + +dnl Check for SDL_net +AC_ARG_WITH([sdl-net-include-path], + [AS_HELP_STRING([--with-sdl-net-include-path], + [location of the SDL_net headers, defaults to /usr/include/SDL])], + [SDLNET_CXXFLAGS="-I$withval"], + [SDLNET_CXXFLAGS="-I/usr/include/SDL"]) +AC_SUBST([SDLNET_CXXFLAGS]) + +AC_ARG_WITH([sdl-net-lib-path], + [AS_HELP_STRING([--with-sdl-net-lib-path], [location of the SDL_net library])], + [SDLNET_LIBS="-L$withval -lsdl_net"], + [SDLNET_LIBS="-lsdl_net"]) +AC_SUBST([SDLNET_LIBS]) + +AC_OUTPUT \ No newline at end of file diff --git a/hsglobal.cpp b/hsglobal.cpp index c21d314..3076403 100644 --- a/hsglobal.cpp +++ b/hsglobal.cpp @@ -2,8 +2,8 @@ GlobalHighscoreListState::GlobalHighscoreListState() { - options = SDL_LoadBMP("hlo_rtm.bmp"); - pointer = SDL_LoadBMP("pointer.bmp"); + options = SDL_LoadBMP("resources/hlo_rtm.bmp"); + pointer = SDL_LoadBMP("resources/pointer.bmp"); list = SDL_CreateRGBSurface(SDL_SWSURFACE || SDL_SRCCOLORKEY, 480, 480, 32, 0,0,0,0); Uint32 bgColor = SDL_MapRGB(list->format, 255, 255, 255); diff --git a/hslocal.cpp b/hslocal.cpp index b33a094..eec87e2 100644 --- a/hslocal.cpp +++ b/hslocal.cpp @@ -6,12 +6,12 @@ LocalHighscoreListState::LocalHighscoreListState(bool fromGame) if (fromGame) { - options = SDL_LoadBMP("hlo_paartm.bmp"); + options = SDL_LoadBMP("resources/hlo_paartm.bmp"); } else { - options = SDL_LoadBMP("hlo_rtm.bmp"); + options = SDL_LoadBMP("resources/hlo_rtm.bmp"); } - pointer = SDL_LoadBMP("pointer.bmp"); + pointer = SDL_LoadBMP("resources/pointer.bmp"); LocalHighscoreList* lhl = new LocalHighscoreList(); list = lhl->render(); diff --git a/hsnew.cpp b/hsnew.cpp index 2f3e0a2..b4894c2 100644 --- a/hsnew.cpp +++ b/hsnew.cpp @@ -4,8 +4,8 @@ NewHighscoreState::NewHighscoreState(int level) { this->level = level; - options = SDL_LoadBMP("hlo_passartm.bmp"); - pointer = SDL_LoadBMP("pointer.bmp"); + options = SDL_LoadBMP("resources/hlo_passartm.bmp"); + pointer = SDL_LoadBMP("resources/pointer.bmp"); lhl = new NewHighscoreList(level); newpos = lhl->getNewPos(); diff --git a/hssubmit.cpp b/hssubmit.cpp index 7d4c551..eaacb88 100644 --- a/hssubmit.cpp +++ b/hssubmit.cpp @@ -2,7 +2,7 @@ SubmitHighscoreListState::SubmitHighscoreListState(char* hsname, int level) { - pointer = SDL_LoadBMP("pointer.bmp"); + pointer = SDL_LoadBMP("resources/pointer.bmp"); this->hsname = hsname; this->level = level; @@ -38,9 +38,9 @@ int SubmitHighscoreListState::LoadHighscoreList(void* pParam) if (lhl->hasFailed()) { - ((SubmitHighscoreListState*)pParam)->options = SDL_LoadBMP("hlo_passartm.bmp"); + ((SubmitHighscoreListState*)pParam)->options = SDL_LoadBMP("resources/hlo_passartm.bmp"); } else { - ((SubmitHighscoreListState*)pParam)->options = SDL_LoadBMP("hlo_paartm.bmp"); + ((SubmitHighscoreListState*)pParam)->options = SDL_LoadBMP("resources/hlo_paartm.bmp"); } SDL_Rect oSpace = {0, 440, ((SubmitHighscoreListState*)pParam)->options->w, ((SubmitHighscoreListState*)pParam)->options->h}; diff --git a/htpstate.cpp b/htpstate.cpp index fbf6b71..0771290 100644 --- a/htpstate.cpp +++ b/htpstate.cpp @@ -2,9 +2,9 @@ HowToPlayState::HowToPlayState() { - background1 = SDL_LoadBMP("htp1.bmp"); - background2 = SDL_LoadBMP("htp2.bmp"); - pointer = SDL_LoadBMP("pointer.bmp"); + background1 = SDL_LoadBMP("resources/htp1.bmp"); + background2 = SDL_LoadBMP("resources/htp2.bmp"); + pointer = SDL_LoadBMP("resources/pointer.bmp"); secondPage = false; selection = 0; diff --git a/includes.h b/includes.h index 6023709..38523b7 100644 --- a/includes.h +++ b/includes.h @@ -1,6 +1,6 @@ #include -#include -#include +#include +#include #include #include #include diff --git a/mazeoflife.cpp b/mazeoflife.cpp index 9033526..107a640 100644 --- a/mazeoflife.cpp +++ b/mazeoflife.cpp @@ -33,7 +33,7 @@ int main(int argc, char *argv[]) SDL_WM_SetCaption("Maze Of Life", NULL); SDL_Surface* icon; - icon = SDL_LoadBMP("icon.bmp"); + icon = SDL_LoadBMP("resources/icon.bmp"); SDL_WM_SetIcon(icon, NULL); /* @@ -118,7 +118,7 @@ Uint32 tick(Uint32 interval, void *param) TTF_Font* loadFont(int size) { - TTF_Font* tmpfont = TTF_OpenFont("mono.ttf", size); + TTF_Font* tmpfont = TTF_OpenFont("resources/mono.ttf", size); if (tmpfont == NULL) { diff --git a/titlestate.cpp b/titlestate.cpp index 95023e5..5a9b91e 100644 --- a/titlestate.cpp +++ b/titlestate.cpp @@ -2,8 +2,8 @@ TitleState::TitleState() { - background = SDL_LoadBMP("title.bmp"); - pointer = SDL_LoadBMP("pointer.bmp"); + background = SDL_LoadBMP("resources/title.bmp"); + pointer = SDL_LoadBMP("resources/pointer.bmp"); selection = 0; } -- cgit 1.4.1