Build Targets

WvdS FPC RAD Studio supports various build targets for different platforms.

Overview

Target Compiler Output Runtime Environment
GUI FPC Native Binary Desktop (Windows/Linux/macOS)
TUI FPC Native Binary Terminal
Web pas2js JavaScript Browser/Node.js
Extension pas2js JavaScript VS Code Extension Host

GUI Target

Native desktop applications with graphical user interface.

Technology

  • Compiler: Free Pascal Compiler (FPC)
  • UI Framework: LCL (Lazarus Component Library)
  • Output: .exe (Windows), Binary (Linux/macOS)

PXAML Rendering

PXAML → IR → GUI Renderer → LCL Controls

Supported Controls:

  • All standard LCL controls
  • Custom WvdS Controls
  • Native widgets per platform

Build Configuration

[build]
target=gui
platform=windows-x64
 
[gui]
widgetset=win32  # or: gtk2, qt5, cocoa

TUI Target

Terminal-based user interfaces for servers and CLI.

Technology

  • Compiler: Free Pascal Compiler (FPC)
  • UI Framework: WvdS TUI Framework
  • Output: Native Binary with ANSI/VT100 output

PXAML Rendering

PXAML → IR → TUI Renderer → ANSI Escape Sequences

Supported Controls:

  • TextBlock, Label
  • TextBox (single-line input)
  • Button (with keyboard navigation)
  • ListBox, Table
  • ProgressBar
  • Border, Panel

Build Configuration

[build]
target=tui
platform=linux-x64
 
[tui]
colors=256  # or: 16, truecolor
unicode=true

Web Target

Browser applications via pas2js transpilation.

Technology

  • Compiler: pas2js
  • Output: JavaScript bundle
  • Runtime: Browser, Electron, PWA

PXAML Rendering

PXAML → IR → Web Renderer → DOM/CSS

Supported Controls:

  • All HTML-native controls
  • CSS-based styling
  • Flexbox/Grid layout

Build Configuration

[build]
target=web
platform=browser
 
[web]
minify=true
sourcemaps=true

Extension Target

VS Code Extensions in Pascal.

Technology

  • Compiler: pas2js
  • Output: CommonJS module
  • Runtime: VS Code Extension Host (Node.js)

Specifics

  • No DOM access
  • VS Code API available
  • WebView for UI

Build Configuration

[build]
target=extension
platform=vscode
 
[extension]
minversion=1.85.0

Platform Matrix

Feature GUI TUI Web Extension
Windows Yes No Yes WebView
Dialogs Yes Limited Yes Quick Input
Menus Yes No Yes Contributes
File Access Yes Yes Limited Yes
Network Yes Yes CORS Yes
Multi-Threading Yes Yes Web Workers No

Code Sharing

Common code for all targets is located in sources/common/:

sources/common/
├── core/         # Base types, utilities
├── ui/
│   ├── controls/ # Control abstraction
│   ├── runtime/  # PXAML Runtime
│   └── targets/
│       ├── gui/  # GUI-specific
│       ├── tui/  # TUI-specific
│       └── web/  # Web-specific

Conditional Compilation:

{$IFDEF TARGET_GUI}
uses LCLType, Forms;
{$ENDIF}
 
{$IFDEF TARGET_WEB}
uses JS, Web;
{$ENDIF}
 
{$IFDEF TARGET_TUI}
uses WvdS.TUI.Console;
{$ENDIF}

See Also

Zuletzt geändert: on 2026/01/29 at 10:26 PM