Skip to content

Latest commit

 

History

History
302 lines (219 loc) · 9.83 KB

PORTING-NOTES.md

File metadata and controls

302 lines (219 loc) · 9.83 KB

Porting Notes

Most of the time, Version 1.4X can be compiled with the standard invocation trio

configure && make && sudo make install

For more information on the way to build STklos from the source distribution, you can look at https://stklos.bet/documentation.html.

Linux distributions

STklos is developed on a Linux distribution (Arch) and compiling it on any general purpose Linux distribution should be easy.

You can compile STklos with gcc and clang. It is known to work on 32 and 64 bits architectures.

x86_64 platform

STklos has been successfully built on the following distributions:

  • Arch Linux (64 bits gcc/clang, kernel 4.4 → 5.7)
  • Debian 10 (Buster) (64 bits gcc, kernel 4.19)

ARM architecture

STklos has been successfully built on (gcc ran on the device) and tested on the following distributions:

  • Raspbian 10.4 (Buster) on a Raspberry Pi 2 (ARM v7l) (32 bits gcc, glibc, kernel 4.19)
  • Armbian 10.4 (Buster) on a Banana Pi M3 (ARM v7l) (32 bits gcc, glibc, kernel 5.4.45)

MIPS architecture

STklos has been successfully cross-compiled and tested on the following distributions:

  • OpenWRT 19.07.1 on a TP-Link Archer C7 v4 (MIPS 74Kc V5.0, big endian) (32 bits gcc, musl, kernel 4.14)
  • OpenWRT 19.07.1 on a Asus RT-AC51U MIPS (24KEc V5.0, little endian) (32 bits gcc, musl, kernel 4.14)
  • OpenWRT 19.07.1 on a D-Link DIR-505 (MIPS 24Kc V7.4, big endian) (32 bits gcc, musl, kernel 4.14)
  • OpenWRT 19.07.1 on Qemu MALTA (MIPS 32-bits, big endian) (32 bits gcc, musl, kernel 4.14)
  • LibreCMC 1.5.1 on a TP-Link TL-WR1043ND (MIPS 74Kc V5.0, big endian) (32 bits gcc, musl, kernel 4.14)

Zram was enabled in all devices, except the emulated Qemu, which was already started with 256Mb RAM.

BSD Family

STklos has been successfully built on the following members of the BSD family:

  • FreeBSD 12.1 (64 bits, clang 8.0.1 compiler)
  • OpenBSD 6.6 (64 bits, clang 8.0.1 compiler)

Apple MacOs

STklos can be compiled on MacOs. By default, some of the needed libraries for STklos construction are available, but without the associated header files. This can mislead the configure script. In this case, you can configure STklos by forcing it to use the embedded libraries. For instance, to compile STklos on macOS 10.14 Mojave (YMMV):

configure --with-provided-ffi --with-provided-regexp && make all tests && sudo make install

STklos has been successfully built on the following distribution:

  • macOS 10.14 Mojave (clang 64 bits)

Microsoft Windows

STklos used to be compiled on Cygwin, but it is easier now to built it using WSL. It has been been successfully built on the following distribution:

  • Windows 10 running WSL (version 1) on an Ubuntu 16.04 LTS — Xenial Xerus (64 bits gcc, kernel 4.4)

The following text is kept here for historical purpose. You should not need the information it contains.

(Obsolete) Information for version 1.x

Version 1.x is known to compile with the standard invocation configure && make && sudo make install on the following architectures

- Linux 2.6    (gcc-4.x 32 and 64 bits)
- MacOS 10.5+  (gcc-4.x 32 and 64 bits)
- FreeBSD 8.x  (gcc-4.x 32 bits)
- Win32        (cygwin 1.7.x)

MacOs X Lion

To compile stklos on MacOs X Lion, the following configuration line is known to work:

$ CFLAGS="-Wl,-no_pie,-no_compact_unwind" ./configure
--with-provided-gc --with-provided-regexp
--with-provided-ffi --with-provided-bignum

Win32

The Cygwin version of Boehm GC doesn't work with STklos. Consequently,

on. the following architectures

- Linux 2.6    (gcc-4.x 32 and 64 bits)
- MacOS 10.5+  (gcc-4.x 32 and 64 bits)
- FreeBSD 8.x  (gcc-4.x 32 bits)
- Win32        (cygwin 1.7.x)

MacOs X Lion

To compile stklos on MacOs X Lion, the following configuration line is known to work:

$ CFLAGS="-Wl,-no_pie,-no_compact_unwind" ./configure
--with-provided-gc --with-provided-regexp
--with-provided-ffi --with-provided-bignum

Win32

The Cygwin version of Boehm GC doesn't work with STklos. Consequently,
you need at least a configuration such as

$ ./configure --with-provided-gc

to have a working version of STklos.
Note that the current version is a rather direct port of STklos and
has rough edges (in particular thers is no real support for the DOS
drives and the functions using pathnames use a Unixy syntax, rather
than the more conventional DOS one). Dynamic loading works, but GTK
support has not been tested.

======================================================================

(More Obsolete) Information for pre-version 1.x

All the information given below are for old versions (pre-1.0) of STklos. They are here for the record.

This file contains information for compiling STklos on various architectures.

If you experience a new port or confirm/infirm/add information which are specified here please send a mail to Erick Gallesio 'eg(at)stklos.net'

For each entry below, you'll find the OS and the version of the C compiler used for building the system. The entry Gtklos, tells if the GTklos has been built on this architecture. Canvases are set apart because, they are implemented in Gnome rather than GTk. Since Gnome, is a large library, it is likely that it is not present on a given box.

GNU/Linux (x86) ------------------------

 OS Version: Any "recent" version of the OS
   Compiler: gcc-2.95 or gcc-3.x
Compilation: CC=gcc
         CFLAGS=-03 -fomit-frame-pointer
        Who: Erick Gallesio  'eg(at)essi.fr'
 GTklos: Yes
 Canvas: Yes
Remarks: This is the STklos main development machine.

GNU/Linux (alpha) ----------------------

 OS Version: Microway Linux release 6.2 (redhat based)
   Compiler: egcs-2.91
Compilation: CC=gcc
             CFLAGS=-O2 --disable-gtklos
        Who: Erick Gallesio  'eg(at)essi.fr'
 GTklos: Yes
 Canvas: No (see below)
Remarks: I was not able to test canvases, because the machine I
     on which I have tested use an old distribution.

GNU/Linux (itanium) --------------------

 OS Version: Red Hat Ent Linux AS 2.1
   Compiler: gcc-3.2
Compilation: CC=gcc
        Who: Erick Gallesio  'eg(at)essi.fr'
 GTklos: Yes
 Canvas: Yes
Remarks: Thanks to HP Test Drive Program for providing the machine

FreeBSD (x86) -------------------------

 OS Version: version 4.2
   Compiler: gcc
Compilation:
         CC=gcc
         CFLAGS=-O2
 GTklos: No (see below)
 Canvas: No (see below)
        Who: Erick Gallesio  'eg(at)essi.fr'
    Remarks: I have no more access to such a machine. Last version
     tested was STklos v0.51. GTklos and Canvas where not
     tested because the machine didn't have X11 installed.

     A more recent log (04/08/03) of a port done by Kimura
     Fuyuki  is available at
     http://bento.freebsd.org/errorlogs/i386-5-full-logs/stklos-0.54.log
     Port works on x86 only.

Win32/Cygwin ---------------------------

 OS Version: Win32 (XP pro)
   Compiler: gcc 3.2.1
Compilation: CC=gcc
         CFLAGS=-O2 --disable-gtk --disable-gnome
 GTklos: No (see below)
 Canvas: No (see below)
        Who: Erick Gallesio  'eg(at)essi.fr'
    Remarks: I have not even tried to compile GTklos on this
     OS because I don't know how to use the GTk on Win32
     and I'm not really interested to do it.
     Any taker?

Apple OS-X -----------------------------

 OS Version: Darwin Kernel Version 6.3
   Compiler: Apple Computer, Inc. GCC version 1161, based on gcc 3.1
Compilation: CC=gcc
         CFLAGS=-O2 --disable-gnome
 GTklos: Yes
 Canvas: No (see below)
        Who: Erick Gallesio  'eg(at)essi.fr'
    Remarks: Gnome didn't work on the platform I have used, so I
     was not able to test, but since (nearly) everything
     went smoothly on this OS, it should work.

Sun Solaris ----------------------------

 OS Version: Solaris 6
   Compiler: gcc 3.0.1
Compilation: CC=gcc
         CFLAGS=-O2 --disable-gnome --disable-gtk
 GTklos: No (libs not present)
 Canvas: No (libs not present)
        Who: Erick Gallesio  'eg(at)essi.fr'
    Remarks: I had problems with gmp, which did not work in
     generic mode. I had to configure STklos and then
     I went in the gmp directory and did
         configure --disable-shared --target=sparc64
     and then, you can go back in the main directory and
     do a standard "make" and "make install"

SGI Irix -- ----------------------------

 OS Version: Irix 6.5.20f (Octane, MIPS R10,000)
   Compiler: gcc 3.3
Compilation: CC=gcc
         CFLAGS=-O2 --disable-gnome
 GTklos: Yes
 Canvas: No (libs not present)
        Who: Joshua Boyd jdboyd(at)jdboyd.net
    Remarks: Some problems with the provided GMP, but it works
         with the one available from SGI

Open Darwin (PPC) ---------------------

 OS Version: MacOS-X 10.3/OpenDarwin 7.1/Darwin 7.0
   Compiler: gcc 3.3
Compilation: --disable-gnome --disable-gtk
 GTklos: No
 Canvas: No
        Who: Markus W.Weissmann (mww (at) opendarwin.org)
    Remarks: The portfile is available from
             http://darwinports.opendarwin.org/