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. I've included a copy of the source code for each project to use with the build scripts and patches. If there's interest, I'll include executable programs as well. I'll be uploading the executables and libraries as tarballs with the txz extension. If the tarball has 1w32 in the name, it's built for Windows using Win32. 1l32 indicates programs or libraries built for Linux. 1a64 indicates an AIX 64 bit build. 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.

bard

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. May possibly port to Android.

lm bld filesbash build scripts

bzip2

Command line compression/decompression utilities and libraries.

Patches: Made modifications to makefile.

lmbld and bash files - bzip2.ziptarball - bzip2-1.0.8-i686-1w32.txzoriginal source - bzip2-1.0.8.tar.gz

cdetect

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: Adding support to return compiler triple information. Adding better support for cross-compiling (including Android builds). Adding some support for checking large files.

lm bld filesbash build scripts

diffh

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.

FLTK

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. Added a subset of Oxy. 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.

gzip

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

Patches: Added support for some other types of decompression.

libintl

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.

libz

Command line compression/decompression utilities and libraries.

Unofficial fork of zlib. Includes forks of contrib library libminizip and the minizip and miniunzip programs.

Patches: Build is done with CDetect and generated makefile instead of using several makefiles to support multiple platforms. Some code changes added to help with portability. Added a few modifications used when building for Android.

lmbld and bash files - libz.ziptarball - libz-1.2.11-i686-1w32.txzoriginal source - zlib-1.2.11.tar.xz

patch

Version of patch used by BSD systems.

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

pdcurses

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. Add Android support.

lm bld filesbash build scripts

libmenu

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.

libform

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.

pdftxt

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. Latest version of pdftxt I'm working on has changes for three different mupdf APIs. I also now have a stable mupdf 1.1 version with GPL 3 license plus my own patches for features I wanted that aren't part of the original source code including svg support using nanosvg.

lm bld filesbash build scripts

picaxo

Graphics image viewer.

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

To do: Improve SDL 2.x support when window changes size. Fix sandstorm effect for SDL 2.x.

lm bld filesbash build scripts

picogl

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. Possibly add functions to match GLFW API or EGL API. Improve texture mapping support. Just found out there's a bug in the color-scheme in the various versions of picogl and tinygl. Match colors to what OpenGL displays.

rendera

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

sdl2_ttf

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

sfontview

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

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 packages t4k-common_0.1.1-2_all.deb tuxmath_2.0.3-2_all.deb

unicodeview

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

xz

Command line compression/decompression utilities and libraries.

If you want to run the executable on Windows, you'll need the libintl dll. You can use the one at mingw.org or I've uploaded the source and binaries from the MinGW project to my archive as well as a backup.

To do: Use bsdgettext library instead of the libintl dll from the MinGW project at mingw.org. This should fix path issues related to libintl locating internationalized translation files.

lmbld and bash files - xz.ziptarball - xz-5.2.4-i686-1w32.txzoriginal source - xz-5.2.4.tar.bz2

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, 2022 by Laura Michaels
All Rights Reserved
Last Update: 20220109