Building from Source

Here’s how to build your own version of boxes using the boxes sources.

The boxes development platform is currently MinGW on win32. If you are on a different platform, please send in your binaries for inclusion among the files to download.

Boxes is generally very easy to port, because it uses only a small set of instructions and is comformant to the ANSI C standard.

Once built and deployed, boxes can be integrated into your text editor. We currently describe integration with vim, emacs, and jed, but this list may grow as time goes by and people send how-tos.

Building on Linux / UNIX

Just unzip the source archive or clone the GitHub repo. Make sure you have your C compiler installed, including Flex and Bison.

The location of the system-wide config file is compiled in, so if you don’t like it’s default location, you can edit the top level Makefile and change the value of GLOBALCONF to whereever you want the system-wide config file to reside. Note that each user may have his/her own config file in $HOME/.boxes. Also note that the value of GLOBALCONF is a full file name. It does not specify a directory into which to copy the config file.

If you are on DEC/OSF, edit src/regexp/Makefile, and add -D_ANSI_C_SOURCE to the CFLAGS definition.

In the top level directory, type make && make test. Find the resulting binary in the src folder. In case of problems, check the compilation faq.

That should be all. Boxes is built so that this works almost everywhere.

Deployment

In order to deploy your newly created binary on Linux/UNIX, these steps are recommended:

  • Copy doc/boxes.1 to an appropriate manual page directory.
  • Copy boxes-config to the location specified in the Makefile as being the name of the system-wide boxes config file. Note that the value of GLOBALCONF is the name of the file, and not the name of a directory into which to copy the file. So, the name of the config file is changed from boxes-config to just boxes.
  • Copy src/boxes (the binary) to a location which is in your path.

Example (as root):

cp doc/boxes.1 /usr/share/man/man1
cp boxes-config /usr/share/boxes
cp src/boxes /usr/bin

If you want to make your own changes to the config file, copy the system-wide config file into your home as $HOME/.boxes, then modify it. Boxes will use $HOME/.boxes if it exists.


Building on Windows

Boxes was written for UNIX, but it can also run on Windows! Boxes is a 32bit application, but it works on 64bit systems, too. Here’s how to build on Windows.

Special thanks go to Ron Aaron, who provided a specially crafted Makefile for win32 and also created the Windows versions of boxes that have been around to this day.

In order to build boxes on Windows, the required win32 executable can be created like this:

  1. Install MinGW32
  2. Configure MinGW32
  3. Open a MinGW shell and run make win32

Basically very simple, but there may be a few pitfalls, so we’ll go through each step in detail.

1. Install MinGW32

  1. Download MinGW from mingw.org by pressing the Download Installer button in the top right corner of the page. You’ll receive a mingw-get-setup.exe.
  2. Right-click mingw-get-setup.exe and choose Run as Administrator from the pop-up menu. This brings up the Installation Preferences.
  3. Choose C:\MinGW as installation directory. This is really important. If for some reason you cannot use this highly recommended directory, choose another one that has a short path, does not contain spaces (!), and does not include a Windows “special path”. For example, C:\MinGW_2.
  4. Select “install support for GUI” (yes, even though boxes has no GUI) and install “for all users”.
  5. Press Continue and wait for download of the Installation Manager.
  6. After the download of the Installation Manager is completed, press Continue again. The Installation Manager opens.
  7. Choose mingw32-base and msys-base. Also, further down, under MSYS / MinGW Developer Toolkit, choose msys-bison and msys-flex. Do not install mingw-developer-toolkit, because if on 64bit, this requires tweaking of several environment variables to get gcc to use 32bit libs all around (which may be hard to get right for laymen).
  8. In the menu, select InstallationApply Changes. Something like 104 Packages will be installed, which may take a few minutes.
  9. Upon success, select InstallationQuit from the menu.

2. Configure MinGW32

  1. Change into C:\MinGW\msys\1.0\etc.
  2. Copy the file fstab.sample to a new file called simply fstab.
  3. Open fstab and make sure that the only lines which are not comments are these:

    c:/mingw		/mingw
    d:/path/to/boxes	/boxes
    

    Note that the whitespace in this example are tab characters. The d:/path/to/boxes is the path where you placed your clone of the boxes repo. Avoid spaces in its path, too.

  4. Add C:\MinGW\bin to your system PATH.
  5. Create a “MinGW Shell” shortcut somewhere (I chose my desktop). The shortcut invokes the C:\MinGW\msys\1.0\msys.bat script, which is installed as a component of MSYS; (if you installed to an alternative directory, you should adjust the C:\MinGW prefix accordingly). An icon file is provided in the same directory, in case you want to set it on the new shortcut.

3. Open a MinGW shell and trigger the Windows build

  1. Double click your new MinGW Shell shortcut icon. This opens a command window with the correct environment set up for you, including the correct path references, allowing you to run any of the MinGW or MSYS applications within that command window.
  2. Within the MinGW shell:

    cd /boxes
    make clean && make win32
    

    If you want to create an executable with debug information, call make clean && make win32.debug instead.

  3. boxes.exe is created in /boxes/src.
  4. Optionally, run make test to check that your executable is working OK.

4. Deployment

In order to run boxes on any Windows machine, two files are required:

  • boxes.exe
  • boxes.cfg

boxes.cfg is obtained by simply renaming the boxes-config file from the root of the boxes repo into boxes.cfg.

Both files should be placed together somewhere on your PATH.