Summary off all operations required for a release:
LW6MAP_RULES_DEFAULT_EXP and default for --skip-network, which might have been changed will developping.
./src, run ./indent.sh.
./doc, run ./gdoc-update.sh.
NEWS file, in both liquidwar6 and liquidwar6-extra-maps. Check ChangeLog is OK.
doc/liquidwar6.texi.
make distcheck... (at least!)
RPM package (make -C pkg rpm), check yum install produces a working installation, also check the rpm -e command to verify uninstalling is OK too.
.exe main binary on Microsoft Windows then go back to GNU/Linux and build .exe installer (make -C pkg installer), go back to Microsoft Windows and test the installer (there are often problems at this stage because of missing libraries or other files...).
.dmd Mac OS X disk image, check it works even when /opt and /usr/local or (re)moved, this is important, else execution might rely on binaries which are only on the development machine and do not ship with game.
rsync --rsh=ssh ./version/ login@dl.sv.nongnu.org:/releases/liquidwar6/version/. Each file must have its .sig corresponding file.
gendocs.sh, carefull, liquidwar6.html is suppressed by this, need to re-create it from previous version and/or index.html which is the same.
index.html, liquidwar6.html and liquidwar6.fr.html so that they reflect the latest release. Check download links are OK.
./configure --enable-gcov ; make clean ; make. Then run src/liquidwar6 --test, stay here and get ready to respond interactively to various questions. Then cd to ./doc/coverage and run make opt. Copy files to web CVS, sync them.
./doc/global and run make opt. Copy files to web CVS, sync them.
./doc/cyclo and run make opt. Copy files to web CVS, sync them.
This describes how to add a new option to the game.
src/lib/def/def-list.txt
src/lib/def/def-update.py run ./def-update.py. This will automatically fill src/lib/def/def.h and script/def.scm. In the code, you should always use LW6DEF_<OPTION> in C and lw6def-<option> in scheme to refer to the option. This does help avoiding typesetting errors.
src/lib/hlp/hlp-list.c, choose a category for it
src/lib/hlp/hlp-reference.c, give it a type, documentation string and default values if needed
src/lib/def/def-list.txt a common practice is to fill it with the output of liquidwar6 --list once the program has been compiled and is aware of the new option.
Unless this is done, program won't accept the option.
This describes how to add a new libxyz internal library:
src/lib/xyz directory. The convention is to use 3 letters names and prefix every global identifier with lw6xyz.
Makefile.am, xyz.h, xyz-test.c and xyz-testmain.c from an existing internal library (libnod is a good source, it does not have complex dependencies).
Makefile.am to fill requirements, make necessary adjustments to other files (many string replaces to make, both lowercase and uppercase).
SUBDIRS and LW6_LIBS sections of src/lib/Makefile.am
AC_CONFIG_FILES of ./configure.ac.
automake and autoconf.
src/lib/lw6-options.c and add a call to lw6xyz_test() for both “check” and “test” cases.
src/lib/lw6-test.c and add a reference to the lw6xzy_test() function.
abc library that depends on xyz, edit the lw6abc_test function so that it contains a reference to lw6xzy_test.
abc library that depends on abc/abc.h, edit the abc/abc.h header so that it includes xzy/xyz.h. Also edit src/lib/liquidwar6.h.in.
abc library that depends on abc/abc.h, add a reference to ../xyz/libxyz.la inf the _LDADD section.
doc/gdoc-update.sh and add the entry for xyz.
doc/Makefile.am and add xyz-gdoc.texi in gdoc_TEXINFOS.
./doc, run ./gdoc-update.sh.
doc/liquidwar6.texi to and a new node/section for this internal library.
doc/deps.dot to update dependencies.
./configure && make, fix code if needed.
This describes how to add a new mod-ab module, for instance a new bot, but gfx, snd, cli or srv backends should work pretty much the same:
src/lib/bot/Makefile.am
src/lib/bot/mod-ab, with its Makefile.am (inspired from other existing modules)
configure.ac so that src/lib/bot/mod-ab/Makefile is generated.
doc/gdoc-update.sh and add an entry for mod-ab
doc/Makefile.am and add mod-ab-gdoc.texi in gdoc_TEXINFOS.
./doc, run ./gdoc-update.sh.
doc/liquidwar6texi to add a new node/section for this module.
doc/deps.dot to update dependencies.
src/lib/bot/bot-test.c, change the value of TEST_NB_BACKENDS and modify the code so that the new ab module is tested too.
src/lib/bot/bot-register.c, the code must updated pretty much in every place with the conditionnal LW6_ALLINONE, you need to add the new module.
automake, autoconf, ./configure and make.