No description
  • C 50.2%
  • HTML 40.7%
  • HCL 6.9%
  • CMake 1.8%
  • Shell 0.2%
  • Other 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-20 14:51:22 -07:00
.github/workflows chore(deps): update actions/checkout action to v7.0.1 2026-07-20 14:51:22 -07:00
cmake feat(pcre2): migrate to PCRE2 2026-06-15 10:56:19 -07:00
debian feat(pcre2): migrate to PCRE2 2026-06-15 10:56:19 -07:00
help chore: fix compiler warnings 2026-06-16 09:12:06 -07:00
macos chore(cmake): add other platforms 2026-06-12 14:53:32 -07:00
packaging chore: package releases for fork 2026-07-09 00:02:41 -07:00
src Fix argument count for varargs functions 2026-07-19 17:02:23 -07:00
tests fix: move unit test definition 2026-07-19 17:10:07 -07:00
tf-lib chore: restore help sources 2026-06-13 14:23:00 -07:00
unix chore(cmake): add other platforms 2026-06-12 14:53:32 -07:00
win32 chore(cmake): add other platforms 2026-06-12 14:53:32 -07:00
.gitattributes feat: native packaging for distros 2026-06-13 18:03:52 -07:00
.gitignore chore(cmake): add other platforms 2026-06-12 14:53:32 -07:00
CHANGES Debian spelling patch 2021-06-23 17:11:33 -04:00
CMakeLists.txt chore: package releases for fork 2026-07-09 00:02:41 -07:00
CMakePresets.json chore(cmake): add other platforms 2026-06-12 14:53:32 -07:00
COPYING updated COPYING with FSF's new address 2021-06-23 22:01:18 -04:00
CREDITS Check in tf-50b8 2008-06-23 14:40:38 -05:00
Makefile chore(cmake): add other platforms 2026-06-12 14:53:32 -07:00
README feat(pcre2): migrate to PCRE2 2026-06-15 10:56:19 -07:00
renovate.json Add renovate.json 2026-06-12 15:05:08 -07:00

TinyFugue
=========

TinyFugue is a programmable MUD client for Unix-like systems, macOS, and
Cygwin. CMake is the authoritative build system; the top-level Makefile is a
convenience wrapper around CMake.

Requirements
------------

Required:

* CMake 3.20 or newer
* An ANSI C compiler and BSD-style select()
* PCRE 2 (8-bit)

Optional dependencies are ICU for Unicode support, OpenSSL or the GnuTLS
OpenSSL compatibility layer for TLS, a termcap-compatible library, and zlib
for MCCP.

Build and test
--------------

The convenience workflow is:

    make
    make test
    ./build/tf -L./build/tf-lib

Pass CMake settings through CMAKE_ARGS:

    make CMAKE_ARGS="-DTF_TLS=OFF -DTF_WIDECHAR=OFF"

The direct CMake workflow is:

    cmake -S . -B build -DBUILD_TESTING=ON
    cmake --build build
    ctest --test-dir build --output-on-failure

Presets are available for `default`, `debug`, `full`, `minimal`, and
`protocols` configurations:

    cmake --preset full
    cmake --build --preset full
    ctest --preset full

Run the Linux GitHub Actions matrix locally with Docker and
[act](https://github.com/nektos/act):

    make ci-local

Use `ACT_ARGS` to select one matrix entry or pass other `act` options:

    make ci-local ACT_ARGS="--matrix name:minimal"

Install
-------

    make install PREFIX=/desired/prefix

or:

    cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/desired/prefix
    cmake --build build
    cmake --install build

Packaging tools may use `DESTDIR` with the install command. The executable,
macro library, generated help index, compatibility links, change log, and man
page are installed.

Native packages
---------------

Package definitions for Debian/Ubuntu, Fedora/RHEL, Homebrew, FreeBSD, and
Cygwin are maintained in `debian/` and `packaging/`. See
`packaging/README.md` for build commands, source archive handling, and release
updates. The package workflow builds and tests each native artifact.

Configuration
-------------

`TF_WIDECHAR`, `TF_TLS`, `TF_TERMCAP`, and `TF_ZLIB` accept `AUTO`, `ON`, or
`OFF`. `AUTO` enables a feature when its dependency is available, `ON`
requires it, and `OFF` disables it.

Other notable switches include `TF_INET6`, `TF_GETADDRINFO`, `TF_HISTORY`,
`TF_PROCESS`, `TF_FLOAT`, `TF_256COLORS`, `TF_ATCP`, `TF_GMCP`,
`TF_OPTION102`, `TF_VERSIONED`, and `TF_INSTALL_SYMLINK`. Use
`cmake -S . -B build -LH` for the complete cache option list.

Runtime
-------

If the installed macro library is moved, set `TFLIBDIR` or use `tf -L/path`.
Public installations can restrict shell, file, and world operations through
commands in `local.tf`; see `/help restrict`.

TinyFugue is distributed under the GNU General Public License version 2 or
later. See COPYING.