Everything (or nearly everything) needed to build the TinyMUX distribution is included in the TinyMUX source repository. This article intends to document this process. We first assume that you have enlisted in the source repository and that the project has reached some releasable state. We will further take TinyMUX 2.6 as an example even though we could have picked 2.4 or 2.7 as well.
On Unix, there are only two prerequisites.
- ./dounix.sh uses the makepatch package, so be sure you have it installed on your system.
- To give the release script something to create patches against, you need to create a reference tree (named something like mux2.6_25) in same directory as ./dounix.sh.
The exact name of the reference tree depends on the value of $OldBuild at the top of ./dounix.sh. An easy way to create this reference tree is to untar an existing distribution of TinyMUX to mux2.6 and then rename mux2.6 to mux2.6_25.
Finally, run ./dounix.sh, and it will create mux-22.214.171.124.unix.tar.gz, mux-126.96.36.199.unix.tar.bz2, and mux-188.8.131.52-184.108.40.206.unix.patch.gz for you in the same directory.
./dounix.sh uses three other files to control this process:
unix/TOC.patchable is a list of all files which are 'owned' by the distribution and which will be automatically patched when they change.
unix/TOC.removed is a list of files previously 'owned' by the distribution, but slated for removeable. Even if this file existed in a previously release or exists in the source tree, it is excluded from the distribution. The patchfile will include instructions to remove it.
unix/TOC.unpatchable is a list of files which are provided in the tarball but become 'owned' by the game. They are never patched by an update. It is left to the game owner to manually make any changes if they deemed it necessary or desireable. An example of this kind of file is netmux.conf, connect.txt, netmux.db, etc.
The tar and patch files are ready to be signed and uploaded. On every release, it is necessary to change ./dounix.sh to bump the build number, but the reference directory for the next release is automatically created for you.
The Win32 process is similar to the Unix process, but it has several more pre-requisites, and one extra step.
- jar32 should be installed in c:\jar32
- genpatch in c:\binpatch, but I don't think anyone will easily be able to fulfill this dependence, so ignore the errors or change dowin32.sh to use a different patching utility.
- Latest pkzip is installed
You need to build the Win32 and Win64 executables and place them in mux2.6/mux/game/bin and mux2.6/mux/game/bin/win64, respectively.
Build the Win32 binaries with either Visual Studio or with the Intel compiler using netmux.dsw, and then manually copy netmux.exe and libmux.dll from mux2.6/mux/src/bin_release to mux2.6/mux/game/bin and sample.dll, sum.dll, sqlslave.dll, and sqlproxy.dll from mux2.6/mux/src/modules/bin_release to mux2.6/mux/game/bin.
Building the Win64 binaries requires either using Visual Studio 2005 with the configuration changed to Win64, or if using the EMT64T version of Intel Compiler with the Platform SDK installed, the following sequence of nmake invocations:
- nmake -f libmux.mak
- nmake -f netmux.mak
- cd modules
- nmake -f sample.mak
- nmake -f sum.mak
- nmake -f sqlslave.mak
- nmake -f sqlproxy.mak
Once the binaries are built, you can run ./dowin32.sh from within a Cygwin window to generate the tar, zip, jar, and utp files.
A similar set of controlling files is under ./win32/TOC.*