kruton/tinyfugue
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
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.