diff --git a/games/CWR-CE/Makefile b/games/CWR-CE/Makefile new file mode 100644 index 000000000000..614406cd3e5c --- /dev/null +++ b/games/CWR-CE/Makefile @@ -0,0 +1,79 @@ +PORTNAME= CWR-CE +DISTVERSIONPREFIX= v +DISTVERSION= 3.01 +CATEGORIES= games + +PATCH_SITES= https://github.com/ocochard/CWR-CE/compare/ +PATCHFILES= 9abbdf2769f3008d76c47ac0af219388ff0323dc..b6c9690f03cf0abb6af577db7294b00c30f4172c.patch:-p1 \ + b6c9690f03cf0abb6af577db7294b00c30f4172c..85dd554fc9e21312ee52d7f9eced6b171a6a892b.patch:-p1 + +MAINTAINER= olivier@FreeBSD.org +COMMENT= Arma: Cold War Assault - Remastered Community Edition +WWW= https://github.com/ofpisnotdead-com/CWR-CE + +LICENSE= GPLv3+ +LICENSE_FILE= ${WRKSRC}/LICENSE + +BUILD_DEPENDS= stb>0:devel/stb \ + ${LOCALBASE}/include/CLI/CLI.hpp:devel/cli11 \ + ${LOCALBASE}/include/vulkan/vulkan.h:graphics/vulkan-headers \ + ${LOCALBASE}/lib/cmake/Catch2/Catch2Config.cmake:devel/catch2 \ + ${LOCALBASE}/lib/cmake/glslang/glslang-config.cmake:graphics/glslang +LIB_DEPENDS= libcjson.so:devel/libcjson \ + libcurl.so:ftp/curl \ + libenkiTS.so:devel/enkits \ + libfmt.so:devel/libfmt \ + libfreetype.so:print/freetype2 \ + libimgui.so:x11-toolkits/imgui \ + libmimalloc.so:devel/mimalloc \ + libogg.so:audio/libogg \ + libopenal.so:audio/openal-soft \ + libopus.so:audio/opus \ + libSDL3.so:devel/sdl3 \ + libvulkan.so:graphics/vulkan-loader \ + libspdlog.so:devel/spdlog \ + libvorbis.so:audio/libvorbis \ + libzstd.so:archivers/zstd + +USES= cmake compiler:c++20-lang dos2unix gl localbase pkgconfig + +DOS2UNIX_REGEX= .*\.(c|h|cpp|hpp) +USE_GITHUB= yes +GH_ACCOUNT= ofpisnotdead-com +GH_PROJECT= CWR-CE +GH_TAGNAME= 9abbdf2769f3008d76c47ac0af219388ff0323dc +USE_GL= gl + +SUB_FILES= pkg-message + +# Disable vcpkg toolchain wiring — find_package(... CONFIG REQUIRED) picks up +# system libraries from ${LOCALBASE}/lib/cmake instead. +CMAKE_ARGS= -DVCPKG_MANIFEST_MODE=OFF \ + -DCMAKE_DISABLE_FIND_PACKAGE_VCPKG=ON + +CMAKE_OFF= POSEIDON_DISABLE_PCH POSEIDON_BUILD_FUZZERS + +PLIST_FILES= bin/PoseidonGame \ + bin/PoseidonGameDemo \ + bin/PoseidonServer \ + bin/PoseidonStudio \ + bin/PoseidonTetris \ + bin/PoseidonTools \ + bin/cwr-ce \ + bin/install-cwr-data + +do-install: + ${INSTALL_PROGRAM} \ + ${BUILD_WRKSRC}/apps/cwr/Game/PoseidonGame \ + ${BUILD_WRKSRC}/apps/cwr/GameDemo/PoseidonGameDemo \ + ${BUILD_WRKSRC}/apps/cwr/Server/PoseidonServer \ + ${BUILD_WRKSRC}/apps/tools/Studio/PoseidonStudio \ + ${BUILD_WRKSRC}/apps/tetris/Tetris/PoseidonTetris \ + ${BUILD_WRKSRC}/apps/tools/Tools/PoseidonTools \ + ${STAGEDIR}${PREFIX}/bin + ${INSTALL_SCRIPT} ${FILESDIR}/install-cwr-data.sh \ + ${STAGEDIR}${PREFIX}/bin/install-cwr-data + ${INSTALL_SCRIPT} ${FILESDIR}/cwr-ce.sh \ + ${STAGEDIR}${PREFIX}/bin/cwr-ce + +.include diff --git a/games/CWR-CE/distinfo b/games/CWR-CE/distinfo new file mode 100644 index 000000000000..670262e54b4a --- /dev/null +++ b/games/CWR-CE/distinfo @@ -0,0 +1,7 @@ +TIMESTAMP = 1782950316 +SHA256 (ofpisnotdead-com-CWR-CE-v3.01-9abbdf2769f3008d76c47ac0af219388ff0323dc_GH0.tar.gz) = 87df6297ed74993d56d3ceec9d90fb9287cebc58f47030a285a2eafb61c3ce22 +SIZE (ofpisnotdead-com-CWR-CE-v3.01-9abbdf2769f3008d76c47ac0af219388ff0323dc_GH0.tar.gz) = 4944610 +SHA256 (9abbdf2769f3008d76c47ac0af219388ff0323dc..b6c9690f03cf0abb6af577db7294b00c30f4172c.patch) = 8add6877aae7534967c2f609026cd4c4aa861a41f27d6cd68ec89c052e56d31d +SIZE (9abbdf2769f3008d76c47ac0af219388ff0323dc..b6c9690f03cf0abb6af577db7294b00c30f4172c.patch) = 23346 +SHA256 (b6c9690f03cf0abb6af577db7294b00c30f4172c..85dd554fc9e21312ee52d7f9eced6b171a6a892b.patch) = d87ab832d44d46ae761c8a920463a70b5e8369477a0eda327b4be6995b139e7f +SIZE (b6c9690f03cf0abb6af577db7294b00c30f4172c..85dd554fc9e21312ee52d7f9eced6b171a6a892b.patch) = 18184 diff --git a/games/CWR-CE/files/cwr-ce.sh b/games/CWR-CE/files/cwr-ce.sh new file mode 100644 index 000000000000..bb4b232a4a99 --- /dev/null +++ b/games/CWR-CE/files/cwr-ce.sh @@ -0,0 +1,41 @@ +#!/bin/sh +# cwr-ce — launcher for PoseidonGame (Arma: Cold War Assault Remastered CE). +# +# Resolves the data root (from $CWR_DATA or the default per-user path), +# verifies a minimal sentinel file exists, then execs PoseidonGame with +# -C and forwards any remaining arguments. + +set -u + +DATA_ROOT="${CWR_DATA:-${HOME}/.local/share/CWR/base}" +# The Steam Demo ships bin/CONFIG.BIN (uppercase); an overlay-installed layout +# may lowercase it. Accept either — the engine itself is case-insensitive. +if [ -f "${DATA_ROOT}/bin/config.bin" ] || [ -f "${DATA_ROOT}/bin/CONFIG.BIN" ]; then + : +else + cat >&2 </dta/ (lowercase) +# /addons/ (lowercase) +# /bin/ (lowercase, holds config.bin/resource.bin/stringtable.csv) +# /Campaigns/ (PascalCase) +# /Worlds/ /Missions/ /MPMissions/ +# /Templates/ /SPTemplates/ +# /fonts/ (cwr_*.ttf — only ships with the Remaster Demo) +# +# Per CWR-CE upstream: the binaries are not drop-in compatible with the original +# 2001 retail folder. The supported layout is "Remaster Demo as base + retail +# AddOns/DTA/Campaigns/Missions overlaid on top". +# +# Config merge (bin/CONFIG.BIN): +# The Steam Demo's bin/CONFIG.BIN is the *sole* engine config authority — no +# .pbo under dta/ contains a config.bin, they are pure asset archives. The +# demo config carries the CWR-CE remaster additions (CfgLandscapeSky, sky +# models, fonts, CfgLanguages) that a plain retail BIN/config.bin would +# regress, which is why the demo BIN is kept as base and the retail BIN is +# NOT overlaid wholesale. +# +# However, the demo config is a strict subset of the retail one: +# - CfgVehicles: retail defines ~110 classes the demo omits — Cobra/Mi24/ +# Mi17 (helicopters), A10 (jet), M1Abrams/T80 (tanks), Skoda/Cessna +# (civilians), the SoldierG* resistance roster, reammo boxes, targets, +# props, wrecks — everything retail campaigns and missions reference. +# - CfgVoice: retail defines Dan/Greg/John/Peter (the classic ARMA:CWA +# voice actors); the demo only ships Adam. CfgHQIdentities entries in +# the demo config still reference speaker="Dan"/"Greg", so any radio +# message crashes on class lookup without the merge. +# - CfgGroups: retail group compositions that place the missing vehicles. +# +# With --gog, this script performs a class-level *additive* merge via +# 'PoseidonTools config merge': base = demo CONFIG.BIN (kept verbatim), +# overlay = retail BIN/CONFIG.BIN (adds missing subclasses only, never +# overwrites the remaster-specific tweaks). Without this step the engine +# crashes the first time a retail mission references an unknown class. + +set -eu + +usage() +{ + cat >&2 < + +Installs the Steam "Arma: Cold War Assault Remastered Demo" zip into a data +root the engine can run from. The retail (GOG) game can additionally be +overlaid on top to enable the full islands and campaign. + +Arguments: + Path to the zipped Steam Demo install folder. + Optional if --gog is provided AND --dest already + holds a previous demo install. + +Options: + -g, --gog Path to setup_arma_cold_war_assault_*.exe (GOG retail + installer). Its AddOns/DTA/Campaigns/Missions/... are + overlaid on top of the demo base. Requires innoextract. + --dest Destination data root (default: \$HOME/.local/share/CWR/base). + --force Overwrite a non-empty destination. + --keep-temp Leave the unpacked staging directory in place. + -h, --help Show this help. + +Examples: + $0 ~/Arma\\ Cold\\ War\\ Assault\\ Demo.zip + $0 ~/demo.zip --gog ~/setup_arma_cold_war_assault_1.0_36421.exe + $0 --gog ~/setup.exe --force # overlay GOG onto an existing demo install + +Required tools: unzip (always), innoextract (only when --gog is used). + +How to produce from a Windows machine running Steam: + 1. In Steam, install "Arma: Cold War Assault Remastered Demo" (free, + app 4819000). + 2. Right-click the title in your Library -> Manage -> Browse local files. + That opens the install folder (e.g. + C:\\Program Files (x86)\\Steam\\steamapps\\common\\Arma Cold War Assault Demo). + 3. In Explorer, right-click that folder -> + "Send to" -> "Compressed (zipped) folder", + or "Compress to" -> "ZIP file" (Windows 11). + 4. Copy the resulting .zip to this machine (scp, USB stick, ...) and pass + its path to this script. +EOF + exit 1 +} + +DEST="${HOME}/.local/share/CWR/base" +FORCE=0 +KEEP_TEMP=0 +DEMO_ZIP= +GOG_EXE= + +while [ $# -gt 0 ]; do + case "$1" in + -g|--gog) [ $# -ge 2 ] || usage; GOG_EXE="$2"; shift 2 ;; + --dest) [ $# -ge 2 ] || usage; DEST="$2"; shift 2 ;; + --force) FORCE=1; shift ;; + --keep-temp) KEEP_TEMP=1; shift ;; + -h|--help) usage ;; + --) shift; break ;; + -*) echo "unknown option: $1" >&2; usage ;; + *) [ -z "$DEMO_ZIP" ] || usage; DEMO_ZIP="$1"; shift ;; + esac +done + +# Either the demo zip or a pre-existing dest+gog combination must be present. +if [ -z "$DEMO_ZIP" ] && [ -z "$GOG_EXE" ]; then + usage +fi +if [ -n "$DEMO_ZIP" ] && [ ! -f "$DEMO_ZIP" ]; then + echo "demo zip not found: $DEMO_ZIP" >&2; exit 1 +fi +if [ -n "$GOG_EXE" ] && [ ! -f "$GOG_EXE" ]; then + echo "GOG installer not found: $GOG_EXE" >&2; exit 1 +fi + +# Detect the host package manager once and remember the install command. +# pkg(8) on FreeBSD is checked first because that is the primary platform for +# this script; the others are best-effort for Linux distros that happen to +# ship the same tools. +detect_pkg_install() +{ + if command -v pkg >/dev/null 2>&1; then + echo "sudo pkg install -y"; return + fi + if command -v apt-get >/dev/null 2>&1; then + echo "sudo apt-get install -y"; return + fi + if command -v dnf >/dev/null 2>&1; then + echo "sudo dnf install -y"; return + fi + if command -v pacman >/dev/null 2>&1; then + echo "sudo pacman -S --noconfirm"; return + fi + return 1 +} + +# Ensure $1 is on PATH. If missing, offer to install it via the host package +# manager (same package name, which holds for unzip/innoextract on all targets +# above). Aborts the script if the user declines or the install fails. +require_tool() +{ + name="$1" + command -v "$name" >/dev/null 2>&1 && return 0 + + install_cmd="$(detect_pkg_install || true)" + if [ -z "$install_cmd" ]; then + echo "'$name' is required but not found, and no supported package manager" >&2 + echo "was detected. Install '$name' manually and rerun." >&2 + exit 1 + fi + + printf "'%s' is required but missing. Install it with '%s %s'? [Y/n] " \ + "$name" "$install_cmd" "$name" + # Read from the controlling terminal so piped invocations still prompt. + if [ -r /dev/tty ]; then + read -r reply &2; exit 1 ;; + esac + + # shellcheck disable=SC2086 + $install_cmd "$name" || { + echo "package install failed; aborting." >&2; exit 1; } + command -v "$name" >/dev/null 2>&1 || { + echo "'$name' still not on PATH after install; aborting." >&2; exit 1; } +} + +# Tool checks scoped to what we actually need this invocation. +if [ -n "$DEMO_ZIP" ]; then + require_tool unzip +fi +if [ -n "$GOG_EXE" ]; then + require_tool innoextract +fi + +# Non-empty dest is only acceptable when we're explicitly overlaying GOG onto +# an existing demo, or the caller passed --force. +if [ "$FORCE" -ne 1 ] && [ -d "$DEST" ] && [ -n "$(ls -A "$DEST" 2>/dev/null || true)" ]; then + if [ -n "$DEMO_ZIP" ]; then + echo "destination is not empty: $DEST (use --force to overwrite)" >&2 + exit 1 + fi + # GOG-only run with existing dest: treat as an overlay; require the demo + # base to be present, otherwise the engine would still fail on fonts/. + if [ ! -d "$DEST/fonts" ] || [ ! -d "$DEST/bin" ]; then + echo "destination exists but does not look like a demo install: $DEST" >&2 + echo "(missing fonts/ or bin/ — install the demo first, or pass )" >&2 + exit 1 + fi +fi +mkdir -p "$DEST" + +TMP="$(mktemp -d -t cwr-data.XXXXXX)" +cleanup() +{ + if [ "$KEEP_TEMP" -ne 1 ]; then + rm -rf "$TMP" + else + echo "staging left at: $TMP" + fi +} +trap cleanup EXIT INT TERM + +# Locate a directory under $1 case-insensitively (handles both GOG's "DTA"/ +# "AddOns" and the demo's "DTA"/"AddOns" without coupling to either). +locate_dir() +{ + base="$1"; needle="$2" + [ -d "$base" ] || return 1 + lc_needle="$(printf '%s' "$needle" | tr '[:upper:]' '[:lower:]')" + for entry in "$base"/*; do + [ -d "$entry" ] || continue + lc_name="$(printf '%s' "$(basename "$entry")" | tr '[:upper:]' '[:lower:]')" + if [ "$lc_name" = "$lc_needle" ]; then + printf '%s\n' "$entry" + return 0 + fi + done + return 1 +} + +# Copy a source tree on top of $DEST. Destination name fixed by the caller so +# we can lowercase DTA/AddOns/BIN regardless of source casing. +install_dir() +{ + src="$1"; dest_name="$2" + [ -d "$src" ] || return 0 + echo " -> $dest_name/" + mkdir -p "$DEST/$dest_name" + cp -R "$src/." "$DEST/$dest_name/" +} + +# --------------------------------------------------------------------------- +# Phase 1: Steam Demo (base) +# --------------------------------------------------------------------------- +if [ -n "$DEMO_ZIP" ]; then + echo "==> unpacking demo: $(basename "$DEMO_ZIP")" + DEMO_STAGE="$TMP/demo" + mkdir -p "$DEMO_STAGE" + unzip -q "$DEMO_ZIP" -d "$DEMO_STAGE" + + # Steam-shipped zips usually wrap everything in a single top-level folder + # ("Arma Cold War Assault Demo/"). If there is exactly one such directory, + # descend into it. Otherwise assume the zip was made from inside the dir. + DEMO_SRC="$DEMO_STAGE" + entries=0 + only_dir= + for e in "$DEMO_STAGE"/*; do + entries=$((entries + 1)) + [ -d "$e" ] && only_dir="$e" + done + if [ "$entries" -eq 1 ] && [ -n "$only_dir" ]; then + DEMO_SRC="$only_dir" + fi + + # Lowercase the three engine-literal dirs. + for pair in "DTA dta" "AddOns addons" "BIN bin"; do + src_name="${pair% *}"; dst_name="${pair#* }" + src="$(locate_dir "$DEMO_SRC" "$src_name" || true)" + if [ -n "$src" ]; then + install_dir "$src" "$dst_name" + fi + done + + # Strip Windows-only payload from bin/ if present. + find "$DEST/bin" -type f \( -iname '*.dll' -o -iname '*.exe' \) -delete 2>/dev/null || true + + # Preserve every other top-level directory verbatim (engine reads each by + # exact name). Covers Campaigns/, Worlds/, Missions/, MPMissions/, + # Templates/, SPTemplates/, fonts/, demo/, dtaExt/, Music/, … + for entry in "$DEMO_SRC"/*; do + [ -d "$entry" ] || continue + name="$(basename "$entry")" + case "$(printf '%s' "$name" | tr '[:upper:]' '[:lower:]')" in + dta|addons|bin) continue ;; + esac + install_dir "$entry" "$name" + done + + # Loose top-level data files (config.cfg-style metadata). Drop Windows + # binaries and license blurbs. + for f in "$DEMO_SRC"/*; do + [ -f "$f" ] || continue + name="$(basename "$f")" + case "$name" in + *.exe|*.dll|*.url|*.ico|*.pdf|*.txt) continue ;; + PoseidonGameDemo|PoseidonGameDemo.*) continue ;; + esac + echo " -> $name" + cp "$f" "$DEST/$name" + done +fi + +# --------------------------------------------------------------------------- +# Phase 2: GOG retail overlay (optional) +# --------------------------------------------------------------------------- +# Per CWR-CE issue #29 the supported merge is: demo as base + retail's +# AddOns/DTA/Campaigns/Missions/Worlds/Templates overlaid. The retail BIN/ is +# NOT copied wholesale — it would replace CWR-CE's remaster-aware config +# (fonts, sky models, CfgLandscapeSky) — but its class definitions ARE merged +# class-by-class into the demo config, see the header comment and Phase 3. +if [ -n "$GOG_EXE" ]; then + echo "==> extracting GOG installer: $(basename "$GOG_EXE")" + GOG_STAGE="$TMP/gog" + mkdir -p "$GOG_STAGE" + innoextract --silent --gog -d "$GOG_STAGE" "$GOG_EXE" + + # Most GOG bundles drop payload at the extraction root; some create app/ + # holding only GOG metadata. Pick whichever actually has DTA/AddOns/BIN. + GOG_SRC= + for candidate in "$GOG_STAGE" "$GOG_STAGE/app"; do + for d in DTA dta AddOns addons; do + if [ -d "$candidate/$d" ]; then + GOG_SRC="$candidate"; break 2 + fi + done + done + [ -n "$GOG_SRC" ] || { echo "no game data found under $GOG_STAGE" >&2; exit 2; } + + echo "==> overlaying retail content onto $DEST" + # Lowercased dirs (overlay merges file-by-file via cp -R). + for pair in "DTA dta" "AddOns addons"; do + src_name="${pair% *}"; dst_name="${pair#* }" + src="$(locate_dir "$GOG_SRC" "$src_name" || true)" + if [ -n "$src" ]; then + install_dir "$src" "$dst_name" + fi + done + + # PascalCase content dirs — engine reads literal names. NOT BIN/ — that + # dir is handled by the config-merge phase below, not a plain cp. + for d in Campaigns Worlds Missions MPMissions Templates SPTemplates; do + src="$(locate_dir "$GOG_SRC" "$d" || true)" + [ -n "$src" ] || continue + name="$(basename "$src")" + install_dir "$src" "$name" + done + + # ----------------------------------------------------------------------- + # Phase 3: merge retail CfgVehicles/CfgVoice/CfgGroups into demo CONFIG.BIN + # ----------------------------------------------------------------------- + # 'PoseidonTools config merge base overlay -o out' walks the overlay + # class tree and *adds* any subclass the base lacks, without touching + # entries the base already defines. That gives us: + # - all retail vehicles, weapons, ammo the campaigns/missions need, + # - the Dan/Greg/John/Peter CfgVoice classes referenced by + # CfgHQIdentities (radio messages crash without them), + # while preserving CWR-CE's remaster-only additions (CfgLandscapeSky, + # CfgLanguages, remaster sky/font entries) that a wholesale copy of the + # retail config would silently drop. + GOG_BIN_SRC="$(locate_dir "$GOG_SRC" "BIN" || true)" + if [ -n "$GOG_BIN_SRC" ] && [ -f "$GOG_BIN_SRC/CONFIG.BIN" ] \ + && [ -f "$DEST/bin/CONFIG.BIN" ] \ + && command -v PoseidonTools >/dev/null 2>&1; then + echo "==> merging retail class definitions into demo CONFIG.BIN" + cp "$DEST/bin/CONFIG.BIN" "$DEST/bin/CONFIG.BIN.demo-orig" + PoseidonTools config merge \ + "$DEST/bin/CONFIG.BIN.demo-orig" \ + "$GOG_BIN_SRC/CONFIG.BIN" \ + -o "$DEST/bin/CONFIG.BIN" + elif [ -n "$GOG_BIN_SRC" ] && [ -f "$GOG_BIN_SRC/CONFIG.BIN" ]; then + echo "WARNING: PoseidonTools not on PATH; skipping config merge." >&2 + echo " Retail missions will crash on missing vehicle/voice classes" >&2 + echo " until you run:" >&2 + echo " PoseidonTools config merge $DEST/bin/CONFIG.BIN \\" >&2 + echo " $GOG_BIN_SRC/CONFIG.BIN -o $DEST/bin/CONFIG.BIN.new" >&2 + fi +fi + +cat < to install elsewhere, or --help for the full usage. + +Then launch the game with: + + cwr-ce + +The launcher resolves the data root and passes it to PoseidonGame. +If you installed the data elsewhere, set $CWR_DATA before launching: + + CWR_DATA=/path/to/data-root cwr-ce + +Any extra arguments are forwarded to PoseidonGame (see --help). + +EOM +} +] diff --git a/games/CWR-CE/pkg-descr b/games/CWR-CE/pkg-descr new file mode 100644 index 000000000000..21da95fb12b0 --- /dev/null +++ b/games/CWR-CE/pkg-descr @@ -0,0 +1,15 @@ +Arma: Cold War Assault - Remastered (codename Poseidon) is the engine +and game source code first released in 2001 as Operation Flashpoint: +Cold War Crisis. It is the codebase that launched Bohemia Interactive +and began the technology lineage later grown into Real Virtuality, Arma, +and Enfusion. The code has been modernized to C++20, built with CMake +and Clang. + +Game assets (models, textures, sounds, missions, voices) are NOT +included with this port and are NOT GPL. They ship separately under the +Arma Public License Share Alike (APL-SA). +A free Demo is available on Steam: +https://store.steampowered.com/app/4819000 +And this game was tested with the full GOG version game assets too. + +Without game data the binaries do nothing useful at runtime. diff --git a/games/Makefile b/games/Makefile index 4e6bf3dd3931..79d0c15f6a12 100644 --- a/games/Makefile +++ b/games/Makefile @@ -1,1172 +1,1173 @@ COMMENT = Games and related software SUBDIR += 0ad SUBDIR += 0verkill SUBDIR += 2048 SUBDIR += 3dc SUBDIR += 3dpong SUBDIR += 3omns SUBDIR += 54321 SUBDIR += 7kaa SUBDIR += 90secondportraits SUBDIR += Bugdom SUBDIR += Bugdom2 + SUBDIR += CWR-CE SUBDIR += CaribbeanStud SUBDIR += DDNet SUBDIR += Doom64EX SUBDIR += HeroesOfMightAndMagic SUBDIR += KnightCap SUBDIR += LibreMines SUBDIR += NBlood SUBDIR += Nanosaur SUBDIR += OpenLara SUBDIR += OpenTomb SUBDIR += SRB2 SUBDIR += SpaceCadetPinball SUBDIR += SpaceCadetPinball-devel SUBDIR += abbayedesmorts SUBDIR += abe SUBDIR += abuse_sdl SUBDIR += ace-of-penguins SUBDIR += adom SUBDIR += aestats SUBDIR += affenspiel SUBDIR += afternoonstalker SUBDIR += agame SUBDIR += ags SUBDIR += aisleriot SUBDIR += aklabeth SUBDIR += alephone SUBDIR += alephone-data SUBDIR += alephone-scenarios SUBDIR += alex4 SUBDIR += alienarena SUBDIR += alienarena-data SUBDIR += alienblaster SUBDIR += alienwave SUBDIR += amnesia-tdd SUBDIR += amoebax SUBDIR += an SUBDIR += angband SUBDIR += anki SUBDIR += antipolix SUBDIR += aop SUBDIR += apoolGL SUBDIR += apricots SUBDIR += aquaria SUBDIR += armagetronad SUBDIR += arx-libertatis SUBDIR += ascii-invaders SUBDIR += asciiquarium SUBDIR += assaultcube SUBDIR += asteroids3d SUBDIR += astromenace SUBDIR += asylum SUBDIR += atanks SUBDIR += atomix SUBDIR += atr3d SUBDIR += atris SUBDIR += atris-sounds SUBDIR += augustus SUBDIR += auralquiz SUBDIR += automuteus SUBDIR += avanor SUBDIR += avoision SUBDIR += avp SUBDIR += awale SUBDIR += awele SUBDIR += ballerburg SUBDIR += banihstypos SUBDIR += barony SUBDIR += barrage SUBDIR += bass SUBDIR += bastet SUBDIR += battalion SUBDIR += battletanks SUBDIR += belooted SUBDIR += beret SUBDIR += billardgl SUBDIR += biloba SUBDIR += biniax2 SUBDIR += biorythm SUBDIR += bitefusion SUBDIR += black-box SUBDIR += black-hole-solver SUBDIR += blackjackclient SUBDIR += blackshadeselite SUBDIR += blinken SUBDIR += blinkensisters SUBDIR += blobby SUBDIR += blobwars SUBDIR += block SUBDIR += blockattack SUBDIR += blockout SUBDIR += blockrage SUBDIR += blokish SUBDIR += bloodfrontier SUBDIR += bluemoon SUBDIR += blues SUBDIR += bomber SUBDIR += bomberclone SUBDIR += bombherman SUBDIR += bomns SUBDIR += bovo SUBDIR += braincurses SUBDIR += brainparty SUBDIR += brainworkshop SUBDIR += brickout SUBDIR += brickshooter SUBDIR += brikx SUBDIR += briquolo SUBDIR += brogue SUBDIR += brumbrumrally SUBDIR += brutalchess SUBDIR += bs SUBDIR += bsdgames SUBDIR += bsdtris SUBDIR += bsp SUBDIR += bstone SUBDIR += bubble-chains SUBDIR += bucklespring SUBDIR += bugsquish SUBDIR += bugsx SUBDIR += bumprace SUBDIR += burgerspace SUBDIR += burr-tools SUBDIR += bzflag SUBDIR += bzflag-server SUBDIR += cake SUBDIR += candycrisis SUBDIR += caph SUBDIR += cardpics SUBDIR += cataclysm-dda SUBDIR += catesc SUBDIR += cave9 SUBDIR += cavezofphear SUBDIR += cdogs-sdl SUBDIR += chapping SUBDIR += chessx SUBDIR += chocolate-doom SUBDIR += chroma SUBDIR += chromium-bsu SUBDIR += chromono SUBDIR += circuslinux SUBDIR += cmatrix SUBDIR += coffeebreak SUBDIR += colobot SUBDIR += colorcode SUBDIR += columns SUBDIR += concentration SUBDIR += connectagram SUBDIR += connectfive SUBDIR += construo SUBDIR += corsix-th SUBDIR += cosmosmash SUBDIR += cowsay SUBDIR += crack-attack SUBDIR += craft SUBDIR += crafty SUBDIR += crashtest SUBDIR += cretan-hubris SUBDIR += crimson SUBDIR += crispy-doom SUBDIR += criticalmass SUBDIR += crossfire-client SUBDIR += crrcsim SUBDIR += cryptoslam SUBDIR += csmash SUBDIR += ctris SUBDIR += cube SUBDIR += cursive SUBDIR += cutemaze SUBDIR += cuyo SUBDIR += cxxmatrix SUBDIR += d2x SUBDIR += dMagnetic SUBDIR += dangen SUBDIR += darkplaces SUBDIR += defendguin SUBDIR += dethrace SUBDIR += devd-controller-rules SUBDIR += devilutionX SUBDIR += dhewm3 SUBDIR += diaspora SUBDIR += digger-vgl SUBDIR += divide-and-succeed SUBDIR += dmjava SUBDIR += dobutsu SUBDIR += dodgindiamond2 SUBDIR += domination SUBDIR += domino-chain SUBDIR += dontspace SUBDIR += doom SUBDIR += doom-data SUBDIR += doom-freedoom SUBDIR += doom-hacx SUBDIR += doom-hr SUBDIR += doom-hr2 SUBDIR += doom-wolfendoom SUBDIR += doomlegacy SUBDIR += doomsday SUBDIR += dreamchess SUBDIR += duel SUBDIR += dunelegacy SUBDIR += dungeon SUBDIR += dungeoncrawl SUBDIR += dustrac SUBDIR += dxx-rebirth SUBDIR += easyrpg-player SUBDIR += eboard SUBDIR += ecwolf SUBDIR += edge SUBDIR += editss SUBDIR += eduke32 SUBDIR += egl SUBDIR += egoboo SUBDIR += eif SUBDIR += eights SUBDIR += einstein SUBDIR += eksanos SUBDIR += el SUBDIR += el-data SUBDIR += emptyepsilon SUBDIR += endgame-singularity SUBDIR += endgame-singularity-music SUBDIR += endless-sky SUBDIR += endless-sky-high-dpi SUBDIR += enigma SUBDIR += ensemblist SUBDIR += entombed SUBDIR += enygma SUBDIR += epiphany-game SUBDIR += etlegacy SUBDIR += etracer SUBDIR += euchre SUBDIR += eureka SUBDIR += evilfinder SUBDIR += evq3 SUBDIR += excido SUBDIR += exhaust SUBDIR += exhaust-doc SUBDIR += exhaust-ma SUBDIR += exult SUBDIR += ezquake SUBDIR += f1spirit-remake SUBDIR += fairymax SUBDIR += fakesteak SUBDIR += falconseye SUBDIR += fargoal SUBDIR += fbg2 SUBDIR += fheroes2 SUBDIR += fightorperish SUBDIR += fillets-ng SUBDIR += filters SUBDIR += fishsupper SUBDIR += five-or-more SUBDIR += fkiss SUBDIR += flare-engine SUBDIR += flare-game SUBDIR += flightgear SUBDIR += flightgear-aircraft SUBDIR += flightgear-data SUBDIR += flobopuyo SUBDIR += flyhard SUBDIR += flying SUBDIR += fmars SUBDIR += foobillard SUBDIR += formido SUBDIR += fortunate SUBDIR += fotaq SUBDIR += four-in-a-row SUBDIR += freebee SUBDIR += freeblocks SUBDIR += freecell-solver SUBDIR += freeciv SUBDIR += freeciv-nox11 SUBDIR += freeciv21 SUBDIR += freecol SUBDIR += freedink SUBDIR += freedink-data SUBDIR += freedink-dfarc SUBDIR += freedink-engine SUBDIR += freedoko SUBDIR += freedroid SUBDIR += freedroidrpg SUBDIR += freeorion SUBDIR += freesweep SUBDIR += freesynd SUBDIR += freetennis SUBDIR += fretsonfire SUBDIR += fretsonfire-data SUBDIR += frikqcc SUBDIR += frobtads SUBDIR += frogatto SUBDIR += frotz SUBDIR += frozen-bubble SUBDIR += fs2open SUBDIR += funnyboat SUBDIR += galaxis SUBDIR += garden-of-coloured-lights SUBDIR += gargoyle SUBDIR += gbrainy SUBDIR += gcompris-qt SUBDIR += gemdropx SUBDIR += gemrb SUBDIR += genact SUBDIR += gigalomania SUBDIR += gillo SUBDIR += gl-117 SUBDIR += glaxium SUBDIR += glbsp SUBDIR += glest SUBDIR += glest-data SUBDIR += glightoff SUBDIR += glmaze SUBDIR += glob2 SUBDIR += glsfcave SUBDIR += gltron SUBDIR += gmastermind SUBDIR += gmines SUBDIR += gnome-2048 SUBDIR += gnome-chess SUBDIR += gnome-games SUBDIR += gnome-klotski SUBDIR += gnome-mahjongg SUBDIR += gnome-mines SUBDIR += gnome-nibbles SUBDIR += gnome-robots SUBDIR += gnome-sudoku SUBDIR += gnome-tetravex SUBDIR += gnubg SUBDIR += gnubik SUBDIR += gnuchess SUBDIR += gnudoku SUBDIR += gnugo SUBDIR += gnujump SUBDIR += gnurobbo SUBDIR += gnurobots SUBDIR += gnushogi SUBDIR += gnustep-ladder SUBDIR += gnustep-sudoku SUBDIR += gobang SUBDIR += gogrepo SUBDIR += gogui SUBDIR += golddig SUBDIR += golly SUBDIR += gomoku SUBDIR += goonies SUBDIR += gottet SUBDIR += gracer SUBDIR += granatier SUBDIR += greed SUBDIR += griels-quest SUBDIR += grubik SUBDIR += gshisen SUBDIR += gti SUBDIR += gtkatlantic SUBDIR += gtkballs SUBDIR += gtkevemon SUBDIR += gtkradiant SUBDIR += gtypist SUBDIR += gunfudeadlands SUBDIR += gzdoom SUBDIR += hangman SUBDIR += hedgewars SUBDIR += help_hannahs_horse SUBDIR += heretic SUBDIR += heroes SUBDIR += hex-a-hop SUBDIR += hexalate SUBDIR += hexxagon SUBDIR += highmoon SUBDIR += hinversi SUBDIR += hitori SUBDIR += hivetui SUBDIR += hllib SUBDIR += holotz-castle SUBDIR += hoverboard-sdl SUBDIR += hs-scroll SUBDIR += hypatia_engine SUBDIR += hyperrogue SUBDIR += icbm3d SUBDIR += icebreaker SUBDIR += iceicepenguin SUBDIR += impossible_mission_puzzle SUBDIR += inform7 SUBDIR += instead SUBDIR += interlogic SUBDIR += ioquake3 SUBDIR += ioquake3-server SUBDIR += iortcw SUBDIR += iqpuzzle SUBDIR += irrlamb SUBDIR += ishido SUBDIR += ivan SUBDIR += jaggedalliance2 SUBDIR += java-games-suite SUBDIR += jchessboard SUBDIR += jfk SUBDIR += jfsw SUBDIR += jigsaw SUBDIR += jigzo SUBDIR += jin SUBDIR += jinput SUBDIR += joequake SUBDIR += jtans SUBDIR += julius SUBDIR += jumpnbump SUBDIR += jumpy SUBDIR += jutils SUBDIR += jvgs SUBDIR += jzip SUBDIR += kajongg SUBDIR += kanagram SUBDIR += kanatest SUBDIR += kapman SUBDIR += kartofel SUBDIR += katomic SUBDIR += kblackbox SUBDIR += kblocks SUBDIR += kbounce SUBDIR += kbreakout SUBDIR += kdegames SUBDIR += kdiamond SUBDIR += kevedit SUBDIR += kfourinline SUBDIR += kgoldrunner SUBDIR += khangman SUBDIR += kigo SUBDIR += killbots SUBDIR += kiriki SUBDIR += kjumpingcube SUBDIR += klavaro SUBDIR += klickety SUBDIR += klines SUBDIR += klondike SUBDIR += kmahjongg SUBDIR += kmines SUBDIR += knavalbattle SUBDIR += knetwalk SUBDIR += knights SUBDIR += kobodeluxe SUBDIR += kodi-addon-game.libretro SUBDIR += kodi-addon-game.libretro.beetle-psx SUBDIR += kodi-addon-game.libretro.fceumm SUBDIR += kodi-addon-game.libretro.genplus SUBDIR += kodi-addon-game.libretro.pcsx-rearmed SUBDIR += kodi-addon-game.libretro.picodrive SUBDIR += kolf SUBDIR += kollision SUBDIR += konquest SUBDIR += kpat SUBDIR += krank SUBDIR += kreversi SUBDIR += kshisen SUBDIR += ksirk SUBDIR += ksnakeduel SUBDIR += kspaceduel SUBDIR += ksquares SUBDIR += ksudoku SUBDIR += ktuberling SUBDIR += ktx SUBDIR += kubrick SUBDIR += kuklomenos SUBDIR += ladder SUBDIR += lander SUBDIR += lapispuzzle SUBDIR += lbreakout SUBDIR += lbreakout2 SUBDIR += lbreakouthd SUBDIR += ldmud SUBDIR += leela-zero SUBDIR += legend-of-edgar SUBDIR += legendary SUBDIR += legesmotus SUBDIR += lexter SUBDIR += lgeneral SUBDIR += lgogdownloader SUBDIR += libgnome-games-support SUBDIR += libgnome-games-support2 SUBDIR += libkdegames SUBDIR += libkmahjongg SUBDIR += liblcf SUBDIR += libmaitretarot SUBDIR += libmanette SUBDIR += libmt_client SUBDIR += libretro SUBDIR += libretro-2048 SUBDIR += libretro-a5200 SUBDIR += libretro-beetle_psx SUBDIR += libretro-bluemsx SUBDIR += libretro-boom3 SUBDIR += libretro-cap32 SUBDIR += libretro-core-info SUBDIR += libretro-desmume SUBDIR += libretro-desmume2015 SUBDIR += libretro-dosbox SUBDIR += libretro-emux SUBDIR += libretro-fbalpha2012 SUBDIR += libretro-fbneo SUBDIR += libretro-fceumm SUBDIR += libretro-fmsx SUBDIR += libretro-freeintv SUBDIR += libretro-fuse SUBDIR += libretro-gambatte SUBDIR += libretro-genesis_plus_gx SUBDIR += libretro-gpsp SUBDIR += libretro-gw SUBDIR += libretro-handy SUBDIR += libretro-hatari SUBDIR += libretro-mame2000 SUBDIR += libretro-mame2003 SUBDIR += libretro-mame2003_plus SUBDIR += libretro-mednafen_bsnes SUBDIR += libretro-mednafen_gba SUBDIR += libretro-mednafen_lynx SUBDIR += libretro-mednafen_ngp SUBDIR += libretro-mednafen_pce SUBDIR += libretro-mednafen_pce_fast SUBDIR += libretro-mednafen_pcfx SUBDIR += libretro-mednafen_saturn SUBDIR += libretro-mednafen_supergrafx SUBDIR += libretro-mednafen_vb SUBDIR += libretro-mednafen_wswan SUBDIR += libretro-melonds SUBDIR += libretro-mgba SUBDIR += libretro-mu SUBDIR += libretro-nestopia SUBDIR += libretro-nxengine SUBDIR += libretro-o2em SUBDIR += libretro-opera SUBDIR += libretro-parallel_n64 SUBDIR += libretro-pcsx_rearmed SUBDIR += libretro-picodrive SUBDIR += libretro-play SUBDIR += libretro-prboom SUBDIR += libretro-prosystem SUBDIR += libretro-puae SUBDIR += libretro-px68k SUBDIR += libretro-quicknes SUBDIR += libretro-scummvm SUBDIR += libretro-shaders-glsl SUBDIR += libretro-shaders-slang SUBDIR += libretro-snes9x SUBDIR += libretro-snes9x2005 SUBDIR += libretro-snes9x2010 SUBDIR += libretro-stella2014 SUBDIR += libretro-tgbdual SUBDIR += libretro-tyrquake SUBDIR += libretro-vba_next SUBDIR += libretro-vecx SUBDIR += libretro-virtualjaguar SUBDIR += libretro-xrick SUBDIR += libretro-yabause SUBDIR += libshhcards SUBDIR += libtmcg SUBDIR += lightsoff SUBDIR += lincity SUBDIR += lincity-ng SUBDIR += linux-doom3 SUBDIR += linux-doom3-demo SUBDIR += linux-dwarffortress SUBDIR += linux-enemyterritory SUBDIR += linux-enemyterritory-jaymod SUBDIR += linux-enemyterritory-shrub SUBDIR += linux-enemyterritory-tce SUBDIR += linux-etqw-demo-server SUBDIR += linux-etqw-server SUBDIR += linux-nerogame SUBDIR += linux-nwnclient SUBDIR += linux-quake3 SUBDIR += linux-quake4 SUBDIR += linux-quake4-demo SUBDIR += linux-ssamtfe SUBDIR += linux-ssamtse SUBDIR += linux-steam-utils SUBDIR += linux-unrealgold SUBDIR += linux-ut SUBDIR += linux-virtual-jay-peak SUBDIR += lizzie SUBDIR += lm-solve SUBDIR += lmarbles SUBDIR += lmpc SUBDIR += loderunner-ng SUBDIR += lolcat SUBDIR += lordsawar SUBDIR += lpairs SUBDIR += lskat SUBDIR += ltris SUBDIR += luanti SUBDIR += lugaru SUBDIR += luola SUBDIR += lwjgl SUBDIR += lwjgl3 SUBDIR += macopix SUBDIR += madbomber SUBDIR += maelstrom SUBDIR += magiccube4d SUBDIR += mahjong SUBDIR += maitretarot SUBDIR += mancala SUBDIR += mangband SUBDIR += marblemarcher SUBDIR += mari0 SUBDIR += mastermind SUBDIR += masterserver SUBDIR += maxr SUBDIR += meandmyshadow SUBDIR += megaglest SUBDIR += megaglest-data SUBDIR += megamario SUBDIR += melonds SUBDIR += memonix SUBDIR += meqcc SUBDIR += meritous SUBDIR += mindfocus SUBDIR += minecraft-server SUBDIR += minerbold SUBDIR += minetest_game SUBDIR += minetestmapper SUBDIR += minigalaxy SUBDIR += mirrormagic SUBDIR += miscom SUBDIR += mizuma SUBDIR += mkhexgrid SUBDIR += moagg SUBDIR += monsterz SUBDIR += moon-buggy SUBDIR += moonlander SUBDIR += moonlight-embedded SUBDIR += moonlight-embedded-devel SUBDIR += moonlight-qt SUBDIR += moria SUBDIR += mrboom SUBDIR += mt_dolphin_ia SUBDIR += mt_gtk_client SUBDIR += mtaserver SUBDIR += multimc SUBDIR += mvdsv SUBDIR += nInvaders SUBDIR += naev SUBDIR += narcissu2 SUBDIR += nazghul SUBDIR += nbsdgames SUBDIR += nehquake SUBDIR += neo SUBDIR += neo-cowsay SUBDIR += nethack32 SUBDIR += nethack33 SUBDIR += nethack33-nox11 SUBDIR += nethack34 SUBDIR += nethack34-nox11 SUBDIR += nethack36 SUBDIR += nethack36-nox11 SUBDIR += netherearth SUBDIR += netradiant SUBDIR += netrek-BRMH-bin SUBDIR += netrek-client-cow SUBDIR += nettoe SUBDIR += netwalk SUBDIR += neverball SUBDIR += newvox SUBDIR += nextgo SUBDIR += nexuiz SUBDIR += nighthawk SUBDIR += nile SUBDIR += nimuh SUBDIR += ninix-aya SUBDIR += njam SUBDIR += nlarn SUBDIR += nonsense SUBDIR += npush SUBDIR += nsnake SUBDIR += nuclearchess SUBDIR += numptyphysics SUBDIR += numptyphysics-npcomplete SUBDIR += nwndata SUBDIR += nxengine SUBDIR += oblige SUBDIR += odamex SUBDIR += oldrunner SUBDIR += omega SUBDIR += oneko-sakura SUBDIR += onscripter SUBDIR += onscripter-1byte SUBDIR += oolite SUBDIR += oonsoo SUBDIR += open-adventure SUBDIR += openage SUBDIR += openarena SUBDIR += openarena-data SUBDIR += openarena-oax SUBDIR += openarena-server SUBDIR += openbor SUBDIR += openbor3482 SUBDIR += openbor3711 SUBDIR += openbor3979 SUBDIR += openbor4432 SUBDIR += openbor7144 SUBDIR += openbubbles SUBDIR += openbve SUBDIR += opencity SUBDIR += openclaw SUBDIR += openclonk SUBDIR += openenroth SUBDIR += openfodder SUBDIR += opengfx SUBDIR += openglad SUBDIR += openjazz SUBDIR += openjk SUBDIR += openmortal SUBDIR += openmsx SUBDIR += openmw SUBDIR += openomf SUBDIR += openra SUBDIR += openrct2 SUBDIR += opensfx SUBDIR += opensonic SUBDIR += openspades SUBDIR += openssn SUBDIR += opensurge SUBDIR += openttd SUBDIR += opentyrian SUBDIR += openxcom SUBDIR += openyahtzee SUBDIR += orbital_eunuchs_sniper SUBDIR += orthorobot SUBDIR += osgg SUBDIR += p5-Acme-GuessNumber SUBDIR += p5-Algorithm-Pair-Best2 SUBDIR += p5-Algorithm-Pair-Swiss SUBDIR += p5-Baseball-Sabermetrics SUBDIR += p5-Games-Alak SUBDIR += p5-Games-AlphaBeta SUBDIR += p5-Games-Bingo SUBDIR += p5-Games-Bingo-Bot SUBDIR += p5-Games-Bingo-Print SUBDIR += p5-Games-Dice SUBDIR += p5-Games-GuessWord SUBDIR += p5-Games-Tournament-RoundRobin SUBDIR += pachi SUBDIR += pacman.c SUBDIR += pacmanarena SUBDIR += palapeli SUBDIR += pangzero SUBDIR += passage SUBDIR += patapizza-tetris SUBDIR += pathological SUBDIR += pcgen SUBDIR += pear-Games_Chess SUBDIR += peg-e SUBDIR += pengpong SUBDIR += penguin-command SUBDIR += pengupop SUBDIR += pentobi SUBDIR += phalanx SUBDIR += phlipple SUBDIR += picmi SUBDIR += pinball SUBDIR += pingus SUBDIR += pink-pony SUBDIR += pioneer SUBDIR += pioneers SUBDIR += pipenightdreams SUBDIR += pipepanic SUBDIR += pipewalker SUBDIR += pmars SUBDIR += pmars-sdl SUBDIR += polyglot SUBDIR += pongix SUBDIR += ponscripter-07th-mod SUBDIR += popstar SUBDIR += powder SUBDIR += powder-toy SUBDIR += powder-toy-devel SUBDIR += powermanga SUBDIR += powwow SUBDIR += prboom-plus SUBDIR += primateplunge SUBDIR += prismlauncher SUBDIR += puckman SUBDIR += punchy SUBDIR += pvpgn SUBDIR += py-2048-py SUBDIR += py-cbeams SUBDIR += py-discord.py SUBDIR += py-fife SUBDIR += py-mnemosyne-proj SUBDIR += py-pychess SUBDIR += py-pysol-cards SUBDIR += py-sgflib SUBDIR += py-sgfsummary SUBDIR += py-trueskill SUBDIR += pysolfc SUBDIR += pysolfc-cardsets SUBDIR += pyspacewar SUBDIR += q2p SUBDIR += q2pro SUBDIR += q3cellshading SUBDIR += qcc SUBDIR += qccx SUBDIR += qnetwalk SUBDIR += qonk SUBDIR += qqwing SUBDIR += qstat SUBDIR += qtads SUBDIR += qtv SUBDIR += quackle SUBDIR += quadra SUBDIR += quadrapassel SUBDIR += quake-data SUBDIR += quake-dpmod SUBDIR += quake-maps SUBDIR += quake-source SUBDIR += quake2-3zb2 SUBDIR += quake2-ctf SUBDIR += quake2-data SUBDIR += quake2-extras SUBDIR += quake2-lights SUBDIR += quake2-matrix SUBDIR += quake2-psychomod SUBDIR += quake2-relay SUBDIR += quake2-rogue SUBDIR += quake2-source SUBDIR += quake2-xatrix SUBDIR += quake2lnx SUBDIR += quake2max SUBDIR += quake3-data SUBDIR += quake3-excessive SUBDIR += quake3-osp SUBDIR += quake3-ut SUBDIR += quake3-wfa SUBDIR += quakeforge SUBDIR += quantumminigolf SUBDIR += quaqut SUBDIR += qudos SUBDIR += quetoo SUBDIR += quit SUBDIR += qwdtools SUBDIR += qwfwd SUBDIR += r1q2 SUBDIR += railroad-rampage SUBDIR += rare SUBDIR += rawgl SUBDIR += re3 SUBDIR += redeclipse SUBDIR += redeclipse-data SUBDIR += redeclipse-data16 SUBDIR += redeclipse16 SUBDIR += redorblack SUBDIR += regoth SUBDIR += reminiscence SUBDIR += rescue SUBDIR += retroarch SUBDIR += retroarch-assets SUBDIR += rezerwar SUBDIR += rfksay SUBDIR += ri-li SUBDIR += rnd_jue SUBDIR += robocode SUBDIR += robocode-naval SUBDIR += robotfindskitten SUBDIR += rockdodger SUBDIR += rocksndiamonds SUBDIR += rocksndiamonds-data SUBDIR += rottdc SUBDIR += rpg-cli SUBDIR += rubix SUBDIR += rubygem-fortune_gem SUBDIR += rubygem-lolcat SUBDIR += rubygem-vimgolf SUBDIR += runelite SUBDIR += sampsvr SUBDIR += sarien SUBDIR += sauerbraten SUBDIR += scare SUBDIR += scid SUBDIR += scourge SUBDIR += scourge-data SUBDIR += scramble SUBDIR += scummvm SUBDIR += scummvm-tools SUBDIR += sdb SUBDIR += sdl-ball SUBDIR += sdl-sopwith SUBDIR += sdl_jewels SUBDIR += sdl_lopan SUBDIR += sdl_scavenger SUBDIR += sdlpop SUBDIR += sdlroids SUBDIR += sdlsand SUBDIR += sea-defender SUBDIR += seabattle SUBDIR += searchandrescue SUBDIR += searchandrescue-data SUBDIR += sets SUBDIR += sex SUBDIR += sgt-puzzles SUBDIR += shockolate SUBDIR += shootingstar SUBDIR += simplevaders SUBDIR += simsu SUBDIR += simutrans SUBDIR += simutrans-pak128 SUBDIR += simutrans-pak128.german SUBDIR += simutrans-pak64 SUBDIR += sjeng SUBDIR += ski SUBDIR += skladnik SUBDIR += sl SUBDIR += slade SUBDIR += slashem-tty SUBDIR += slump SUBDIR += sokoban SUBDIR += sokobano SUBDIR += sol SUBDIR += solarconquest SUBDIR += solarus SUBDIR += solarus-quest-editor SUBDIR += solver SUBDIR += spacejunk SUBDIR += speak SUBDIR += species SUBDIR += spellcast SUBDIR += spicetrade SUBDIR += star_traders SUBDIR += starfighter SUBDIR += starlanes SUBDIR += steelstorm SUBDIR += stendhal SUBDIR += stockfish SUBDIR += stonesoup SUBDIR += stormbaancoureur SUBDIR += stratagus SUBDIR += sudsol SUBDIR += suika3 SUBDIR += sulis SUBDIR += supertux SUBDIR += supertux2 SUBDIR += supertuxkart SUBDIR += swell-foop SUBDIR += sxsame SUBDIR += tads SUBDIR += taipan SUBDIR += taisei SUBDIR += tali SUBDIR += tanglet SUBDIR += tbclock SUBDIR += tecnoballz SUBDIR += teeworlds SUBDIR += tenebrae SUBDIR += tesseract SUBDIR += tesseract-data SUBDIR += tetrigo SUBDIR += tetrinet SUBDIR += tetrinet-x SUBDIR += tetzle SUBDIR += textmaze SUBDIR += thegrind SUBDIR += tileworld SUBDIR += tinycols SUBDIR += tkmoo SUBDIR += tmatrix SUBDIR += tomatoes SUBDIR += tome4 SUBDIR += tome4-beta SUBDIR += tomenet SUBDIR += tong SUBDIR += toppler SUBDIR += torcs SUBDIR += tornado SUBDIR += torrent SUBDIR += toycars SUBDIR += trackballs SUBDIR += tractorgen SUBDIR += traingame SUBDIR += tremulous SUBDIR += trenchbroom SUBDIR += trigger-rally SUBDIR += trimines SUBDIR += triplane SUBDIR += trojka SUBDIR += tsito SUBDIR += tt SUBDIR += ttt SUBDIR += tty-solitaire SUBDIR += tux-aqfh SUBDIR += tuxkart SUBDIR += tuxpaint SUBDIR += tuxpaint-config SUBDIR += tuxpaint-fonts SUBDIR += tuxpaint-stamps SUBDIR += tuxracer SUBDIR += tuxtype SUBDIR += twind SUBDIR += tycho SUBDIR += typespeed SUBDIR += typtea SUBDIR += tyrian-data SUBDIR += ufoai SUBDIR += ufoai-data SUBDIR += uhexen SUBDIR += uhexen2 SUBDIR += uhexen2-extras SUBDIR += ultimatestunts SUBDIR += umark SUBDIR += unknown-horizons SUBDIR += unnethack SUBDIR += untahris SUBDIR += uqm SUBDIR += urbanterror-data SUBDIR += vamos SUBDIR += vanilla-conquer SUBDIR += vavoom SUBDIR += vavoom-extras SUBDIR += vcmi SUBDIR += vectoroids SUBDIR += veloren-weekly SUBDIR += violetland SUBDIR += viruskiller SUBDIR += vitetris SUBDIR += vkquake SUBDIR += vms-empire SUBDIR += voadi SUBDIR += volleyball SUBDIR += vor SUBDIR += vt100-art-and-animations SUBDIR += vultures-eye SUBDIR += vvvvvv SUBDIR += wanderer SUBDIR += wargus SUBDIR += warmux SUBDIR += warzone2100 SUBDIR += wesnoth SUBDIR += whichwayisup SUBDIR += widelands SUBDIR += wipeclean SUBDIR += wizznic SUBDIR += wmeyes SUBDIR += wmpuzzle SUBDIR += wmqstat SUBDIR += wmtictactoe SUBDIR += wolfpack SUBDIR += wop SUBDIR += wordplay SUBDIR += wordsearch SUBDIR += wordwarvi SUBDIR += worldofpadman SUBDIR += wtf SUBDIR += wxlauncher SUBDIR += wyrmgus SUBDIR += wyrmsun SUBDIR += xasteroids SUBDIR += xbat SUBDIR += xbill SUBDIR += xbl SUBDIR += xblackjack SUBDIR += xblast SUBDIR += xblood SUBDIR += xboard SUBDIR += xboard-devel SUBDIR += xboing SUBDIR += xbomb SUBDIR += xbubble SUBDIR += xchadance SUBDIR += xcheckers SUBDIR += xchomp SUBDIR += xconq SUBDIR += xcowsay SUBDIR += xdeblock SUBDIR += xdemineur SUBDIR += xdesktopwaves SUBDIR += xdigger SUBDIR += xemeraldia SUBDIR += xeyesplus SUBDIR += xfce4-eyes-plugin SUBDIR += xfireworks SUBDIR += xfrisk SUBDIR += xgalaga SUBDIR += xgalaga++ SUBDIR += xgalaga-sdl SUBDIR += xglk SUBDIR += xhime SUBDIR += xinfocom SUBDIR += xinvaders SUBDIR += xinvaders3d SUBDIR += xisola SUBDIR += xjig SUBDIR += xjump SUBDIR += xjumpx SUBDIR += xkoules SUBDIR += xlaby SUBDIR += xlennart SUBDIR += xlife SUBDIR += xlogical SUBDIR += xmahjongg SUBDIR += xmastermind SUBDIR += xmemory SUBDIR += xmille SUBDIR += xmine SUBDIR += xminehunter SUBDIR += xmines SUBDIR += xmoto SUBDIR += xmris SUBDIR += xmulti SUBDIR += xneko SUBDIR += xnethack SUBDIR += xoids SUBDIR += xoj SUBDIR += xonix SUBDIR += xonotic SUBDIR += xorgramana SUBDIR += xosmulti SUBDIR += xpat2 SUBDIR += xpilot SUBDIR += xpilot-ng-server SUBDIR += xpipeman SUBDIR += xpired SUBDIR += xpuzzles SUBDIR += xpuzzletama SUBDIR += xrally SUBDIR += xray-16 SUBDIR += xray_re-tools SUBDIR += xrick SUBDIR += xrisk SUBDIR += xroach SUBDIR += xrobots SUBDIR += xrot SUBDIR += xsc SUBDIR += xscavenger SUBDIR += xscrabble SUBDIR += xshisen SUBDIR += xshogi SUBDIR += xskat SUBDIR += xsokoban SUBDIR += xsoldier SUBDIR += xspacewarp SUBDIR += xspringies SUBDIR += xteddy SUBDIR += xtet42 SUBDIR += xtgyoretsu SUBDIR += xtic SUBDIR += xtrojka SUBDIR += xtron SUBDIR += xtruco SUBDIR += xtux SUBDIR += xtxf SUBDIR += xvier SUBDIR += xworm SUBDIR += xye SUBDIR += xzip SUBDIR += yadex SUBDIR += yahtzee SUBDIR += yquake2 SUBDIR += zangband SUBDIR += zatacka SUBDIR += zaz SUBDIR += zdoom SUBDIR += zhlt SUBDIR += zoom SUBDIR += ztrack .include