From: Yann Dirson Date: Sun, 12 Jan 2014 14:30:26 +0000 (+0100) Subject: Merge branch 'maint' X-Git-Url: http://winboard.nl/cgi-bin?p=gnushogi.git;a=commitdiff_plain;h=411d29916e5e7691271850a5f723e3b1f2d61721;hp=b25be4481e49ce9e343ed301ab57be999e583083 Merge branch 'maint' --- diff --git a/.gitignore b/.gitignore index eddd488..658125d 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,8 @@ /gnushogi/gnuminishogi /gnushogi/gnuminishogi.bbk +/win32/ + /xshogi/scanner.c /xshogi/parser.c /xshogi/xshogi diff --git a/Makefile.in b/Makefile.in index 7cc94d5..b67c486 100644 --- a/Makefile.in +++ b/Makefile.in @@ -59,6 +59,13 @@ bbk: # +# Alien target architectures +# + +win32/Makefile: misc/mkmakefile.mingw-on-cygwin + $< + +# # Installation. # @@ -101,7 +108,8 @@ dist: tar -cf - --exclude .git --exclude $(DISTNAME) $(ROOT) | (cd $(DISTNAME) && tar -xf -) cd $(DISTNAME) && $(ROOT)/autogen.sh && $(ROOT)/configure cd $(DISTNAME)/doc && $(MAKE) info - cd $(DISTNAME) && make distclean + cd $(DISTNAME) && $(MAKE) win32/Makefile + cd $(DISTNAME) && $(MAKE) distclean tar -zcf $(DISTNAME).tar.gz $(DISTNAME) # @@ -115,13 +123,14 @@ DISTCLEANFILES = \ distclean: clean rm -rf $(DISTCLEANFILES) + find -name '*~' | xargs rm -f cd $(BUILDROOT)/doc && $(MAKE) distclean # # Extra cleanup, for the maintainer only. # -MAINTAINERCLEANFILES = configure config.h.in +MAINTAINERCLEANFILES = configure config.h.in win32/Makefile maintainerclean: distclean rm -f $(MAINTAINERCLEANFILES) diff --git a/NEWS b/NEWS index ffdc61b..9a65203 100644 --- a/NEWS +++ b/NEWS @@ -5,7 +5,9 @@ Changes in version 1.4.1 (unpublished): * Initial support for the MiniShogi variant, for now as a separate executable built using "./configure --enable-minishogi". -* Support for building with the curses UI. +* Support for building without the curses UI. +* Preliminary win32 support: can be built on cygwin with gcc3, in the + win32 directory. * Build system enhancements. * Bug fixes. diff --git a/README.maint b/README.maint index c806085..7d69bb6 100644 --- a/README.maint +++ b/README.maint @@ -5,3 +5,8 @@ Updating ChangeLog ------------------ git log --pretty --numstat --summary v1.4.0..savannah/master | git2cl > ChangeLog + +Profiling +--------- + +Build with "-g -pg -fprofile-arcs -ftest-coverage" diff --git a/TODO b/TODO index 921fa4c..48d2f19 100644 --- a/TODO +++ b/TODO @@ -10,7 +10,6 @@ Generic cleanups - switch cli parsing to getopt - hunt for extern's and prototypes spread all over the source -- merge old Makefile.profile.in back into Makefile.in if meaningful at all - use automake - hunt for more hardcoded variant-specific constants - position of captured pieces in curses mode diff --git a/configure.ac b/configure.ac index 146e17a..e6ab85f 100644 --- a/configure.ac +++ b/configure.ac @@ -5,7 +5,7 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.57) -AC_INIT([gnushogi],[1.4.1-rc0+],[https://savannah.gnu.org/bugs/?group=gnushogi]) +AC_INIT([gnushogi],[1.4.1-rc1+],[https://savannah.gnu.org/bugs/?group=gnushogi]) AC_CONFIG_SRCDIR([gnushogi/gnushogi.h]) AC_CONFIG_HEADER(config.h) @@ -59,8 +59,6 @@ if [[ $ac_cv_c_compiler_gnu = yes ]] then WARNINGS="-Wall -Wno-implicit-int -Wstrict-prototypes -ansi" CEXTRAFLAGS="-fsigned-char -funroll-loops" -# For profiling targets: -CEXTRAFLAGS2="-fsigned-char -pg -fprofile-arcs -ftest-coverage" else # Who knows what warnings your compiler uses? WARNINGS= @@ -69,7 +67,6 @@ fi AC_SUBST(WARNINGS) AC_SUBST(CEXTRAFLAGS) -AC_SUBST(CEXTRAFLAGS2) ########## AC_MSG_NOTICE([header files]) @@ -184,7 +181,7 @@ AC_SUBST(XSHOGICLEAN) ########## AC_CONFIG_FILES([Makefile gnushogi/Makefile - gnushogi/Makefile.profile + win32/config.h doc/Makefile xshogi/Makefile]) AC_OUTPUT diff --git a/doc/Makefile.in b/doc/Makefile.in index 03fbc90..356926d 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -6,19 +6,19 @@ CLEANFILES = *.log *.dvi *.aux *.dlog \ SRCDIR = @srcdir@ info: - makeinfo $(SRCDIR)/gnushogi.texinfo + makeinfo $(SRCDIR)/gnushogi.texi dvi: - texi2dvi $(SRCDIR)/gnushogi.texinfo + texi2dvi $(SRCDIR)/gnushogi.texi pdf: - texi2pdf $(SRCDIR)/gnushogi.texinfo + texi2pdf $(SRCDIR)/gnushogi.texi # I do some egregious hacks to get around limitations of # texi2html. html: - makeinfo --html --split=section $(SRCDIR)/gnushogi.texinfo + makeinfo --html --split=section $(SRCDIR)/gnushogi.texi ps: dvi dvips -t letter gnushogi.dvi -o gnushogi.ps @@ -27,7 +27,7 @@ ps2: dvi dvi2ps gnushogi.dvi > gnushogi.ps spell: - tr '[A-Z]' '[a-z]' < $(SRCDIR)/gnushogi.texinfo | tr -cd '[A-Za-z0-9_ \012]' | \ + tr '[A-Z]' '[a-z]' < $(SRCDIR)/gnushogi.texi | tr -cd '[A-Za-z0-9_ \012]' | \ tr -s '[ ]' '\012' | sort | uniq -c | sort -nr | spell | sort | uniq clean: diff --git a/doc/gnushogi.texinfo b/doc/gnushogi.texi similarity index 100% rename from doc/gnushogi.texinfo rename to doc/gnushogi.texi diff --git a/gnushogi/Makefile.in b/gnushogi/Makefile.in index 1da5643..f0c8684 100644 --- a/gnushogi/Makefile.in +++ b/gnushogi/Makefile.in @@ -72,7 +72,7 @@ LCURSES = @LIBCURSES@ CC = @CC@ CWARNINGS = @WARNINGS@ CEXTRAFLAGS = @CEXTRAFLAGS@ -CFLAGS = @CFLAGS@ $(HASH) $(CEXTRAFLAGS) $(CWARNINGS) -I$(ROOT) -I@top_builddir@ -I. +CFLAGS = @CFLAGS@ $(HASH) $(CEXTRAFLAGS) $(CWARNINGS) -I. -I@top_builddir@ -I$(ROOT) LDFLAGS = @LDFLAGS@ # The hashfile is a record of positions seen. It is used by @@ -210,7 +210,7 @@ util.o: util.c # Files specific to particular targets. pat2inc.o: pat2inc.c - $(CC) $(CFLAGS) $(BINBOOK) $(PATTERN) -c $< + $(CC) $(CFLAGS) -c $< sizetest.o: sizetest.c $(CC) $(CFLAGS) -c $< diff --git a/gnushogi/Makefile.profile.in b/gnushogi/Makefile.profile.in deleted file mode 100644 index 8374648..0000000 --- a/gnushogi/Makefile.profile.in +++ /dev/null @@ -1,283 +0,0 @@ -# -# Makefile for GNU Shogi -# -# Copyright (c) 1993, 1994 Matthias Mutz -# Copyright (c) 1998, 1999 Michael Vanier and the Free Software Foundation -# -# GNU Shogi is based on GNU Chess -# Copyright (c) 1992 Free Software Foundation -# -# This file is part of GNU Shogi. -# -# GNU Shogi is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at your option) -# any later version. -# -# GNU Shogi is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Shogi; see the file COPYING. -# If not, see . -# - -# -# gnushogi is GNU shogi, for raw text, curses, or x output. -# pat2inc converts pattern textfile to "pattern.inc" include file. -# sizetest shows the memory usage of the main data structures. -# - -SHELL = /bin/sh -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -ROOT = .. - - -# Installation directory. -prefix = @prefix@ - -# Where the binaries live. -BINDIR = $(prefix)/bin - -# Where the language description, the book, and the -# persistent hashtable live. -LIBDIR = $(prefix)/lib/gnushogi - -# Where the man page goes. -MANDIR = $(prefix)/man/man6 - -# Where the info file goes. -INFODIR = $(prefix)/info - -# For _pow external -LIBS = -lm - -# Display routines. -LCURSES = -lcurses -ltermcap - - -# -# C compiler and compiler options. -# - -CC = @CC@ -CWARNINGS = @WARNINGS@ -CEXTRAFLAGS = @CEXTRAFLAGS2@ -CFLAGS = -g $(CEXTRAFLAGS) $(CWARNINGS) -I.. - - -# The hashfile is a record of positions seen. It is used by -# GNU Shogi to avoid making the same mistakes, a form of learning. - -HASH = -DHASHFILE=\"$(LIBDIR)/gnushogi.hsh\" - - -# The "book" is a record of the first few moves, for playing good -# moves easily and quickly, saving time, and irritating the human -# opponent. - -TEXTBOOK = -DBOOK=\"$(LIBDIR)/gnushogi.tbk\" -BINBOOK = -DBINBOOK=\"$(LIBDIR)/gnushogi.bbk\" - - -# The language file describes capabilities of the program. It may -# be useful for customizing gnushogi for non-English-speaking players. - -LANGF = -DLANGFILE=\"../misc/gnushogi.lng\" - - -# The pattern file contains various opening patterns. The program tries to -# obtain such a pattern in the opening stage. Sequences of opening -# patterns may be described in order to support the correct order of moves. - -PATTERN = -DPATTERNFILE=\"../misc/gnushogi.pat\" - - -all: - @echo No target specified. - - -# -# Source files. -# - -COMMONFILES = \ - attacks.o \ - book.o \ - commondsp.o \ - cursesdsp.o \ - dspwrappers.o \ - eval.o \ - genmove.o \ - globals.o \ - init.o \ - pattern.o \ - rawdsp.o \ - search.o \ - tcontrl.o \ - util.o - -GNUSHOGI_FILES = $(COMMONFILES) main.o - - -PAT2INCFILES = $(COMMONFILES) makepattern.o pat2inc.o - - -# -# Primary targets. -# - -gnushogi: - $(CC) $(CFLAGS) -o gnushogi $(GNUSHOGI_FILES) $(LCURSES) $(LIBS) - -pat2inc: - $(CC) $(CFLAGS) -o pat2inc $(PAT2INCFILES) $(LCURSES) $(LIBS) - -sizetest: - $(CC) $(CFLAGS) -o sizetest sizetest.o $(LIBS) - - -# -# Object files. -# - -# Common files. - -attacks.o: - $(CC) $(CFLAGS) -c attacks.c - -book.o: - $(CC) $(CFLAGS) $(TEXTBOOK) $(BINBOOK) -c book.c - -commondsp.o: - $(CC) $(CFLAGS) -c commondsp.c - -cursesdsp.o: - $(CC) $(CFLAGS) -c cursesdsp.c - -dspwrappers.o: - $(CC) $(CFLAGS) -c dspwrappers.c - -genmove.o: - $(CC) $(CFLAGS) -c genmove.c - -globals.o: - $(CC) $(CFLAGS) -c globals.c - -eval.o: - $(CC) $(CFLAGS) -c eval.c - -init.o: - $(CC) $(CFLAGS) $(LANGF) -c init.c - -main.o: - $(CC) $(CFLAGS) $(BINBOOK) -c main.c - -# To create "pattern.inc" with "pat2inc", the external -# pattern textfile must be used. - -makepattern.o: - $(CC) $(CFLAGS) $(PATTERN) -c makepattern.c - -pattern.o: - $(CC) $(CFLAGS) -c pattern.c - -rawdsp.o: - $(CC) $(CFLAGS) -c rawdsp.c - -search.o: - $(CC) $(CFLAGS) -c search.c - -tcontrl.o: - $(CC) $(CFLAGS) -c tcontrl.c - -util.o: - $(CC) $(CFLAGS) -c util.c - - -# Files specific to particular targets. - -pat2inc.o: - $(CC) $(CFLAGS) $(LANGF) $(BINBOOK) $(PATTERN) -c pat2inc.c - -sizetest.o: - $(CC) $(CFLAGS) -c sizetest.c - - -# -# Other targets. -# - -gnushogi.bbk: - @if [ -f ./gnushogi.bbk ]; then rm ./gnushogi.bbk; fi - echo quit > test - cat ../misc/gnushogi.tbk > _tmp_t - cat test | ./gnushogi -R -b _tmp_t -B ./gnushogi.bbk -S 8000 -P 40 3 0 - rm test _tmp_t - @echo - - -# -# Installation. -# - -install: gnushogi - strip gnushogi - $(INSTALL_PROGRAM) -d $(BINDIR) - $(INSTALL_PROGRAM) -d $(LIBDIR) - $(INSTALL_PROGRAM) -d $(MANDIR) - $(INSTALL_PROGRAM) -d $(INFODIR) - $(INSTALL_PROGRAM) gnushogi $(BINDIR) - $(INSTALL_DATA) $(ROOT)/doc/gnushogi.6 $(MANDIR) - $(INSTALL_DATA) $(ROOT)/doc/gnushogi.info* $(INFODIR) - $(INSTALL_DATA) gnushogi.bbk $(LIBDIR)/gnushogi.bbk - - -# -# Cleanup. -# - -CLEANFILES = *.o gnushogi sizetest pat2inc CLp* *.bbk - -clean: - @for file in $(CLEANFILES); do \ - if [ -f $$file ]; then rm $$file; fi; \ - done - @-find . -name gmon.out -exec rm {} \; - @-find . -name '*.bb' -exec rm {} \; - @-find . -name '*.bbg' -exec rm {} \; - @-find . -name '*.da' -exec rm {} \; - @-find . -name '*.gcov' -exec rm {} \; - - -# -# Dependencies. -# - -gnushogi: $(GNUSHOGI_FILES) -pat2inc: $(PAT2INCFILES) -sizetest: sizetest.o -attacks.o: attacks.c gnushogi.h ../version.h -book.o: book.c gnushogi.h ../version.h -commondsp.o: commondsp.c gnushogi.h ../version.h -cursesdsp.o: cursesdsp.c gnushogi.h ../version.h -dspwrappers.o: dspwrappers.c gnushogi.h ../version.h -genmove.o: genmove.c gnushogi.h ../version.h -globals.o: globals.c gnushogi.h ../version.h -eval.o: eval.c eval.h gnushogi.h ../version.h pattern.h -init.o: init.c gnushogi.h ../version.h pattern.h -main.o: main.c gnushogi.h ../version.h -makepattern.o: pattern.c gnushogi.h pattern.h -pattern.o: pattern.c gnushogi.h pattern.h pattern.inc -rawdsp.o: rawdsp.c gnushogi.h ../version.h -search.o: search.c gnushogi.h ../version.h -tcontrl.o: tcontrl.c gnushogi.h ../version.h -util.o: util.c gnushogi.h ../version.h -pat2inc.o: pat2inc.c pattern.h gnushogi.h -sizetest.o: sizetest.c gnushogi.h eval.h -gnushogi.bbk: gnushogi - diff --git a/gnushogi/makepattern.c b/gnushogi/makepattern.c index 774d11f..cf869e2 100644 --- a/gnushogi/makepattern.c +++ b/gnushogi/makepattern.c @@ -36,7 +36,7 @@ #define MAX_OPENING_SEQUENCE 20 #define MAX_PATTERN 200 -char *patternfile = PATTERNFILE; +static char *patternfile = PATTERNFILE; small_short pattern_data[MAX_PATTERN_DATA]; /* minimal ShowMessage to avoid dependency on extraneous display code */ @@ -192,7 +192,6 @@ ScanPattern (char *s, short *pindex) void ReadOpeningSequences (short *pindex) - { FILE *fd; char s[256]; diff --git a/gnushogi/opts.h b/gnushogi/opts.h index a477137..6e87d12 100644 --- a/gnushogi/opts.h +++ b/gnushogi/opts.h @@ -34,7 +34,8 @@ /* * This file is for options that control the behavior of GNU shogi, - * and also for debugging #defines. They were previously placed on the + * probably only be of interest to people who are hacking the source codes. + * They were previously placed on the * command line as -D