diff options
Diffstat (limited to 'doc/12_Compiling.md')
-rw-r--r-- | doc/12_Compiling.md | 190 |
1 files changed, 0 insertions, 190 deletions
diff --git a/doc/12_Compiling.md b/doc/12_Compiling.md deleted file mode 100644 index 8cac40c7..00000000 --- a/doc/12_Compiling.md +++ /dev/null @@ -1,190 +0,0 @@ -# Compiling - -## Requirements - -Unfortunately, the requirements for building Textadept are not quite as minimal -as running it. - -### Linux and BSD - -First, Linux and BSD systems need the [GNU C compiler][] (*gcc*) and -[GNU Make][] (*make*). BSD users additionally need to have [libiconv][] -installed. These should be available for your distribution through a package -manager. For example, Ubuntu includes these tools in the "build-essential" -package. - -Next, the GUI version of Textadept requires the GTK+ development libraries. -Again, your package manager should allow you to install them. Debian-based Linux -distributions like Ubuntu typically call the package "libgtk2.0-dev". Otherwise, -compile and install GTK+ from the [GTK+ website][]. - -The optional terminal version of Textadept depends on the development library -for a curses implementation like ncurses. Similarly, your package manager should -provide one. Debian-based Linux distributions like Ubuntu typically call the -ncurses package "libncurses5-dev". Otherwise, compile and install ncurses from -the [ncurses website][]. Note: you need the wide-character development version -of ncurses installed, which handles multibyte sequences. (Therefore, Debian -users _also_ need "libncursesw5-dev".) - -[GNU C compiler]: http://gcc.gnu.org -[GNU Make]: http://www.gnu.org/software/make/ -[libiconv]: http://www.gnu.org/software/libiconv/ -[GTK+ website]: http://www.gtk.org/download/linux.php -[ncurses website]: http://invisible-island.net/ncurses/#download_ncurses - -### Windows - -Compiling Textadept on Windows is no longer supported. The preferred way to -compile for Windows is cross-compiling from Linux. To do so, you need [MinGW][] -with the Windows header files. Your package manager should offer them. - -Note: compiling on Windows requires 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). The -terminal (pdcurses) version requires my [win32curses bundle][] instead of GTK+ -and libiconv. - -[MinGW]: http://mingw.org -[GTK+ for Windows bundle]: http://www.gtk.org/download/win32.php -[libiconv for Windows]: http://gnuwin32.sourceforge.net/packages/libiconv.htm -[win32curses bundle]: download/win32curses.zip - -### Mac OSX - -Compiling Textadept on Mac OSX is no longer supported. The preferred way is -cross-compiling from Linux. To do so, you need the [Apple Cross-compiler][] -binaries. - -[Apple Cross-compiler]: https://launchpad.net/~flosoft/+archive/cross-apple - -## Compiling - -### Linux and BSD - -For Linux and BSD systems, simply run `make deps` in the *src/* directory to -prepare the build environment followed by `make` to build the *textadept* and -*textadeptjit* executables 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 you do not have to install it, and runs -from its current location. Should you choose to install Textadept like a normal -Linux application, run `make deps` and then the usual `make` and `make install` -or `sudo make install` commands depending on your privileges. The default prefix -is */usr/local* but setting `DESTDIR` (e.g. -`make install DESTDIR=/prefix/to/install/to`) changes it. - -Similarly, `make curses` and `make curses install` installs the curses version. - -### Cross Compiling for Windows - -When cross-compiling from within Linux, first make a note of your MinGW -compiler names. You may have to either modify the `CROSS` variable in the -"win32" block of *src/Makefile* or append something like "CROSS=i486-mingw32-" -when running `make`. After considering your MinGW compiler names, run -`make win32-deps` or `make CROSS=i486-mingw32- win32-deps` to prepare the build -environment followed by `make win32` or `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, run `make win32-curses` or its variant as -suggested above to build *../textadept-curses.exe* and -*../textadeptjit-curses.exe*. - -Please note the build process produces a *lua51.dll* 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, run `make osx-deps` to prepare the build -environment followed by `make osx` to build *../textadept.osx* and -*../textadeptjit.osx*. - -Similarly, `make osx-curses` builds *../textadept-curses.osx* and -*../textadeptjit-curses.osx*. - -Build a new *Textadept.app* with `make osx-app`. - -#### Compiling on OSX (Legacy) - -Textadept requires [XCode][] as well as [jhbuild][] (for GTK+). After building -"meta-gtk-osx-bootstrap" and "meta-gtk-osx-core", 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, run the following 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 your username. - -Compiling the terminal version is not so expensive and requires no additional -libraries. After uncommenting the "Darwin" block mentioned above, simply run -`make osx-curses` to build *../textadept-curses.osx* and -*../textadeptjit-curses.osx*. - -[XCode]: http://developer.apple.com/TOOLS/xcode/ -[jhbuild]: http://sourceforge.net/apps/trac/gtk-osx/wiki/Build - -### 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. - -[LuaJIT]: http://luajit.org -[ffi library]: http://luajit.org/ext_ffi.html - -### 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 in *src/cdk.patch* and listed as follows: - -* Excluded the following source files: *alphalist.c*, *calendar.c*, - *cdk_compat.{c,h}*, *cdk_test.h*, *dialog.c*, *{d,f}scale.{c,h}*, - *fslider.{c,h}*, *gen-{scale,slider}.{c,h}*, *get_index.c*, *get_string.c*, - *graph.c*, *histogram.c*, *marquee.c*, *matrix.c*, *popup_dialog.c*, - *radio.c*, *scale.{c,h}*, *slider.{c,h}*, *swindow.c*, *template.c*, - *u{scale,slider}.{c,h}*, *view_{file,info}.c*, and *viewer.c*. -* *cdk.h* does not `#include` "matrix.h", "viewer.h", and any headers labeled - "Generated headers" due to their machine-dependence. It also `#define`s - `boolean` as `CDKboolean` on Windows platforms since the former is already - `typedef`ed. -* *cdk_config.h* no longer defines `HAVE_SETLOCALE` since Textadept handles - locale settings, no longer defines `HAVE_NCURSES_H` and `NCURSES` since - Textadept supports multiple curses implementations (not just ncurses), - conditionally enables `HAVE_GRP_H`, `HAVE_LSTAT`, and `HAVE_PWD_H` definitions - on \*nix platforms since Windows does not have them, and explicitly undefines - `NCURSES_OPAQUE` since newer versions of ncurses on Mac OSX define it. -* *cdk_util.h* `#define`s `Beep` as `CDKBeep` on Windows platforms since Windows - already defines Beep. -* The `baseName` and `dirName` functions in *cdk.c* recognize Window's '\' - directory separator. -* Deactivated the `deleteFileCB` function in *fselect.c*. - -[CDK]: http://invisible-island.net/cdk/ |