Download
Package can be downloaded from Sourceforge. You can also browse or checkout subversion repository here. Please note that subversion repository does not include needed datafiles, only source codes.
All the files in package are signed using OpenBSD signify tool. To verify files after unpacking, following command should give screenful of OK's:
$ signify -C -p signify_key-detroit-X.Y.Z.pub -x SHA256.sig
For now the engine sould be considered as beta quality, because not all functions are thoroughly tested.
Resource usage
Detroit engine is not the lightest engine available. It tries to do as much work as it can in parallel, and makes use of many internal cache buffers. As a minimum, you need post 2000 workstation for smooth usage, something like 4 CPU cores is a good baseline. If supplied widgets are in use, you need at least something like 100Mb of RAM.
Compilation
If you just downloaded the package and are willing to compile it, I recommend that you check one of the example projects in examples page. If you compile the plain engine, it does not do anything at all, it needs some fuel to drive. Examples are included in the distribution package.
For succesful compilation, you need:
- POSIX system, elf executable format is recommended,
- Clang or GCC. GCC minimum major version of 4 is recommended, 3 may work too,
- GNU make (gmake) or compatible is a must, and
- perl 5 for compiling Ano script, menu resources and widget resources. Version 5.30.3 is proven to work, probably older version will work too.
Basic set of essential libs needed:
- pthread(s) library,
- libiconv and most likely the
- zlib or libz, which way you like it.
Dependencies needed for windowing system to work:
- freetype2, truetype font rendering engine,
- libGL, OpenGL library, you may also need to install libglvnd, the vendor neutral dispatch library,
- libX11, the X11 library, and
- libXext, X11 extension library.
Supported with windowing system if found:
- libXrandr, X11 resize and rotate library, for syncing windows to screen refresh rate.
If any of these audio backends exists, audio system will work:
- alsa, advanced linux sound architecture library, usually seen in linux systems,
- ao, portable audio output library,
- oss, open sound system, usually seen in BSD systems,
- portaudio, portable cross-platform audio library,
- pulseaudio, general sound server for posix systems, and
- sndiod, small audio framework, usually seen in BSD systems.
Supported with audio playback if found:
- libflac, for playing FLAC audio files.
If you would like to compile supplied Redtools requester library, you need to install:
- motif toolkit, the industry standard GUI, and
- libXt, the X toolkit library.
Before compilation, fetch the data files by using build/pkget.sh script. Script fetches the data package which includes widgets and other data files and unpacks it automatically:
$ ./build/pkget.sh
Compilation goes as usual on unix systems:
$ ./configure $ gmake
If you want to use clang instead of gcc, or whichever is the default in your system, pass CC=clang to configure script. By default configure script uses pkg-conf to find needed packages.
Supported platforms
Supported platforms are listed below. Configure snippets for each platform are used by me and are proven to work. Please note that configure snippets are just an examples, your system will most likely vary.
FreeBSD (amd64, sparc)
FreeBSD is the main developing platform, and works out-of-the box after installing libiconv. Oldest tested version is 12.3.
$ ./configure \ --prefix=`pwd` \ --enable-debug \ --enable-safemem \ --enable-native \ --with-libiconv=/usr/local \ --with-libintl=/usr/local \ --with-libltdl=/usr/local \ --with-motif=/usr/local \ --with-redtools \ --with-redtools-xft \ --with-redtools-xft-typeface=Noto \ --with-redtools-xft-fontsize=12 \ OPENSSL_CFLAGS=-DPROG_HAS_OPENSSL -I/usr/include \ OPENSSL_LIBS=-L/usr/lib -lcrypto -lssl \ PKG_CONFIG_PATH=/usr/local/libdata/pkgconfig
NetBSD (amd64, pmax, sparc, vax)
NetBSD is one of the developing platforms, and works out-of-the box after installing libiconv. Oldest tested version is 9.3.
$ ./configure \ --prefix=`pwd` \ --enable-debug \ --enable-safemem \ --enable-native \ --with-libiconv=/usr/pkg \ --with-libintl=/usr/pkg \ PKG_CONFIG_PATH=/usr/X11R7/lib/pkgconfig
OpenBSD (amd64, vax)
OpenBSD works out-of-the box after installing libiconv. Oldest tested version is 5.9.
$ ./configure \ --prefix=`pwd` \ --enable-debug \ --enable-safemem \ --enable-native \ --enable-unveil \ --with-libiconv=/usr/local \ --with-libintl=/usr/local \ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
Linux (amd64)
Linux should work nicely, but if nvidia display driver is in use, -DPROG_HAS_X11 must be specified when configuring because nvidia does not supply pkg-conf file to their OpenGL library (at the time of writing). Oldest tested versions are CentOS 7 and Debian 8. Please note that this platform is not supported by me anymore.
$ ./configure \ --prefix=`pwd` \ --enable-debug \ --enable-safemem \ --enable-native \ GL_CFLAGS=-DPROG_HAS_X11 -I/usr/include \ GL_LIBS=-L/usr/lib -lGL \ PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/share/pkgconfig
Solaris 11/SunOS 5.11 (amd64)
Solaris 11 should work fine after installing some freeware dependencies.
$ ./configure \ --prefix=`pwd` \ --enable-debug \ --enable-native \ PKG_CONFIG_PATH=/usr/lib/amd64/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
Solaris 10/SunOS 5.10 (amd64)
Solaris 10 should work more or less after installing some freeware dependencies.
$ ./configure \ --prefix=`pwd` \ --enable-debug \ --enable-native \ X11_CFLAGS=-DPROG_HAS_X11 -I/usr/include \ X11_LIBS=-L/usr/lib -lX11 \ XEXT_CFLAGS=-I/usr/include \ XEXT_LIBS=-L/usr/lib -lXext \ GL_CFLAGS=-DSUN_OGL_NO_VERTEX_MACROS -I/usr/include \ GL_LIBS=-L/usr/lib -lGL \ PKG_CONFIG_PATH=/usr/lib/amd64/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
Solaris 8/SunOS 5.8 (sparc)
Solaris 8 should work more or less after installing some freeware dependencies.
$ ./configure \ --prefix=`pwd` \ --enable-debug \ --enable-native \ --with-libiconv=/usr/local \ --with-libintl=/usr/local \ X11_CFLAGS=-DPROG_HAS_X11 -I/usr/X/include \ X11_LIBS=-L/usr/X/lib -lX11 \ XEXT_CFLAGS=-I/usr/X/include \ XEXT_LIBS=-L/usr/X/lib -lXext \ GL_CFLAGS=-DSUN_OGL_NO_VERTEX_MACROS -I/usr/X/include \ GL_LIBS=-L/usr/X/lib -lGL \ FREETYPE2_CFLAGS=-I/usr/local/include/freetype2 \ FREETYPE2_LIBS=-L/usr/local/lib -lfreetype \ PKG_CONFIG_PATH=/usr/lib/amd64/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
Solaris 7 and SunOS 2.6 (sparc)
Same as Solaris 8 above.
MacOS X/Darwin
OS X probably works fine, but needs some dependencies installed using port(1). Also X server is needed. Please note that this platform is not supported by me anymore.
$ ./configure \ --prefix=`pwd` \ --enable-debug \ --enable-safemem \ --enable-native \ --with-libiconv=/opt/local \ --with-libintl=/opt/local \ PKG_CONFIG_PATH=/opt/local/lib/pkgconfig:/opt/local/share/pkgconfig
Copyright © 2023, Jani Salonen <salojan at goto10 piste co>. Piste is finnish word and means dot. All rights reserved.