Building and installing

Requirements

Development libraries alongside with their tested versions (as of this writing) are given below:

  • >=Lua-5.1.2
  • >=libX11-1.1.3 (for the x11 driver)
  • >=libXft-2.1.12 (for the x11 driver)
    • XFree86VidMode extension (for the x11 driver)
  • >=fontconfig-2.5.0 (for the x11 driver)
  • >=freetype-2.3.5 (for the x11 and directfb drivers)
  • >=DirectFB-0.9.25.1 (for the directfb driver)
  • MinGW (for the Windows platform)
  • microwindows-0.91 (for the Nano-X driver)

LibXft and fontconfig are needed for building the x11 driver, but tekUI falls back to the core X11 API if they are unavailable at runtime. In addition to that, for the documentation system and the DirList class to work, an installation of the LuaFileSystem package is recommended.

Linux note: By popular request, these are the names of packages required to compile and run tekUI on Ubuntu Linux: lua5.1, liblua5.1-0-dev, liblua5.1-filesystem0, libfreetype6-dev, libxft-dev, libxext-dev, libxxf86vm-dev.

Adjusting the build environment

This release has been tested on and should compile and run out of the box on

  • Ubuntu Linux 9.10, 8.04 and 7.10
  • Windows 2000, Wine
  • FreeBSD 7.0 (special precautions needed, see annotations below)
  • Gentoo Linux x86/10.0, x86/2008.0, amd64/2007.0, ppc/2007.0

If building fails for you, you have to adjust the build environment, which is located in the config file on the topmost directory level. Supported build tools are gmake (common under Linux) and pmake (common under FreeBSD).

FreeBSD notes

You need a Lua binary which is linked with the -pthread option, as tekUI is using multithreaded code in shared libraries, which are dynamically loaded by the interpreter.

Windows notes

Not much time has been spent on the Windows version yet. As a result, this display driver is still incomplete and in an experimental state. For example, it is not possible to select an entry in a popup without releasing the mouse button first. For reasons not yet investigated, this display driver feels disproportionately sluggish. For adjusting the build environment, see the config file.

X11 notes

The XFree86VidMode extension is linked against by default. It can be disabled by removing -DENABLE_XVID from X11_DEFS in the config file.

In case of problems with texts and labels, try removing -DENABLE_XFT from X11_DEFS in the config file. Some versions of X11 are known to not support the Composite extension and antialiased fonts using Xft at the same time.

Nano-X notes

For the Nano-X driver you will almost certainly have to adjust the config file. Due to some limitations of Nano-X, tekUI applications will probably make sense only when running in fullscreen mode without a window manager. See also tek/ui/style/nanox.css for more information. Example:

# nano-X & THEME=nanox FULLSCREEN=true bin/demo_custom.lua

Raw framebuffer notes

Drawing primitives, clipping, and antialiased fonts are provided, and rendering can be targeted to user-supplied memory. This driver implements no input and serves as a template (or skeleton) for specializations in a target context, like custom hardware or a 3D game or simulation. For testing and debugging, the raw framebuffer driver is recursive; by plugging in another display driver, an instant visualization device and input source can be provided.

Building

To see all build targets, type

# make help

The regular build procedure is invoked with

# make all

Installation

A system-wide installation of tekUI is not strictly required – in so far as the majority of display drivers is concerned. The DirectFB driver, in contrast, looks up fonts and cursors globally and must be installed in any case.

Once tekUI is built, it can be worked with and developed against, as long as you stay in the top-level directory of the distribution; all required modules and classes will be found if programs are started from there, e.g.:

# bin/demo.lua

If staying in the top-level directory is not desirable, then tekUI must be installed globally. By default, the installation paths are

  • /usr/local/lib/lua/5.1
  • /usr/local/share/lua/5.1

It is not unlikely that this is different from what is common for your operating system, distribution or development needs, so be sure to adjust these paths in the config file. The installation is conveniently invoked with

# sudo make install

Environment variables

  • NOCURSOR - "true" to disable the mouse pointer over a tekUI application. This may be useful when running on a touch screen.
  • FULLSCREEN - "true" to try opening an application in fullscreen mode. Fullscreen support varies and depends largely on the display driver in use.
  • THEME - Theme names corresponding to style sheet files in tek/ui/style/. Multiple themes can be separated by spaces. The default is "default desktop". The desktop theme tries to import the color scheme found in a GTK2 configuration file.
  • GTK2_RC_FILES - Possible locations of a gtkrc-2.0 configuration file.