From 464874faa2f3f1e98f573dfb289396753c8e94f8 Mon Sep 17 00:00:00 2001 From: Steve Date: Fri, 23 Mar 2018 18:38:12 +0000 Subject: [PATCH] Start of Windows build. --- .gitignore | 1 + build/buildAll.sh | 11 +++++++++++ build/linux/build.sh | 20 ++++++++++++++++++++ build/win32/build.sh | 39 +++++++++++++++++++++++++++++++++++++++ common.mk | 2 ++ makefile | 7 +++---- makefile.win32 | 21 +++++++++++++++++++++ src/game/credits.h | 1 + src/system/savepng.h | 1 - src/util/util.c | 40 ++++++++++++++++++++++++++++++++++++++++ 10 files changed, 138 insertions(+), 5 deletions(-) create mode 100755 build/buildAll.sh create mode 100755 build/linux/build.sh create mode 100755 build/win32/build.sh create mode 100644 makefile.win32 diff --git a/.gitignore b/.gitignore index c32dfc2..add7f7c 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ data blobwarsAttrition *.o .DS_Store +dist/* diff --git a/build/buildAll.sh b/build/buildAll.sh new file mode 100755 index 0000000..296c5f6 --- /dev/null +++ b/build/buildAll.sh @@ -0,0 +1,11 @@ +#!/bin/bash -e + +VERSION=`egrep 'VERSION = ([0-9.+])' ../common.mk | awk '{print $3}'` +REVISION=`git rev-list HEAD --count` + +mkdir -p ../dist +rm -rf ../dist/* + +linux/build.sh $VERSION $REVISION + +win32/build.sh $VERSION $REVISION diff --git a/build/linux/build.sh b/build/linux/build.sh new file mode 100755 index 0000000..381a959 --- /dev/null +++ b/build/linux/build.sh @@ -0,0 +1,20 @@ +#!/bin/bash -e + +cd `dirname $0` + +BUILDROOT="build/linux" + +cd ../.. + +VERSION=$1 +REVISION=$2 +SIZE=0 + +make clean +make src-dist + +make clean +make LOCALE_DIR=locale +make dist + +rm -rf blobWarsAttrition diff --git a/build/win32/build.sh b/build/win32/build.sh new file mode 100755 index 0000000..cded8ab --- /dev/null +++ b/build/win32/build.sh @@ -0,0 +1,39 @@ +#!/bin/bash -e + +cd `dirname $0` + +BUILDROOT="build/win32" + +cd ../.. + +VERSION=$1 +REVISION=$2 +FOLDER="blobWarsAttrition-$1" +OUT="$BUILDROOT/$FOLDER" + +make -f makefile.win32 clean +make -f makefile.win32 + +mkdir -p $OUT +rm -rf $OUT/* + +cp blobWarsAttrition.exe $OUT + +cp -rL data $OUT +cp -rL gfx $OUT +cp -rL music $OUT +cp -rL sound $OUT +cp -rL manual $OUT +cp -rL locale $OUT +cp LICENSE $OUT +cp README.md $OUT + +cp /usr/x86_64-w64-mingw32/bin/*.dll $OUT + +cd $BUILDROOT + +zip -r blobWarsAttrition-${VERSION}-${REVISION}.win32.zip $FOLDER + +mv *.zip ../../dist + +rm -rf $FOLDER diff --git a/common.mk b/common.mk index 05632a3..d7ca44e 100644 --- a/common.mk +++ b/common.mk @@ -2,6 +2,8 @@ VERSION = 0.8 REVISION = 0 LOCALE_MO = $(patsubst %.po,%.mo,$(wildcard locale/*.po)) +OUT = bin + SEARCHPATH += src SEARCHPATH += src/combat SEARCHPATH += src/entities diff --git a/makefile b/makefile index 1c65c4d..c7b76dd 100644 --- a/makefile +++ b/makefile @@ -1,6 +1,5 @@ PROG = blobwarsAttrition CC = gcc -OUT = bin PREFIX ?= /usr BIN_DIR ?= $(PREFIX)/bin DATA_DIR ?= /opt/$(PROG) @@ -27,7 +26,7 @@ CXXFLAGS += -fms-extensions -std=gnu11 LDFLAGS += `sdl2-config --libs` -lSDL2_mixer -lSDL2_image -lSDL2_ttf -lm -lz -lpng -SHARED_FILES = CHANGELOG LICENSE README.md data gfx manual music sound icons +SHARED_FILES = LICENSE README.md data gfx manual music sound icons DIST_FILES = $(SHARED_FILES) locale $(PROG) SRC_DIST_FILES = $(SHARED_FILES) src makefile* common.mk @@ -79,7 +78,7 @@ uninstall: dist: $(RM) -rf $(PROG)-$(VERSION) mkdir $(PROG)-$(VERSION) - cp -r $(DIST_FILES) $(PROG)-$(VERSION) + cp -rL $(DIST_FILES) $(PROG)-$(VERSION) tar czf $(PROG)-$(VERSION)-$(REVISION).linux-x86.tar.gz $(PROG)-$(VERSION) mkdir -p dist mv $(PROG)-$(VERSION)-$(REVISION).linux-x86.tar.gz dist @@ -89,7 +88,7 @@ dist: src-dist: $(RM) -rf $(PROG)-$(VERSION) mkdir $(PROG)-$(VERSION) - cp -r $(SRC_DIST_FILES) $(PROG)-$(VERSION) + cp -rL $(SRC_DIST_FILES) $(PROG)-$(VERSION) git log --pretty=format:"%h%x09%an%x09%ad%x09%s" --date=short >$(PROG)-$(VERSION)/CHANGELOG.raw tar czf $(PROG)-$(VERSION)-$(REVISION).src.tar.gz $(PROG)-$(VERSION) mkdir -p dist diff --git a/makefile.win32 b/makefile.win32 new file mode 100644 index 0000000..3eadee3 --- /dev/null +++ b/makefile.win32 @@ -0,0 +1,21 @@ +PROG = blobWarsAttrition.exe +CC = x86_64-w64-mingw32-gcc +SDLC = /usr/x86_64-w64-mingw32/bin/sdl2-config +LIBPATH = /usr/x86_64-w64-mingw32/lib +LOCALE_DIR = locale + +SEARCHPATH += src/plat/win32 +OBJS += win32Init.o + +CXXFLAGS += `$(SDLC) --cflags` -DVERSION=$(VERSION) -DREVISION=$(REVISION) -DDATA_DIR=\"$(DATA_DIR)\" -DLOCALE_DIR=\"$(LOCALE_DIR)\" +CXXFLAGS += -Wall -Wempty-body -ansi -pedantic -Werror -Wstrict-prototypes -Werror=maybe-uninitialized -Warray-bounds +CXXFLAGS += -g -lefence +CXXFLAGS += -fms-extensions -std=gnu11 + +LDFLAGS += `$(SDLC) --libs` -lm -lSDL2_mixer -lSDL2_image -lSDL2_ttf -lSDL2main + +include common.mk + +# linking the program. +$(PROG): $(OBJS) + $(CC) -o $@ $(OBJS) $(LDFLAGS) -L$(LIBPATH) diff --git a/src/game/credits.h b/src/game/credits.h index ee256d5..d70b4d1 100644 --- a/src/game/credits.h +++ b/src/game/credits.h @@ -35,6 +35,7 @@ extern void playMusic(int loop); extern char *readFile(const char *filename); extern void returnToTitle(void); extern void startSectionTransition(void); +extern char *strtok_r(char *str, const char *delim, char **nextp); extern App app; extern Colors colors; diff --git a/src/system/savepng.h b/src/system/savepng.h index 5942466..796fe7d 100644 --- a/src/system/savepng.h +++ b/src/system/savepng.h @@ -6,7 +6,6 @@ * This code is free software, available under zlib/libpng license. * http://www.libpng.org/pub/png/src/libpng-LICENSE.txt */ -#include #ifdef __cplusplus extern "C" { /* This helps CPP projects that include this header */ diff --git a/src/util/util.c b/src/util/util.c index 244ddf8..2eb5eea 100644 --- a/src/util/util.c +++ b/src/util/util.c @@ -111,3 +111,43 @@ void *resize(void *array, int oldSize, int newSize) return newArray; } + +/* + * public domain strtok_r() by Charlie Gordon + * + * from comp.lang.c 9/14/2007 + * + * http://groups.google.com/group/comp.lang.c/msg/2ab1ecbb86646684 + * + * (Declaration that it's public domain): + * http://groups.google.com/group/comp.lang.c/msg/7c7b39328fefab9c + */ +char *strtok_r(char *str, const char *delim, char **nextp) +{ + char *ret; + + if (str == NULL) + { + str = *nextp; + } + + str += strspn(str, delim); + + if (*str == '\0') + { + return NULL; + } + + ret = str; + + str += strcspn(str, delim); + + if (*str) + { + *str++ = '\0'; + } + + *nextp = str; + + return ret; +}