Unix-specific notes

This covers Linux, BSD and partially Apple MacOS X for a minimum of x86, x64 and PowerPC architectures (but likely covers all GCC supported architectures).

Supported configuration:

TnFOX was developed against: GCC's as early as v3.2.2 should also work as should Intel's C++ compiler for Linux v8 or later.

Everything must have been built with threads enabled (X11, glibc, python). This is default on recent Linuces, it may not be so with your installation.

On FreeBSD (last tested some time ago), the defaults aren't quite enough to compile out of the box. The generic kernel has the /proc filing system support compiled in but it isn't mounted by default - add "proc /proc procfs rw 0 0" to your /etc/fstab. You will also need to install the libtool package at the very least. Furthermore I found that GCC wasn't configured properly on some systems, it should include /usr/local/include and /usr/local/lib which it does not and lastly the python environment variables are missing which causes CppMunge.py to fail.

To fix GCC, the easiest is to set CPATH and LIBRARY_PATH (though you could recompile it). Doing this also fixes many other compilation errors in GNU programs so generally it's a good idea. I did this on my installation by adding to /etc/profile:

setvar CPATH /usr/local/include
export CPATH
setvar LIBRARY_PATH /usr/local/lib
export LIBRARY_PATH
setvar PYTHON_INCLUDE /usr/local/include/python2.3
export PYTHON_INCLUDE
setvar PYTHON_ROOT /usr/local/lib/python2.3
export PYTHON_ROOT
setvar PYTHON_LIB /usr/local/lib/python2.3/config/libpython2.3.so
export PYTHON_LIB
setvar PYTHON_VERSION 2.3
export PYTHON_VERSION
On versions earlier than FreeBSD v5.3, you may need to use libpython2.3.a instead. Lastly you should probably review the FAQ entry FreeBSD Questions:

Directory configuration:

The graphics libraries for JPEG, PNG and TIFF plus zlib should be installed by default on almost every Unix installation. scons finds these automatically - all you need to do is make sure the headers are there by installing the -dev versions where necessary.

Most systems already have OpenSSL installed - if not, go to its website and install yourself a copy.

Boost should be placed in a directory called "boost" next (not in) to the TnFOX directory just like on Windows. scons will find it automatically if placed there. You CANNOT use any system provided version of Boost as it needs patching to enable thread support in Boost.Python.

X11 Input Methods (XIM) and X Threads

It was discovered during testing of v0.6 that pressing any key at all with X11 reentrancy enabled causes XIM to hang (this was a bug in all prior TnFOX versions which shows how little I tested then!). According to qt-interest, this problem afflicts Qt as well and the only known solution is to disable one or the other. I chose XIM here which is sad as it costs input flexibility. Hopefully future versions of X11 will fix the problem (it's a simple "trying to hold the lock more than once" deadlock) and we can restore support.

Release builds:

I've written a custom builder for scons (in the sconslib.py file) which generates a libtool format output which can be used just like a genuine libtool library. This should greatly simplify issues for everyone, though there are some reported issues with scons on MacOS X.

You can produce binaries customised for your processor by adjusting the config.py file.


(C) 2002-2009 Niall Douglas. Some parts (C) to assorted authors.
Generated on Fri Nov 20 18:31:36 2009 for TnFOX by doxygen v1.4.7