if(WINUAE_UNIX_BUILD_EXECUTABLE)
add_executable(winuae_unix $<TARGET_OBJECTS:winuae_core>)
+ # Keep the developer-facing target name stable; the produced binary is
+ # named winuae to match the installed name, the .desktop files, the
+ # WinUAE.app bundle, and winuae.exe on Windows.
+ set_target_properties(winuae_unix PROPERTIES OUTPUT_NAME winuae)
if(WINUAE_UNIX_EXTRA_LIBRARY_DIRS)
target_link_directories(winuae_unix PRIVATE ${WINUAE_UNIX_EXTRA_LIBRARY_DIRS})
endif()
if(TARGET winuae_unix AND NOT APPLE)
install(PROGRAMS "$<TARGET_FILE:winuae_unix>"
DESTINATION "${CMAKE_INSTALL_BINDIR}"
- RENAME winuae
)
install(FILES README_unix.md
DESTINATION "${CMAKE_INSTALL_DOCDIR}"
## Current Status
-- Builds with CMake as `winuae_unix`.
+- Builds with CMake as the `winuae_unix` target, producing a `winuae` binary.
- Uses `od-unix/` host abstractions.
- SDL3 provides the current window, framebuffer presentation, mouse input, keyboard input, audio output, and playback-device selection.
- SDL3 gamepads and non-gamepad joysticks are exposed through the WinUAE input-device layer for game-port use; the Qt Game Ports/Input pages have first remap/test dialogs backed by SDL3 device enumeration and WinUAE config keys.
The executable will be:
```sh
-/tmp/winuae_cmake_build/winuae_unix
+/tmp/winuae_cmake_build/winuae
```
On Linux, install the executable, shared resources, documentation, and desktop/MIME metadata into a prefix with:
```
This installs the desktop entry, `.uae` MIME type, and hicolor icons. The
-installed Linux command is `winuae`; the build-tree executable remains
-`winuae_unix` to keep the existing developer targets stable. On macOS, use the
-`.app` and DMG targets below instead of installing the raw executable.
+binary is named `winuae` everywhere — build tree, installed command, and app
+bundle; only the CMake target keeps the `winuae_unix` name for developer
+stability. On macOS, use the `.app` and DMG targets below instead of
+installing the raw executable.
On Linux, CPack can create packages from the same install rules:
The port accepts normal WinUAE command-line `-s` configuration overrides. A minimal A1200 example:
```sh
-/tmp/winuae_cmake_build/winuae_unix \
+/tmp/winuae_cmake_build/winuae \
-s kickstart_rom_file=/path/to/A1200.rom \
-s floppy0=/path/to/disk.adf \
-s nr_floppies=1 \
When the integrated Qt UI is built, `winuae_unix` opens the configuration UI by default. To boot directly from a config or command-line settings, disable the GUI:
```sh
-/tmp/winuae_cmake_build/winuae_unix \
+/tmp/winuae_cmake_build/winuae \
-f /path/to/config.uae \
-s use_gui=no
```
SDL3 audio uses the WinUAE `sound_output`, `sound_frequency`, `sound_channels`, `sound_volume*`, and floppy drive sound config keys. Unix playback device selection follows the same target-prefixed style as Windows:
```sh
-/tmp/winuae_cmake_build/winuae_unix \
+/tmp/winuae_cmake_build/winuae \
-s unix.soundcard=0 \
-s 'unix.soundcardname=SDL:Default Audio Device'
```
```sh
# Real serial device
-/tmp/winuae_cmake_build/winuae_unix \
+/tmp/winuae_cmake_build/winuae \
-s unix.serial_port=/dev/cu.usbserial-0001 \
-s serial_hardware_ctsrts=true
# Telnet-style TCP listener on all local interfaces, port 1234
-/tmp/winuae_cmake_build/winuae_unix \
+/tmp/winuae_cmake_build/winuae \
-s unix.serial_port=TCP://0.0.0.0:1234
```
For manual A4091 autoconfig smoke tests, use an A4000/A4000T-style config, disable 24-bit CPU addressing, and provide a real A4091 ROM:
```sh
-/tmp/winuae_cmake_build/winuae_unix \
+/tmp/winuae_cmake_build/winuae \
-s use_gui=no \
-s kickstart_rom_file=/path/to/A4000.rom \
-s a4091_rom_file=/path/to/a4091.rom \
```sh
export WINUAE_BUILD_DIR=/tmp/winuae_cmake_build
-export WINUAE_EXE=/tmp/winuae_cmake_build/winuae_unix
+export WINUAE_EXE=/tmp/winuae_cmake_build/winuae
export WINUAE_SMOKE_SECONDS=5
export WINUAE_SMOKE_LOG=/tmp/winuae_unix_smoke.log
```
Creates a local WinUAE.app bundle from an existing macOS build tree.
Arguments:
- build-dir CMake build directory containing winuae_unix.
+ build-dir CMake build directory containing the winuae binary.
Defaults to WINUAE_BUILD_DIR or the current directory.
output-dir Directory that will receive WinUAE.app.
Defaults to <build-dir>/package.
source_dir="$(cd "${script_dir}/.." && pwd)"
build_dir="${1:-${WINUAE_BUILD_DIR:-$(pwd)}}"
output_dir="${2:-${build_dir}/package}"
-executable="${build_dir}/winuae_unix"
+executable="${build_dir}/winuae"
+if [[ ! -x "${executable}" && -x "${build_dir}/winuae_unix" ]]; then
+ # Build directories from before the binary rename.
+ executable="${build_dir}/winuae_unix"
+fi
app_dir="${output_dir}/WinUAE.app"
contents_dir="${app_dir}/Contents"
macos_dir="${contents_dir}/MacOS"
if [[ ! -x "${executable}" ]]; then
echo "error: executable not found: ${executable}" >&2
- echo "hint: build winuae_unix first, or pass the CMake build directory" >&2
+ echo "hint: build the winuae_unix target first, or pass the CMake build directory" >&2
exit 1
fi
Creates a drag-install WinUAE DMG from an existing macOS build tree.
Arguments:
- build-dir CMake build directory containing winuae_unix.
+ build-dir CMake build directory containing the winuae binary.
Defaults to WINUAE_BUILD_DIR or the current directory.
output-dir Directory that will receive WinUAE.app and the final DMG.
Defaults to <build-dir>/package.
ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
BUILD_DIR=${WINUAE_BUILD_DIR:-/tmp/winuae_cmake_build}
-EXE=${WINUAE_EXE:-"$BUILD_DIR/winuae_unix"}
+EXE=${WINUAE_EXE:-"$BUILD_DIR/winuae"}
LOG=${WINUAE_SMOKE_LOG:-/tmp/winuae_unix_smoke.log}
RUN_SECONDS=${WINUAE_SMOKE_SECONDS:-5}
A2065=${WINUAE_SMOKE_A2065:-0}
ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
BUILD_DIR=${WINUAE_BUILD_DIR:-/tmp/winuae_cmake_build}
-EXE=${WINUAE_EXE:-"$BUILD_DIR/winuae_unix"}
+EXE=${WINUAE_EXE:-"$BUILD_DIR/winuae"}
LOG=${WINUAE_SMOKE_LOG:-/tmp/winuae_unix_a4091_hdf_smoke.log}
RUN_SECONDS=${WINUAE_SMOKE_SECONDS:-8}
ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
BUILD_DIR=${WINUAE_BUILD_DIR:-/tmp/winuae_cmake_build}
-EXE=${WINUAE_EXE:-"$BUILD_DIR/winuae_unix"}
+EXE=${WINUAE_EXE:-"$BUILD_DIR/winuae"}
RUN_SECONDS=${WINUAE_SMOKE_SECONDS:-8}
BOARD=${WINUAE_IDE_EXPANSION_BOARD:-alfapower}
ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
BUILD_DIR=${WINUAE_BUILD_DIR:-/tmp/winuae_cmake_build}
-EXE=${WINUAE_EXE:-"$BUILD_DIR/winuae_unix"}
+EXE=${WINUAE_EXE:-"$BUILD_DIR/winuae"}
LOG=${WINUAE_SMOKE_LOG:-/tmp/winuae_unix_p96_guest_smoke.log}
RUN_SECONDS=${WINUAE_SMOKE_SECONDS:-45}
Z3=${WINUAE_P96_Z3:-0}
ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
BUILD_DIR=${WINUAE_BUILD_DIR:-/tmp/winuae_cmake_build}
-EXE=${WINUAE_EXE:-"$BUILD_DIR/winuae_unix"}
+EXE=${WINUAE_EXE:-"$BUILD_DIR/winuae"}
LOG=${WINUAE_SMOKE_LOG:-/tmp/winuae_unix_path_config_smoke.log}
RUN_SECONDS=${WINUAE_SMOKE_SECONDS:-5}
TMPBASE=${TMPDIR:-/tmp}
ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
BUILD_DIR=${WINUAE_BUILD_DIR:-/tmp/winuae_cmake_build}
-EXE=${WINUAE_EXE:-"$BUILD_DIR/winuae_unix"}
+EXE=${WINUAE_EXE:-"$BUILD_DIR/winuae"}
LOG=${WINUAE_SMOKE_LOG:-/tmp/winuae_unix_serial_tcp_smoke.log}
RUN_SECONDS=${WINUAE_SMOKE_SECONDS:-5}
CONNECT_TIMEOUT=${WINUAE_SERIAL_TCP_TIMEOUT:-20}
ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
BUILD_DIR=${WINUAE_BUILD_DIR:-/tmp/winuae_cmake_build}
-EXE=${WINUAE_EXE:-"$BUILD_DIR/winuae_unix"}
+EXE=${WINUAE_EXE:-"$BUILD_DIR/winuae"}
LOG_DIR=${WINUAE_SMOKE_LOG_DIR:-/tmp}
RUN_SECONDS=${WINUAE_SMOKE_SECONDS:-5}