Cross-os2emx
July 23, 2026 ยท View on GitHub
This is a cross compilation toolchain for i686-pc-os2-emx target.
This consists of binutils, gcc, LIBCn, meson, CMake, libtool, and some build tools.
binutilsis v2.44 from https://github.com/psmedley/binutils-os2gccis v15.2.0 from https://github.com/psmedley/gcc-os2LIBCnis v0.1.14 from https://github.com/bitwiseworks/libcmesonis v1.11.1 from https://github.com/mesonbuild/mesonCMakeis v3.31.7 from https://github.com/bitwiseworks/cmake-os2libtoolis v2.5.4 from https://github.com/komh/libtool-os2
Tested hosts:
- x86_64-unknown-linux-gnu
- x86_64-apple-darwin
- aarch64-apple-darwin
History
-
cross-os2emx v1.4.0 (2026/07/23)
- Added
installzipto install non-RPM ZIPs - Added
installrpmto install RPMs - Added
PKG_CONFIG_LIBDIRandACLOCAL_PATHtosetemxenv - Added
pkg-configwrapper script - Added the patch work for
os2tk45/os2medef.h - Added
pkg-config,exe_wrapperto meson cross files - Added
omflibsto convert multiple .a to .lib - Linux: Removed
lxlitefile from repo for OSes with case-insensitive file systems such as macOS. Issue #59. Reported by @dmik - Improved
installrpmzip- Added support of partial package name and multiple packages
- Added support of URLs and local files
- Added
-eoption to support experimental repo
- Fixed path separator of
gcc - Fixed
sys_rootof meson cross files - Fixed misc.
- Added
-
cross-os2emx v1.3.1 (2026/06/20)
- Fixed
c_argsandcpp_argsofmesonis in[properties]section not in[built-in options]section.
- Fixed
-
cross-os2emx v1.3.0 (2026/06/19)
- Added
-Zsymsupport toemxbindandld - Added include path for
os2tk45to the cross files ofmesonandCMake - Added
setemxenvscript to help to set env vars forcross-os2emx- Use
source setemxenvor use alias for this
- Use
- Added
mesonv1.11.1 - macOS: Added
lxlitestub - macOS: Updated
kdllar - Fixed
emxbind -scommand andstripcommand for aout binaries - Linux: Fixed
kmapsymdoes not recognizeAddress Export Aliasblock
- Added
-
cross-os2emx v1.2.0 (2026/05/26)
- Added macOS support by @josch1710
- Added
lxLitev1.3.9 andkmapsymfor Linux - Added
__declspec(dllexport)support to the aout linker,ldandemxbind - Updated
kdllarto v1.4.0 - Updated the executables in
extrasto statically linked versions - Fixed
-Zomf -Zsymsdoes not generate.symfile. Issue #8 - Fixed
Unix Makefilesgenerator ofCMakefails compile tests. Issue #12 - Fixed
kdllarfails on macOS due to__.SYMDEF. Issue #28 - Fixed
emxbinddoes not recognize a.out files with old-EMX startup code. Issue #30 - Fixed misc.
-
cross-os2emx v1.1.1 (2026/04/02)
- Added
_envargs()support- Now
EMXOMFOPTfor emxomf,EMXOMFSTRIPOPTfor emxomfstrip,GASOPTfor as, andGCCOPTfor gcc are supported.
- Now
- Updated
kdllarto support response files - Fixed misc.
- Added
-
cross-os2emx v1.1.0 (2026/03/29)
- Updated
binutilsto v2.44 - Updated
gccto v15.2.0 - Added
libtoolv2.5.4 - Added response file support to emx tools
- Fixed
emxaoutfails on OMF object files generated by cross-os2emx. Issue #7 - Fixed build problems due to
autotools.- Now
autoconfv2.69,automakev1.18.1, andlibtoolv2.5.4 are built and used internally
- Now
- Fixed the sources including
fenv.hin C++ could not be linked - Fixed misc.
- Updated
-
cross-os2emx v1.0.0 (2026/03/15)
- Renamed to
cross-os2emx - Added 64-bit version of
wlandwrc - Added
kdllarv1.3.0,nasmv3.01,ninjav1.13.1, andcmakev3.31.7 - Added shared
libgccandlibstdc++-v3 - Added
libssp - Added cross build definition files for
Meson(i686-pc-os2-emx-aout.txt for aout, and i686-pc-os2-emx-omf.txt for omf in /path/to/opt/os2emx/share/meson/cross) - Added a basic cross file for
CMake(i686-pc-os2-emx.cmake in /path/to/opt/os2emx/share/cmake/cross) - Added
installrpmzipto install additional libs from netlabs rpm server - Fixed bashism. Issue #4. Reported by Dave Yeo
- Fixed ICE due to
__declspec(dllexport). Issue #9 - Fixed misc.
- Renamed to
-
os2emx-cross-toolchain-b1 (2026/02/23)
- Released at
github
- Released at
-
os2emx-cross-toolchain-test2 (2026/02/19)
- Added
emxomf,emxomfar,emxomfld,emxomfstrip,listomfandstripomfemxomfldsupports onlyWLINK
- Added
-Zomfoption with watcom tools such aswlinkandwrc - Fixed symbolic link problems
- Added
-
os2emx-cross-toolchain-test1 (2026/02/15)
- Added
binutilsv2.33.1 - Added
emxexp,emximp,emxbindand OS/2ld - Added
gccv9.2.0- Always link to
libgcc.a
- Always link to
- Added
How to use
Here are the examples.
- Set env vars for cross-os2emx
You should set env vars such as PATH for cross-os2emx like:
. setemxenv
- autotools
./configure --host=i686-pc-os2-emx
- meson
For aout:
meson setup build_dir -Dos2_emxomf=false --cross-file=$HOME/opt/os2emx/share/meson/cross/i686-pc-os2-emx-aout.txt
You can omit -Dos2_emxomf=false for aout.
For omf:
meson setup build_dir -Dos2_emxomf=true --cross-file=$HOME/opt/os2emx/share/meson/cross/i686-pc-os2-emx-omf.txt
- CMake
cmake -S . -B build_dir -DCMAKE_TOOLCHAIN_FILE=$HOME/opt/os2emx/share/cmake/cross/i686-pc-os2-emx.cmake
- Others
export CC=i686-pc-os2-emx-gcc
export CXX=i686-pc-os2-emx-g++
export AR=i686-pc-os2-emx-ar
export STRIP=i686-pc-os2-emx-strip
and so on
If you use -Zomf to compile sources not to link, then you should set AR to i686-pc-os2-emx-emxomfar like:
export AR=i686-pc-os2-emx-emxomfar
NOTE: You should modify the path to/in the above files to the proper ones according to your system env.
How to install additional libs with installrpmzip
-
Find the necessary libs at https://rpm.netlabs.org/release/00/zip
-
Copy the package name or the URL
-
Execute
installrpmzipwith the package name. For example, if you want to install pthread:
/path/to/opt/os2emx/bin/installrpmzip pthread-0_2_6-1_oc00.zip
-
Local files are supported.
-
Leading partial name or wildcards such as '*', '?' are supported:
/path/to/opt/os2emx/bin/installrpmzip pthread-0_2_6
/path/to/opt/os2emx/bin/installrpmzip pthread-*
If the matched packages are many, only the latest version is installed out of the matched packages with the same package name excluding version info.
How to install additional libs with installrpm
-
Find the necessary libs at https://rpm.netlabs.org/release/00/pentium4/pentium4/
-
Copy the package name or the URL
-
Execute
installrpmwith the package name. For example, if you want to install pthread:
/path/to/opt/os2emx/bin/installrpm pthread-devel-0.2.6-1.oc00.pentium4.rpm
-
Local files are supported
-
Leading partial name or wildcards such as '*', '?' are supported:
/path/to/opt/os2emx/bin/installrpm pthread-devel-0.2.6
/path/to/opt/os2emx/bin/installrpm pthread-devel-0*
If the matched packages are many, only the latest version is installed out of the matched packages with the same package name excluding version info.
How to install additional libs with installzip
- Execute
installzipwith the URL:
/path/to/opt/os2emx/bin/installzip URL-for-zip
-
Local files are supported
-
The zip file should have /lib, /include directory.
How to build
-
Clone the sources from github:
git clone https://github.com/komh/cross-os2emx.git -
Bootstrap:
./bootstrap -
Build:
make -
Install:
make installThis will install the built files into
$HOME/opt/os2emx.
- NOTE 1: Some tools and libs such as
gettext,autopoint,textinfo,flex,bison, and so on are required bybinutilsandgcc. - NOTE 2:
libsslandlibcryptoofopensslare required byCMake. - NOTE 3:
wget,tar, andunzipare required to download and to extractautotoolsandLIBCnbinaries. - NOTE 4: Unless you set
PREFIXROOT,PREFIXROOTis set to$HOMEby default. If you want to set PREFIXROOT to other directory than $HOME. then you should set PREFIXROOT to the same value WHENEVER calling make. For example,
make PREFIXROOT=/
make install PREFIXROOT=/
This will install into $PREFIXROOT/opt/os2emx.
Known problems
- Some .so files are missing in pre-built binaries such as
libiconv.so.2andlibmpfr.so.4and so on. For this, see https://github.com/komh/cross-os2emx/issues/2.
Donation
If you are satisfied with this program and want to donate to me, please visit the following URL.
https://www.os2.kr/komh/os2factory/
Or, please click the Ads in the following blog.
Contact
Please use the issue tracker of github:
https://github.com/komh/cross-os2emx/issues
KO Myung-Hun