Skip to content

Fork of Lambertsen & Jenner (& al.)'s IA-16 (Intel 16-bit x86) port of GNU compilers ― added far pointers & more • use https://github.com/tkchia/build-ia16 to build • Ubuntu binaries at https://launchpad.net/%7Etkchia/+archive/ubuntu/build-ia16/ • DJGPP/MS-DOS binaries at https://gitlab.com/tkchia/build-ia16/-/releases • mirror of https://gitlab.co

License

Notifications You must be signed in to change notification settings

Oichkatzelesfrettschen/gcc-ia16-8088

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the files whose
names start with COPYING for copying permission.  The manuals, and
some of the runtime libraries, are under different terms; see the
individual source files for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs/ for how to report bugs usefully.

Copyright years on GCC source files may be listed using range
notation, e.g., 1987-2012, indicating that every year in the range,
inclusive, is a copyrightable year that could otherwise be listed
individually.

## Building the IA16 Cross Compiler

A convenience setup script is provided to install toolchains and supporting
packages required to build GCC for the `ia16-elf` target. Run the script with
root privileges:

```bash
sudo ./setup.sh
```

After dependencies are installed you can build and smoke test the compiler
using the workflow in `.github/workflows/build.yml` or manually:

```bash
mkdir build && cd build
../configure --target=ia16-elf --enable-languages=c,c++ --disable-nls \
  --disable-multilib --with-newlib --disable-libssp --disable-libquadmath
make -j$(nproc)
make install DESTDIR=$PWD/../install
export PATH=$PWD/../install/usr/local/bin:$PATH
../scripts/test-ia16-hello.sh
```

The test script builds a small "hello world" program and verifies that the
resulting binary is for the 8086 architecture.  The CI workflow builds twice
using a matrix of host triples (`x86_64-linux-gnu` and `i686-linux-gnu`) to
ensure both 64-bit and 32-bit environments can compile the toolchain.

## Development Utilities

Clang tooling is configured for consistency.  `.clang-format` and
`.clang-tidy` live in the repository root.  The sample program under
`samples/` can be built with Meson or the provided `mkfile`, both of which
invoke `clang-tidy` automatically:

```bash
meson setup build && ninja -C build clang-tidy
make -C samples -f mkfile
```


Pre-commit hooks use these tools to keep formatting and static analysis
results up to date. After running `setup.sh`, install the git hooks with:

```bash
pre-commit install
```

A local pre-commit cache resides in `.pre-commit`. The setup script
exports `PRE_COMMIT_HOME` to this directory so hooks reuse the cached
virtual environments.

Additional clang-tidy configurations live under `clang-tidy/`. The
`c23` and `cpp17` subdirectories contain `.clang-tidy` files tuned for
C23 and C++17 code bases respectively.

### Environment baseline

The `setup.sh` script installs an extensive suite of build and
development packages. Key components include Meson, Ninja, CMake,
m4, GCC and Clang/LLVM along with their related tooling. Debugging
and profiling utilities such as GDB, LLDB and Valgrind are provided,
as well as fuzzing frameworks like AFL++ where available. The script
also configures pre-commit hooks so that formatting and static
analysis tools run consistently across environments.

Failed package installs are recorded in `/tmp/setup-failures.log`. The
script attempts to fall back to `pip` for Python-related packages if the
corresponding `apt` installation does not succeed, allowing the setup to
continue even when some packages are unavailable.

About

Fork of Lambertsen & Jenner (& al.)'s IA-16 (Intel 16-bit x86) port of GNU compilers ― added far pointers & more • use https://github.com/tkchia/build-ia16 to build • Ubuntu binaries at https://launchpad.net/%7Etkchia/+archive/ubuntu/build-ia16/ • DJGPP/MS-DOS binaries at https://gitlab.com/tkchia/build-ia16/-/releases • mirror of https://gitlab.co

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 38.5%
  • C++ 15.4%
  • Ada 14.7%
  • Java 13.5%
  • Go 4.8%
  • GCC Machine Description 3.3%
  • Other 9.8%