| |
| You can get the most recent version of GNU Go ftp.gnu.org or a mirror |
| (see @url{http://www.gnu.org/order/ftp.html} for a list). You can read |
| about newer versions and get other information at |
| @url{http://www.gnu.org/software/gnugo/}. |
| |
| @menu |
| * GNU/Linux and Unix:: GNU Linux and Unix Installation |
| * Configure Options:: Configure Options |
| * Windows and MS-DOS:: Windows Installation |
| * Macintosh:: Macintosh Installation |
| @end menu |
| |
| @node GNU/Linux and Unix, Configure Options, ,Installation |
| @section GNU/Linux and Unix |
| @cindex installation |
| |
| Untar the sources, change to the directory gnugo-3.8. Now do: |
| |
| @example |
| ./configure [OPTIONS] |
| make |
| @end example |
| |
| Several configure options will be explained in the next section. You do not |
| need to set these unless you are dissatisfied with GNU Go's performance or |
| wish to vary the experimental options. |
| |
| As an example, |
| |
| @example |
| ./configure --enable-level=9 --enable-cosmic-gnugo |
| @end example |
| |
| @noindent |
| will make a binary in which the default level is 9, and the experimental |
| ``cosmic''' option is enabled. A list of all configure options can be |
| obtained by running @command{./configure --help}. Further information |
| about the experimental options can be found in the next section |
| (@pxref{Configure Options}). |
| |
| After running configure and make, you have now made a binary called |
| @file{interface/gnugo}. Now (running as root) type |
| |
| @example |
| make install |
| @end example |
| |
| @noindent |
| to install @file{gnugo} in @file{/usr/local/bin}. |
| |
| There are different methods of using GNU Go. You may run it from the |
| command line by just typing: |
| |
| @example |
| gnugo |
| @end example |
| |
| @noindent |
| but it is nicer to run it using CGoban 1 (under X Window System), |
| Quarry, Jago (on any platform with a Java Runtime Environment) or other |
| client programs offering a GUI. |
| |
| You can get the most recent version of CGoban 1 from |
| @url{http://sourceforge.net/projects/cgoban1/}. The earlier version |
| 1.12 is available from @url{http://www.igoweb.org/~wms/comp/cgoban/index.html}. |
| The CGoban version number MUST be 1.9.1 at least or it won't work. CGoban 2 |
| will not work. |
| |
| @xref{CGoban}, for instructions on how to run GNU Go from Cgoban, or |
| @xref{Other Clients}, for Jago or other clients. |
| |
| Quarry is available at @url{http://home.gna.org/quarry/}. |
| |
| @node Configure Options |
| @section Configure Options |
| |
| There are three options which you should consider configuring, |
| particularly if you are dissatisfied with GNU Go's performance. |
| |
| @menu |
| * Ram Cache:: Ram Cache |
| * Default Level:: Default Level |
| * Other Options:: Other Options |
| @end menu |
| |
| @node Ram Cache |
| @subsection Ram Cache |
| |
| By default, GNU Go makes a cache of about 8 Megabytes in RAM for its |
| internal use. The cache is used to store intermediate results during |
| its analysis of the position. More precisely the default cache size is |
| 350000 entries, which translates to 8.01 MB on typical 32 bit |
| platforms and 10.68 MB on typical 64 bit platforms. |
| |
| Increasing the cache size will often give a modest speed improvement. |
| If your system has lots of RAM, consider increasing the cache |
| size. But if the cache is too large, swapping will occur, |
| causing hard drive accesses and degrading performance. If |
| your hard drive seems to be running excessively your cache |
| may be too large. On GNU/Linux systems, you may detect swapping |
| using the program 'top'. Use the 'f' command to toggle SWAP |
| display. |
| |
| You may override the size of the default cache at compile time |
| by running one of: |
| |
| @example |
| ./configure --enable-cache-size=n |
| @end example |
| |
| @noindent |
| to set the cache size to @code{n} megabytes. For example |
| |
| @example |
| ./configure --enable-cache-size=32 |
| @end example |
| |
| @noindent |
| creates a cache of size 32 megabytes. If you omit this, your default |
| cache size will be 8-11 MB as discussed above. Setting cache size |
| negative also gives the default size. You must recompile and reinstall |
| GNU Go after reconfiguring it by running @command{make} and |
| @command{make install}. |
| |
| You may override the compile-time defaults by running @file{gnugo} |
| with the option @option{--cache-size n}, where @code{n} is the size in |
| megabytes of the cache you want, and @option{--level} where n is the |
| level desired. We will discuss setting these parameters next in |
| detail. |
| |
| @node Default Level |
| @subsection Default Level |
| |
| GNU Go can play at different levels. Up to level 10 is |
| supported. At level 10 GNU Go is much more accurate but takes |
| an average of about 1.6 times longer to play than at level 8. |
| |
| The level can be set at run time using the @option{--level} option. |
| If you don't set this, the default level will be used. You |
| can set the default level with the configure option |
| @option{--enable-level=n}. For example |
| |
| @example |
| ./configure --enable-level=9 |
| @end example |
| |
| @noindent |
| sets the default level to 9. If you omit this parameter, |
| the compiler sets the default level to 10. We recommend |
| using level 10 unless you find it too slow. If you decide |
| you want to change the default you may rerun configure |
| and recompile the program. |
| |
| @node Other Options |
| @subsection Other Options |
| |
| Anything new in the engine is generally tested as an experimental option |
| which can be turned on or off at compile time or run time. Some |
| ``experimental'' options such as the break-in code are no longer |
| experimental but are enabled by default. |
| |
| This section can be skipped unless you are interested in the |
| experimental options. |
| |
| Moreover, some configure options were removed from the stable |
| release. For example it is known that the owl extension code |
| can cause crashes, so the configure option --enable-experimental-owl-ext |
| was disabled for 3.8. |
| |
| The term ``default'' must be clarified, since there |
| are really two sets of defaults at hand, runtime defaults |
| specified in @file{config.h} and compile time default |
| values for the runtime defaults, contained in @file{configure} |
| (which is created by editing @file{configure.in} then running |
| @command{autoconf}. For example we find in @file{config.h} |
| |
| @example |
| /* Center oriented influence. Disabled by default. */ |
| #define COSMIC_GNUGO 0 |
| |
| /* Break-in module. Enabled by default. */ |
| #define USE_BREAK_IN 1 |
| @end example |
| |
| This means that the experimental cosmic option, which causes |
| GNU Go to play a center-oriented game (and makes the engine |
| weaker) is disabled by default, but that the break-in module |
| is used. These are defaults which are used when GNU Go is |
| run without command line options. They can be overridden |
| with the run time options: |
| |
| @example |
| gnugo --cosmic-gnugo --without-break-in |
| @end example |
| |
| Alternatively you can configure GNU Go as follows: |
| |
| @example |
| ./configure --enable-cosmic-gnugo --disable-experimental-break-in |
| @end example |
| |
| then recompile GNU Go. This changes the defaults in @file{config.h}, |
| so that you do not have to pass any command line options to GNU Go |
| at run time to get the experimental owl extension turned on and |
| the experimental break-in code turned off. |
| |
| If you want to find out what experimental options were compiled into your GNU |
| Go binary you can run @command{gnugo --options} to find out. Here is a list |
| of experimental options in GNU Go. |
| |
| @itemize @bullet |
| @item @code{experimental-break-in}. Experimental break-in code |
| (@pxref{Break Ins}). You should not need to configure this because |
| the break in code is enabled by default in level 10, and is turned |
| off at level 9. If you don't want the breakin code just play at |
| level 9. |
| @item @code{cosmic-gnugo}. An experimental style which plays a center |
| oriented game and has a good winning rate against standard GNU Go, |
| though it makes GNU Go weaker against other opponents. |
| @item @code{large-scale}. Attempt to make large-scale captures. |
| See: |
| |
| @url{http://lists.gnu.org/archive/html/gnugo-devel/2003-07/msg00209.html} |
| |
| for the philosophy of this option. This option makes the engine slower. |
| @item @code{metamachine}. Enables the metamachine, which allows |
| you to run the engine in an experimental mode whereby it forks |
| a new @code{gnugo} process which acts as an ``oracle.'' Has no |
| effect unless combined with the @option{--metamachine} run-time |
| option. |
| @end itemize |
| |
| Other options are not experimental, and can be changed as |
| configure or runtime options. |
| |
| @itemize @bullet |
| @item @code{chinese-rules} Use Chinese (area) counting. |
| @item @code{resignation-allowed} Allow GNU Go to resign games. |
| This is on by default. |
| @end itemize |
| |
| @node Windows and MS-DOS, Macintosh, Configure Options, Installation |
| @section Compiling GNU Go on Microsoft platforms |
| |
| @subsection Building with older visual studio |
| |
| The distribution directories contain some .dsp and .dsw files with |
| GNU Go. These have been brought up to date in the sense that they |
| should work if you have the older VC++ with Visual Studio 6 |
| but the distributed .dsp and .dsw files will only be of use with |
| older version of Visual Studio. |
| |
| In most cases (unless you are building in Cygwin) the preferred way |
| to build GNU Go on Windows platforms is to use CMake. CMake |
| understands about many versions of Visual C/Visual Studio, and will |
| generate project/solution files for the tools installed on your |
| system. So even if you have Visual Studio 6 you may use CMake |
| and dispense with the distributed .dsp and .dsw files. |
| |
| @subsection Building with Visual Studio project files |
| |
| Before you compile the GNU Go source, you need to run CMake first, to |
| generate the build files you'll give to Visual Studio. |
| |
| From the cmd.exe command prompt, CD into the GNU Go source directory. |
| To confirm you're in the right place, you should see the file |
| 'CMakeLists.txt' in the top-level directory of the GNU Go code (as well |
| as others in lower subdirectories). |
| |
| Direct CMake to generate the new Visual Studio build files by typing: |
| |
| @example |
| cmake CMakeLists.txt |
| @end example |
| |
| Compile the code by invoking the newly-created Solution file: |
| |
| @example |
| vcbuild GNUGo.sln |
| @end example |
| |
| This will take a few moments, as CMake generates 4 debug/retail targets: |
| |
| @example |
| debug |
| release |
| minsizerel |
| relwithdebinfo |
| @end example |
| |
| For each of these targets, Visual Studio is generating a version of |
| gnugo.exe: |
| |
| @example |
| interface\debug\gnugo.exe |
| interface\release\gnugo.exe |
| interface\minsizerel\gnugo.exe |
| interface\relwithdebinfo\gnugo.exe |
| @end example |
| |
| Additionally, there is an 'Install' target available, that will copy the |
| the gnugo.exe into the %ProgramFiles% directory. To do this, type: |
| |
| @example |
| vcbuild INSTALL.vcproj |
| @end example |
| |
| This should result in copying GNU/Go into: |
| |
| @example |
| "%ProgramFiles%\GNUGo\bin\gnugo.exe" --options |
| @end example |
| |
| In addition to command line use, CMake also has a GUI version. Users of |
| the Visual Studio GUI might prefer to use that. |
| |
| @subsection Building with Nmake makefiles |
| |
| GNU Go will also build using NMake makefiles. Optionally, instead of |
| Visual Studio project/solution files, you may direct CMake to generate |
| NMake makefiles. To generate the makefiles: |
| |
| @example |
| cmake -G "NMake Makefiles" CMakeLists.txt |
| @end example |
| |
| The default rule for the makefile is 'all'. Use the 'help' rule to show |
| a list of available targets. |
| |
| @example |
| nmake -f Makefile help |
| @end example |
| |
| To compile GNU Go: |
| |
| @example |
| nmake -f Makefil, all |
| @end example |
| |
| One sysand 2009 tems, GNU GO may fail to build when using NMake makefiles. |
| only fails the first time run, run NMake again with the 'clean all' |
| targets, and it will compile the second and subsequent times. |
| |
| @example |
| nmake -f Makefile clean all |
| @end example |
| |
| Which will successfully generate a gnugo.exe. |
| |
| @example |
| interface\gnugo.exe --options |
| @end example |
| |
| @subsection Building with MinGW Makefiles |
| |
| GNU Go can be built on Windows systems using MinGW. |
| |
| This development environment uses: the GCC compiler (gcc.exe, not |
| cl.exe), the Microsoft C runtime libraries (MSCRT, not GLibC), the GNU |
| Make build tool (@code{mingw32-make.exe}, not NMake), all from the Windows |
| shell (@code{cmd.exe}, not sh/bash). |
| |
| For CMake to work, in addition to the base MinGW installation, the C++ |
| compiler (g++.exe) and GNU Make (mingw32-make.exe) need to be installed. |
| This was tested using GCC v3, not the experimental v4. To debug, use |
| GDB, as the GCC-generated symbols won't work with NTSD/Windbg/Visual Studio. |
| |
| To create the makfiles, run CMake with the MinGW generator option: |
| |
| @example |
| cmake -G "MinGW Makefiles" CMakeLists.txt |
| @end example |
| |
| To build GNU Go, from a cmd.exe shell, run GNU Make (against the |
| newly-created 'Makefile' and it's default 'all' target): |
| |
| @example |
| mingw32-make |
| ..\interface\gnugo.exe --options |
| @end example |
| |
| @subsection Building with MSYS makefiles (MinGW) |
| |
| GNU Go can be built on Windows systems using MSYS. |
| |
| This development environment uses: the GCC compiler (gcc.exe, not |
| cl.exe), the Microsoft C runtime libraries (MSCRT, not GLibC), the GNU |
| Make build tool (make, not NMake), all from the GNU Bash (sh.exe, not |
| cmd.exe). |
| |
| To create the makfiles, run CMake with the MSYS generator option: |
| |
| @example |
| cmake -G "MSYS Makefiles" CMakeLists.txt |
| @end example |
| |
| Start MSYS's Bash shell, either clicking on a shortcut on from the |
| command line: |
| |
| @example |
| cd /d c:\msys\1.0 |
| msys.bat |
| @end example |
| |
| To build GNU Go, from a Bash shell, run GNU Make (against the |
| newly-created 'Makefile' and it's default 'all' target): |
| |
| @example |
| make |
| ../interface/gnugo.exe --options |
| @end example |
| |
| To debug, use GDB, as the GCC-generated symbols won't work with |
| NTSD/Windbg/Visual Studio. |
| |
| @subsection Building on cygwin |
| |
| With Cygwin, you should be able to |
| |
| @example |
| tar zxvf gnugo-3.8.tar.gz |
| cd gnugo-3.8 |
| env CC='gcc -mno-cygwin' ./configure |
| make |
| @end example |
| |
| @subsection Testing on Windows: |
| |
| @file{regression/regress.cmd} is a simplified cmd.exe-centric port of the main |
| gnugo Unix shell script regress.sh. It can be used to help verify that the |
| generated binary might be operational. Read the script's comment header for |
| more information. For access to the full GNU Go tests, use Unix, not Windows. |
| |
| To test: |
| |
| @example |
| cd regression |
| regress.cmd ..\interface\gnugo.exe |
| @end example |
| |
| @node Macintosh |
| @section Macintosh |
| |
| If you have Mac OS X you can build GNU Go using Apple's compiler, |
| which is derived from GCC. You will need Xcode. |
| |
| One issue is that the configure test for socket support is |
| too conservative. On OS/X, the configure test fails, but |
| actually socket support exists. So if you want to be able |
| to connect to the engine through tcp/ip (using gtp) you |
| may @command{configure --enable-socket-support}. There |
| will be an error message but you may build the engine |
| and socket support should work. |
| |
| |