LM Ports

This page lists some of the customizations, patches, bug fixes and build scripts I'm working on. I'm starting to upload the code to an online archive. The tables below show what has been uploaded to the archive to date. If you're interested in a patch or build script that hasn't been uploaded yet or you're working on similar fixes, feel free to contact me about it.

More details about the template based build scripts and their implementation are available from my page on the LM BLD system.

The Patches and Build Scripts

Here is a list of some of the many programs and libraries I'm working on and what I'm patching. It is in no way a comprehensive list of all the projects I'm working on.


A text to speech ebook reader that uses Festival lite.

Patches: Added SDL 2.x support. Ported to Windows. Fixed rendering of some HTML codes.

To do: Currently working on option to use more standard zlib with contrib library in place of libzip. Switching to cdetect instead of autoconf/configure.

lm bld filesbash build scripts


An alternative build tool that can be used in place of the GNU autoconf/configure tools. It's in C, so no extra languages or shells are required for use (such as m4, Perl, bash, etc.).

Patches: Added pkgconf/pkg-config support. Added support for building C++ applications. Added more documentation. See notes in patches for more modifications.

To do: Need to add support to return compiler triple information. Add better support for cross-compiling

lm bld filesbash build scripts


Command line file comparison tool. Takes input from diff and creates browser friendly output that makes it easy to compare differences.

Patches: Fixed several memory issues.


Lightweight, portable C++ GUI library. Currently ports to POSIX systems, Windows, Mac and any platform that nano-x supports including Android and some embedded systems.

Patches: My version of FLTK includes parts of Dmitri's work to add the Oxy style.

To do: Switch to FLTK 1.4.x when possible. Look into adding Oxy and possible other screen styles to it. Get a working SDL based back end so FLTK will port to any platform SDL supports (including systems like Haiku and Syllable). Have been considering what it would take to add a C interface for developers who prefer to work with C libraries over C++ based GUIs.


Version of gzip based on an implementation used on some BSD systems.

Patches: Added support for some other types of decompression.


Light version of libintl based on a BSD licensed version created at one point for PostgreSQL.

Patches: Works on a variety of platforms.

To do: Create related gettext tools such as msgfmt. Possibly add alternative functionality for getting default language for platforms like Android.


Version of patch used by BSD systems.

Patches: Ported to Windows and added better console support on Windows.


Patches: Added SDL 2.x support. Added internationalization support for UCS-2 character set. Using sdl2_ttf to draw characters.

To do: Add better internationalization support including UTF-8 routines and expand from using UCS-2 character set to UTF-32 character set.

lm bld filesbash build scripts


BSD based library that I've ported to work with pdcurses. Draws menus using curses API.

Patches: Fixed memory bugs.

To do: Add better internationalization support and possibly virtual keyboard support.


BSD based library that I've ported to work with pdcurses. Draws forms using curses API.

Patches: Fixed memory bugs.

To do: Add better internationalization support and possibly virtual keyboard support.


Command line PDF display tool. Can be combined with utilities like grep to search PDF files.

Patches: Updated to work with later version of mupdf API.

To do: Mupdf seems to have a very unstable API and this program typically needs to be updated every time a new mupdf release comes out to make sure it continues to work.

lm bld filesbash build scripts


Graphics image viewer.

Patches: Added SDL 2.x support. Fixed several memory issues.

To do: Improve SDL 2.x support when window changes size. Possibly add support to load SVG files for viewing using nanosvg.

lm bld filesbash build scripts


Subset of OpenGL implementation offering SDL, nano-x, X11 and VesaFB for back ends. Support for integer arithmetic for systems that don't handle floating point support well. Good for systems that might not have OpenGL support or where OpenGL based applications run slowly.

Patches: Added SDL 2.x support. Reorganized so it's easier to use as a library. Added a few missing OpenGL functions so there's enough support to compile an application such as Emilia pinball with it.

To do: Add more missing OpenGL functionality. At some point, it would be nice to use this with mupdf's OpenGL front end. Add functions to match GLFW API.


Graphics editor.

Patches: Using patch created by FLTK developers to fix a bug in the code when used with FLTK 1.3.x and also prevented the program from working with FLTK 1.4.x support. Ported to Windows.

To do: Possibly add support to load SVG files and convert to bitmaps for editing using nanosvg.

lm bld filesbash build scripts


Character drawing library for SDL.

Patches: Adding SDL 1.2.x support so same library can be used for either version of SDL. Improved internationalization support. Standard sdl2_ttf library (and sdl_ttf) only supported UCS-2 character set. Added ability to use any characters from the UTF-32 character set. Truetype font must support those characters in order for the library to draw them. Switched build system from autoconf/configure to cdetect.

lm bld filesbash build scripts


Unicode TrueType font viewer that works with fontconfig.

Patches: Added SDL 2.x support. Decreased system calls where possible.

lm bld filesbash build scripts


Tuxmath is an educational application to help learn and improve memory of math tables (addition, subtraction, multiplication and division). I've created an experimental Debian package for anyone who may want to run the application on Debian based Linux systems. t4k_common package is needed as well. All other dependencies were supplied by Debian shared libraries during the build. File ownership (chown) may need to be changed before running the program. If there's interest, I can create a Windows executable.

Patches: Fixed Windows platform support so application didn't crash. Added SDL 2.x support. Fixed sdl_ttf (sdl2_ttf) rendering. Fixed several several bugs. Using CDetect in place of GNU autotools.

To do: Improve text-to-speech functionality and fix memory issues related to it. It would be nice to add speech-to-text capability so this can be built for mobile devices like Android and users can supply answers via voice instead of keyboard. I've also done some work on making similar patches to Tuxtype but location of files needs to be reworked and Internationalization support/conversion between UTF-8, UTF-32 and wchar_t needs to be overhauled to work properly.

lm bld filesbash build scriptsexperimental deb package


Unicode TrueType font viewer that displays the entire character set of a font.

Patches: Added SDL 2.x support.

To do: Adding ability to use sdl2_gfx instead of sdl_draw as dependency.

lm bld filesbash build scripts

Reasons for customizing

I've been searching for lightweight, cross-platform, maintable, useful Open Source software that fulfills the various needs of a desktop system. Many of the programs I've found are no longer actively maintained. Some are maintained, but the maintainers are not open to taking patches. Others are more receptive and I've sent them patches when I have them. My first concern is to make sure I can automate the build of the package successfully in a repeatable manner. I also fix bugs and memory issues as I find them. I attempt to improve portability to a number of platforms when possible. I've ported many Open Source programs to Windows as well as some to DOS/FreeDOS and FreeBSD. I've also built programs with various C runtime libraries including musl and uclibc. For SDL 1.2.x programs, I've been adding additional support for SDL 2.x. For FLTK based programs, I've been updating programs that work with older versions of FLTK to FLTK 1.3.x and 1.4.x. I prefer portable apps (that can run from a flash drive or any directory). So, using an optional path library, I've been modifying applications to make them more portable and to handle paths where helper files are placed in a consistent manner. I also patch programs to customize them, adding functionality I would personally like or want in a program.

What I've Archived

The archive contains original source code, build and patch related files and in some cases executables. The zipped LM BLD scripts (input to the LM BLD system) include patches and build related information. The zipped build scripts files contain the output from the LM BLD system created for various specific systems (Windows, Debian Linux, etc.) and toolsets. They consist of bash files (similar to Slackbuild scripts) that contain the commands to build the application or library from source code. They can also include patch files, makefiles, notes of what has been patched and other documentation (including dependencies).

I've just started the archiving process, so several programs and libraries I'm working on have not been added yet. Also, if there's interest, I can add binaries for people who do not want to build the applications from source code in order to try them out.

If You'd Like to Help

If you have suggestions for or are developing other lightweight, cross-platform Open Source command line, pdcurses, SDL or FLTK applications or libraries that I do not know about, please let me know. I tend to prefer BSD or MIT licensed options to GNU GPL or Affero GPL licenses. Many (but not all) of the applications I like are already listed on my Converting to Open Source page. If you know of additional patches you'd recommend adding, please contact me about them. If you're developing packages for a system and want to compare build notes, I would be very interested to hear from you.

If you'd like to help, you can contact me through the CppDesign mailing list or e-mail me.


To the main page.


Validate XHTML

The information on these pages is copyrighted by the author with all rights reserved. Reproduction of anything without the author's permission is in violation of copyright laws.
All original material is copyrighted:
(c) Copyright 2018 by Laura Michaels
All Rights Reserved
Last Update: 20180124