mGSTEP
 
F A Q    |    Graphics    |    Notes    |    LLVM    |    Demos    |    Home   
 
What minimum tools and libraries are required?  (newer will usually suffice)

   Tools:        Bash-3.2.x, GNU Make-3.81.x, gcc-4.6.4 with Objective-C support or LLVM clang
   Libraries:   tiff-v3.6.1, libffi-3.2.1, freetype-2.6 or libpng-1.6.x if using built-in FreeType
   Optional:   jpeg-6b or libjpeg-turbo-1.4.1, giflib-4.1.0, libpng-1.6.x, zlib-1.2.8, openssl-1.0.2, openal-soft-1.18.2

Which Linux distros are supported ?

Ubuntu 14.04* / 16.04 x86_64 are used for periodic testing (*libpng16 must be built from source code on 14).

$ apt-get install gobjc libssl-dev libffi-dev libx11-dev libxext-dev \
 libtiff-dev libjpeg-dev libgif-dev libpng-dev libfreetype6-dev libogg-dev \
 libvorbis-dev libopenal-dev

TrueType fonts require the fonts.scale and fonts.dir files which can be generated with the following commands:

$ cd /usr/share/fonts/truetype/liberation
$ mkfontscale
$ mkfontdir

What tools are needed to build on OpenBSD 6.6 ?

OpenBSD's KSH and Make are supported. Install the required packages and build with the following:

$ pkg_add -v bzip2 gcc gobjc giflib-5.1.6 jpeg-2.0.3v0 tiff-4.0.10 \
libffi-3.2.1p5 libiconv-1.16p0 libogg-1.3.4 libvorbis-1.3.6 openal-1.19.1v0
$ CC=/usr/local/bin/egcc  make

How do I configure mGSTEP for the Linux frame buffer ?

Specify "fb" as the AppKit backend when prompted during build configuration. A Linux kernel with VESA frame buffer support is required. An unused virtual console must be available (no getty attached). The frame buffer must be at a 32bit depth. mGSTEP apps alter the console settings so an ungraceful exit might require a console reset from a remote terminal (kbd_mode -a).

Why not use GNU autoconf ? How do you add support for another platform ?

With Autoconf you never really know what you're going to get. Simply building interdependent components out of order can produce very different results. A configuration utility similar to that employed by the Linux kernel is ideal for embedded solutions that require deterministic output. Projects dependent on the mGSTEP libraries should leverage its build configuration. The current build system implements most of this.