Ported library collection for KallistiOS
Find a file
QuzarDC d8b490ddb0 bearssl: Override CC using MAKE_TARGET
Without this it was building for the host system.
2026-03-01 20:02:08 +01:00
.github/workflows CI: Automatically sync to SourceForge 2025-12-14 14:15:54 -05:00
cglm add patch file for cglm and supress warnings (#131) 2025-12-14 00:03:00 -06:00
curl Update curl 7.64.1 -> 8.18.0 with mbedTLS 2026-02-25 23:52:34 -05:00
expat expat: fix build with flto 2024-08-08 09:26:07 +02:00
freetype Update to version 2.13.3 2025-05-04 22:05:39 -04:00
libADX libADX: Bump to v1.0.1 2025-08-24 01:47:15 -04:00
libAL Fix spacing in most of the Makefiles in the various ports. 2023-12-28 20:06:27 -05:00
libbearssl bearssl: Override CC using MAKE_TARGET 2026-03-01 20:02:08 +01:00
libbz2 Fix spacing in most of the Makefiles in the various ports. 2023-12-28 20:06:27 -05:00
libchipmunk Fix comments, formatting issues, and prebuild/preinstall target order 2025-01-19 10:09:11 -06:00
libcmark Fix comments, formatting issues, and prebuild/preinstall target order 2025-01-19 10:09:11 -06:00
libconio Rename GIT_REPOSITORY to GIT_REPOSITORIES for ports with URL mirrors 2024-01-05 09:34:14 -06:00
libdcplib Rename GIT_REPOSITORY to GIT_REPOSITORIES for ports with URL mirrors 2024-01-05 09:34:14 -06:00
libfastmem Adding libfastmem to kos-ports. (#23) 2023-05-17 21:24:16 -04:00
libGL Allow for GLdc to build without samples or tests 2025-12-10 16:31:34 -05:00
libimageload Rename GIT_REPOSITORY to GIT_REPOSITORIES for ports with URL mirrors 2024-01-05 09:34:14 -06:00
libjimtcl Fix spacing in most of the Makefiles in the various ports. 2023-12-28 20:06:27 -05:00
libjpeg Update Makefile 2024-08-16 18:46:48 -03:00
libKGL Fix libGL/libKGL repo URLs. Maybe even correctly this time. 2024-03-15 08:25:41 -05:00
libkmg Rename GIT_REPOSITORY to GIT_REPOSITORIES for ports with URL mirrors 2024-01-05 09:34:14 -06:00
libkosh Rename GIT_REPOSITORY to GIT_REPOSITORIES for ports with URL mirrors 2024-01-05 09:34:14 -06:00
libmodplug Rename GIT_REPOSITORY to GIT_REPOSITORIES for ports with URL mirrors 2024-01-05 09:34:14 -06:00
libmp3 libmp3: Force building against c17 2025-10-03 16:55:15 -04:00
libmpeg libmpeg: Add distinfo. 2023-12-28 20:09:36 -05:00
libogg Update libogg to 1.3.5 as well as to use autotools to build. 2025-12-13 13:14:20 -06:00
liboggvorbisplay Rename GIT_REPOSITORY to GIT_REPOSITORIES for ports with URL mirrors 2024-01-05 09:34:14 -06:00
libopusplay Rename GIT_REPOSITORY to GIT_REPOSITORIES for ports with URL mirrors 2024-01-05 09:34:14 -06:00
libparallax Rename GIT_REPOSITORY to GIT_REPOSITORIES for ports with URL mirrors 2024-01-05 09:34:14 -06:00
libpcx Rename GIT_REPOSITORY to GIT_REPOSITORIES for ports with URL mirrors 2024-01-05 09:34:14 -06:00
libpng libpng: Use stdint types. 2026-02-27 15:23:26 -05:00
libsmb2 Add libsmb2 2025-07-22 10:40:21 -04:00
libtga Rename GIT_REPOSITORY to GIT_REPOSITORIES for ports with URL mirrors 2024-01-05 09:34:14 -06:00
libtremor Fix warnings 2024-04-23 21:20:33 -07:00
libtsunami Fix libtsunami build on GCC9&10 (#71) 2024-06-04 21:11:51 -06:00
libvldmail Fix comments, formatting issues, and prebuild/preinstall target order 2025-01-19 10:09:11 -06:00
libvorbis Update libvorbis to 1.3.7 2025-12-13 13:14:20 -06:00
libwav Fix spacing in most of the Makefiles in the various ports. 2023-12-28 20:06:27 -05:00
libyaml libyaml: fix build with flto 2024-08-08 09:26:36 +02:00
libzip Fix building with CMake 4 2025-08-30 01:55:04 -04:00
lua Installed source/llimits.h include with Lua.5.5. 2026-01-18 01:58:11 -05:00
mbedtls New port of mbedtls. 2026-02-25 23:52:34 -05:00
micropython micropython: bump to v1.26.0 2025-08-24 01:46:25 -04:00
mruby mruby: improvement on rake detection 2025-08-25 23:24:32 -04:00
opus Fix comments, formatting issues, and prebuild/preinstall target order 2025-01-19 10:09:11 -06:00
opusfile Fix comments, formatting issues, and prebuild/preinstall target order 2025-01-19 10:09:11 -06:00
polarssl Fix building with CMake 4 2025-08-30 01:55:04 -04:00
raylib4dc Fix comments, formatting issues, and prebuild/preinstall target order 2025-01-19 10:09:11 -06:00
scripts Update validation script to show more info on failure. 2025-12-13 12:58:23 -06:00
SDL Use upstream SDL 1.2 repo directly instead of our own ancient patched version 2025-12-14 14:30:26 -05:00
SDL_ttf Remove extraneous lm (#68) 2024-05-17 22:09:05 -06:00
sh4zam Added libSH4ZAM to kos-ports. (#130) 2025-12-13 12:54:08 -06:00
stb_image 1-31-24 Fixed Makefile. Apparently added comments in recipe completely borked it. 2024-01-31 12:32:12 -07:00
utils Fix unsupported bash for MacOS 2024-06-30 11:28:29 -05:00
zlib Update zlib to 1.3.2 2026-02-18 00:19:43 -06:00
.gitignore Adjust .gitignore to ignore build and dist dirs 2024-10-25 12:52:17 -05:00
config.mk Add floating-point precision setting check functionality 2024-10-25 13:40:44 -05:00
COPYING Update copyright 2023-12-29 19:16:05 -05:00
README.md Add floating-point precision setting check functionality 2024-10-25 13:40:44 -05:00

kos-ports: KallistiOS Package Manager

Introduction

kos-ports is a package manager and repository of various useful libraries that have been ported to the Dreamcast operating system KallistiOS. These libraries include common audiovisual formats (jpg, png, mp3, ogg, mpeg), compression formats (libbz2, zlib), scripting languages (Lua, Tcl, MicroPython), gaming APIs (OpenGL, OpenAL, SDL), and more. Each port is meant to be as self-contained as possible and should build on the current version of KallistiOS. Dependency libraries will be fetched and built automatically, if necessary.

Prerequisites

KallistiOS

Users must have a KallistiOS environment set up already. This means you must have an SH4 toolchain built and have already compiled KallistiOS itself. Before attempting to build a port, make sure you have sourced your KallistiOS environ.sh file in your current terminal.

Environment

  1. curl or wget are required to download packages. curl is used by default, but wget may be set as an alternative in config.mk.
  2. GNU make and Bash. Other make tools and shells have not been tested and may not work properly.
  3. Git and CMake may be required for some packages in the collection.
  4. Python is required to validate packages. If you don't have Python and wish to skip validation, you can set this in config.mk.

Building a port

kos-ports was modelled after the FreeBSD ports collection, so some users may be familiar with the usage.

To build a port, simply enter its directory and type make install clean.

The package management scripts should fetch, unpack, patch, and build the package as well as any dependencies, then clean up files after itself. Once built, the package's headers will be available in kos-ports/include and the built library in kos-ports/lib. These paths are automatically included in your build flags if you are using the KOS Makefile system.

Using the ports tree

There are a few available make targets that can be used in each port directory:

  • install: Perform all steps to download, patch, build, and install the port in question.
  • clean: Clean up any dist files and intermediate build results.
  • uninstall: Uninstall the port. This does not make sure dependencies are still fulfilled, so keep that in mind!
  • portinfo: Print to the terminal a description and various metadata about the port in question.

Managing all ports

The following helper scripts are provided in the utils directory to perform the above operations on all ports in the tree:

  • build-all.sh will install all ports.
  • uninstall-all.sh will uninstall all ports.
  • clean-all.sh will clean all ports.

Lesser used targets (mainly for internal use):

  • version-check: Check the version of the port that is currently installed.
  • depends-check: Check if all dependencies of the port are installed.
  • abi-check: Check if the current KOS floating-point ABI is compatible.
  • fetch: Download dist files from upstream.
  • validate-dist: Check downloaded distfiles for validity, if enabled.
  • unpack: Unpack any fetched packages for the port.
  • build-stamp: Build the port, but do not install it.
  • clean-dist: Clean up any dist files. Does not clean build files.
  • clean-build: Cleans up build files, leaving dist files in place.

Porting a new library

Porting a new library is meant to be a relatively simple task. Take a look at an existing port, such as libpng, to get an idea how the package manager works. If you need assistance, feel free to reach out using the usual support channels.