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>
97 lines
4.2 KiB
Markdown
97 lines
4.2 KiB
Markdown
# 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:
|
|
|
|
```sh
|
|
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:
|
|
|
|
```powershell
|
|
.\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:
|
|
|
|
```powershell
|
|
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](https://jrsoftware.org/isinfo.php) after installing the
|
|
MSYS2 build tools. From PowerShell at the repository root, run:
|
|
|
|
```powershell
|
|
.\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.
|