ddat interop with dat js cable interop with cabal js ddat's frontend = dat-thang cable fe = cable-thang dillo support based on cel's dillo-dat bootstrap node xplatform support Signed-off-by: divo <418@cryspace.space>
4.2 KiB
Windows build
The native Windows build uses MSYS2's UCRT64 toolchain and creates a runnable
folder of PE executables plus their runtime DLLs and data files. It does not
reuse the GNU/Linux build/ directory or generated config.mk.
Install MSYS2, then install the UCRT64 packages needed by the project:
pacman -S --needed \
mingw-w64-ucrt-x86_64-gcc \
mingw-w64-ucrt-x86_64-make \
mingw-w64-ucrt-x86_64-pkgconf \
mingw-w64-ucrt-x86_64-libsodium \
mingw-w64-ucrt-x86_64-curl \
mingw-w64-ucrt-x86_64-SDL2 \
mingw-w64-ucrt-x86_64-SDL2_ttf
From the repository root in PowerShell, run:
.\build-windows.ps1
Compiler outputs, including tests and intermediate files, stay in
build\windows. Distribution output is staged separately: dist\windows-x64
contains only the eight user-facing programs, their runtime DLLs, assets,
Scheme files, and manuals. dist\installers contains a portable ZIP and, when
Inno Setup is installed, the setup executable. Do not distribute the contents
of build\windows directly. The build date's Discordian calendar conversion
is compiled into the GUI; no external ddate installation is needed.
To create just the portable ZIP, run build-windows.ps1. To create the install
wizard as well, run build-windows-installer.ps1.
cable-thang.exe is a native C/S7 client using Cesspool and Sleep. Node.js
and Cabal JavaScript modules are needed only for optional interoperability
tests. Cable audio and video support are experimental and disabled by default,
so the regular Windows build does not require FFmpeg. To enable both, install
FFmpeg and build with:
pacman -S --needed mingw-w64-ucrt-x86_64-ffmpeg
.\build-windows.ps1 -EnableCableMedia
The UCRT64 FFmpeg libraries provide Cable's AAC-LC encoder/decoder, OBS MPEG-TS
ingest, and low-resolution JPEG video exchange; their runtime DLLs are copied
beside the Windows executables. In cable-thang, OBS INPUT (or
Ctrl+Shift+V) listens on local UDP port 5000; OBS can publish MPEG-TS there
using its Custom FFmpeg Output.
The GNU/Linux workflow is ./configure, make, and make install; its default
compiler output is build/linux. To create a staged GNU/Linux tarball, use
make package. Release artifacts go under dist/ on both platforms. To create
a source-only archive, run package-source.ps1; its contents and exclusions
are documented in docs\source-distribution.md.
That configuration checks for libcurl because the Dillo-compatible
dat-dns lookup uses HTTPS /.well-known/dat; it does not call the operating
system DNS TXT resolver.
Install wizard
Install Inno Setup 6 after installing the MSYS2 build tools. From PowerShell at the repository root, run:
.\build-windows-installer.ps1
The script rebuilds the Windows applications, bundles their DLLs and runtime
assets, and creates dist\installers\dat-thang-setup-0.0.002-x64.exe.
The application identifies itself as dat-thang v0.0.002 (prototype, pre-alpha); the executable file version is 0.0.2.0.
The wizard offers a per-user or all-users install, a destination folder,
optional desktop shortcut, optional PATH entry for the terminal commands, and
an optional launch at the end. Uninstall removes a PATH entry only when this
installer added it. The app and installer use the same generic green hexagon
icon. The Start menu includes dat-thang and a command prompt with the installed
tools on PATH.
cable-thang.exe is included for opening a room address from the command
prompt and connects through Cesspool.
cesspool-bootstrap.exe runs a dedicated Cesspool discovery node in the
foreground. It is for an operator deploying a reachable public rendezvous
host, not something chat users need to run. The node needs a stable state
directory and inbound UDP on the selected port; see docs\cesspool-bootstrap.1
for process-supervisor and firewall setup. The Windows installer includes the
executable and the operator manpage in its docs folder.
Keep the node identity outside the checkout. In PowerShell, run the development
executable with --state-dir "$env:LOCALAPPDATA\dat-gpt\cesspool-bootstrap-state".
That keeps the private identity key in per-user application data rather than in
the source tree or disposable compiler output.