Contents

Compiling

Requirements

Unfortunately, the requirements for building Textadept are not quite as minimal as running it.

Linux and BSD

First, Linux and BSD systems will need the GNU C compiler (gcc) and GNU Make (make). Both should be available for your distribution through a package manager. For example, Ubuntu includes these tools in the “build-essential” package.

Next, the GTK+ development libraries are necessary for compiling the GUI version of Textadept. Your package manager should allow you to install them. For Debian-based Linux distributions like Ubuntu, the package is typically called “libgtk2.0-dev”. Otherwise, compile and install GTK+ from the GTK+ website.

If you would like to compile the terminal version of Textadept, you will need the development library for a curses implementation like ncurses. Similarly, one should be available from your package manager. For Debian-based Linux distributions like Ubuntu, the ncurses package is typically called “libncurses5-dev”. Otherwise, compile and install ncurses from the ncurses website. Note: you need to have the wide-character development version of ncurses installed, which handles multibyte sequences. (Therefore, Debian users will also need “libncursesw5-dev”.)

In addition, BSD users will need to have libiconv installed.

Windows

Compiling Textadept on Windows is no longer supported. If you wish to do so however, you need a C compiler that supports the C99 standard, the GTK+ for Windows bundle (2.24 is recommended), and libiconv for Windows (the “Developer files” and “Binaries” zip files). To compile the terminal (pdcurses) version, you will need my win32curses bundle instead.

The preferred way to compile for Windows is cross-compiling from Linux. To do so, in addition to the GTK+ bundle mentioned above, you need MinGW with the Windows header files. They should be available from your package manager.

Mac OSX

Compiling Textadept on Mac OSX is no longer supported. The preferred way is cross-compiling from Linux. To do so, you will need my GTK+ for OSX bundle and the Apple Cross-compiler binaries.

Compiling

Make sure you downloaded the textadept_x.x.src.zip, regardless of what platform you are on, and not a platform-specific binary package.

Linux and BSD

For Linux and BSD systems, simply run make in the src/ directory. The textadept and textadeptjit executables are created in the root directory. Make a symlink from them to /usr/bin/ or elsewhere in your PATH.

Similarly, make curses builds textadept-curses and textadeptjit-curses.

Note: you may have to run

make CFLAGS="-I/usr/local/include" \
     CXXFLAGS="-I/usr/local/include -L/usr/local/lib"

if the prefix where any dependencies are installed is /usr/local/ and your compiler flags do not include them by default.

Installing

Textadept is self-contained, meaning it does not need to be installed and can be run from wherever it is located. However, if you want to install Textadept like a normal Linux application, run the usual make and then make install or sudo make install depending on your privilages. The default prefix is /usr/local but you can change this by setting DESTDIR (e.g. make install DESTDIR=/prefix/to/install/to).

Similarly, make curses and make curses install installs the curses version.

Cross Compiling for Windows

When cross-compiling from within Linux, first unzip the GTK+ for Windows bundle into a new src/win32gtk/ directory. Also, unzip the libiconv zips into the same directory. Then, depending on your MinGW installation, either run make win32, modify the CROSS variable in the “win32” block of src/Makefile and run make win32, or run make CROSS=i486-mingw32- win32 to build ../textadept.exe and ../textadeptjit.exe. Finally, copy the dll files from src/win32gtk/bin/ to the directory containing the Textadept executables.

Similarly for the terminal version, unzip the win32curses bundle into a new src/win32curses/ directory and run make win32-curses or its variants as suggested above to build ../textadept-curses.exe and ../textadeptjit-curses.exe.

Please note that a lua51.dll is produced for only textadeptjit.exe and textadeptjit-curses.exe because limitations on external Lua library loading do not allow statically linking LuaJIT to Textadept.

Cross Compiling for Mac OSX

When cross-compiling from within Linux, first unzip the GTK+ for OSX bundle into a new src/gtkosx/ directory. Then run make osx to build ../textadept.osx and ../textadeptjit.osx. At this point it is recommended to build a new Textadept.app from an existing one. Download the most recent app and replace Contents/MacOS/textadept.osx and Contents/MacOS/textadeptjit.osx with your own versions.

Similarly, make osx-curses builds ../textadept-curses.osx and ../textadeptjit-curses.osx.

Compiling on OSX (Legacy)

XCode is needed for Mac OSX as well as jhbuild (for GTK+). After building “meta-gtk-osx-bootstrap” and “meta-gtk-osx-core”, you need to build “meta-gtk-osx-themes”. Note that the entire compiling process can easily take 30 minutes or more and ultimately consume nearly 1GB of disk space.

After using jhbuild, GTK+ is in ~/gtk/ so make a symlink from ~/gtk/inst to src/gtkosx in Textadept. Then open src/Makefile and uncomment the “Darwin” block. Finally, run make osx to build ../textadept.osx and ../textadeptjit.osx.

Note: to build a GTK+ for OSX bundle, the following needs to be run from the src/ directory before zipping up gtkosx/include/ and gtkosx/lib/:

sed -i -e 's|libdir=/Users/username/gtk/inst/lib|libdir=${prefix}/lib|;' \
gtkosx/lib/pkgconfig/*.pc

where username is replaced with your username.

Compiling the terminal version is not so expensive. After uncommenting the “Darwin” block mentioned above, simply run make osx-curses to build ../textadept-curses.osx and ../textadeptjit-curses.osx. No additional libraries are needed.

Notes on LuaJIT

LuaJIT is a Just-In-Time Compiler for Lua and can boost the speed of Lua programs. I have noticed that syntax highlighting can be up to 2 times faster with LuaJIT than with vanilla Lua. This difference is largely unnoticable on modern computers and usually only discernable when initially loading large files. Other than syntax highlighting, LuaJIT offers no real benefit performance-wise to justify it being Textadept’s default runtime. LuaJIT’s ffi library, however, appears to be useful for interfacing with external, non-Lua, libraries.

Notes on CDK

CDK is a library of curses widgets. The terminal version of Textadept includes a slightly modified, stripped down version of this library. The changes made to CDK are as follows: