The EMX Project

A project started by Eberhard Mattes in the late 1980's to simplify the porting of UNIX software to 32 bit OS/2 and DOS. The basic EMX runtime package consists of a dynamic link library for OS/2 that provides extensions to the OS/2 POSIX API and an interface to the OS/2 API, and a 32 bit VCPI DOS extender that provides a POSIX API that is fully compatible with the OS/2 one.

While you usually create separate executables for DOS and OS/2, you can also create executables that run on both OS/2 and DOS without any changes, however due to the use of VCPI, EMX programs do not run on Microsoft Windows' DOS shell unless you use RSXWIN. Note also that the EMX package does not come with a make program, the author recommended dmake and people have also been using more modern versions of GNU Make with the package but older versions of the EMX files themselves and a number of programs ported with the package actually expect the IBM/Microsoft NMAKE even though that product differs considerably from the UNIX style makes.

The EMX package is still useful for porting older software from UNIX like environments to OS/2 and in some cases it is justifiable to use it for developing new software with, given that is it is relatively bug free and battle hardened. But it should be taken into consideration that most of the compilers available for the system are based on old versions of the GNU system that were developed by the FSF themselves before the PGCC takeover of the codebase. In most cases you should consider Open Watcom or newer versions of GCC first for new ports and projects.

Add on packages
There were a number of add on packages for the EMX system, both parts of the original collection by Eberhard Mattes and added by third parties.


 * GCC 2.8.1, the GNU C compiler, supporting the C, C++, and Objective C languages
 * GAS 2.6, the GNU assembler
 * GDB 4.16, the GNU debugger
 * ld, an ancient version of the GNU linker hacked for emx

Third party contributions include:
 * Newer GCC versions including 2.9.5, 3.1.1, 3.2.2 and versions of PGCC
 * GNU Objective C class libraries
 * GNU Fortran-77
 * GNU Bison
 * GNAT Ada
 * GPerf
 * CXRef
 * GNU readline library
 * GNU binary utilities
 * GNU RX
 * The SVGA-Kit and VESA-EMX libraries
 * The GNU CHILL programming language was included or available at some point.
 * POSIX Pthreads - BSD Pthreads library

For running EMX programs with other operating systems:
 * RSX & RSXWIN - Replacement memory-manager that allows EMX programs to be used with MS Windows and systems that offer DOS DPMI extenders.
 * EPOCEMX - A similar library and utilities for EPOC version 5, based on OS/2 EMX and while not 100% compatible, close enough for most programs to be ported with little or no effort.

Links

 * EMX homepage - Hosted by SourceForge
 * EMX0.9d archive (at Hobbes).


 * A comparison between EMX and DJGPP - (Outdated and biased towards djgpp but should give you an idea)

Licence

 * EMX is open source software released under GPL v2.

Authors

 * Eberhard Mattes
 * Vincenzo Venuto (2GB fix)
 * W. Metzenthen (emxfpemu)
 * Henry Spencer (Regxp)