mirror of
https://github.com/ascii-boxes/boxes.git
synced 2025-01-22 13:48:36 +01:00
137 lines
6.7 KiB
HTML
137 lines
6.7 KiB
HTML
---
|
|
layout: markdown
|
|
title: Building from Source
|
|
---
|
|
|
|
# Building from Source
|
|
|
|
Here's how to build your own version of *boxes* using the
|
|
[boxes sources](https://github.com/{{ site.github }}){:target="_blank"}.
|
|
|
|
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](https://github.com/ascii-boxes/boxes/releases).
|
|
|
|
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]({{ site.baseurl }}/docs/install.html).
|
|
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](https://github.com/{{ site.github }}/releases/latest){:target="_blank"}
|
|
or [clone the GitHub repo](https://help.github.com/articles/cloning-a-repository/){:target="_blank"}.
|
|
Make sure you have your C compiler installed, including
|
|
[Flex](https://github.com/westes/flex){:target="_blank"} and
|
|
[Bison](http://www.gnu.org/software/bison/){:target="_blank"}.
|
|
|
|
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]({{ site.baseurl }}/docs/faq.html#q5).
|
|
|
|
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.
|
|
|
|
<p><br/></p>
|
|
|
|
|
|
## 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](http://www.mingw.org/){:target="_blank"}
|
|
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](http://www.mingw.org/){:target="_blank"} 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 <tt>mingw-developer-toolkit</tt>, 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 *Installation* → *Apply Changes*.
|
|
Something like 104 Packages will be installed, which may take a few minutes.
|
|
9. Upon success, select *Installation* → *Quit* 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.
|