Files
Joe MattielloandClaude Opus 5.5 4900c62dcc build(app): CMake presets, and warn when no librashader runtime will ship (#1132)
* build(app): CMake presets, and warn when no librashader runtime will ship

- `app/CMakePresets.json` adds three presets: release, debug and nightly (the nightly channel, where the emulation thread defaults on). Each builds in `app/build-<preset>/`. Run them from `app/`: `cmake --preset release && cmake --build --preset release -j`.
- VJ_APP_FETCH_LIBRASHADER can stay OFF in the cache from an earlier offline or packaging configure, and the default never comes back. Configure now warns about that where a prebuilt exists (Windows, Apple silicon). Otherwise a local build ships no runtime and the Shader section reports the library missing. Configure also names the prebuilt runtime it picked.
- Ignore `app/CMakeUserPresets.json`.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* build(app): the release and debug presets set the dev channel

A cached VJ_BUILD_CHANNEL=nightly from an earlier -D survived the presets, which set no channel.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

---------

Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-11-01 01:30:53 -04:00

214 lines
5.6 KiB
Plaintext

# Local E2E test build (downloads rcheevos tarball)
/build/
/build-app/
# Local signing settings (app/packaging/env.example) and local package output (dist/ also holds tracked files)
/.env
/dist/Virtual Jaguar.app/
/dist/VirtualJaguar-*-local.zip
# Legacy local path (older CI recipe); keep ignored if present
/test_memory_map
# Build artifacts
*.o
*.so
*.dll
*.dylib
*.exe
*.js
*.bc
# ... but the site's committed vendored JS is source, not a build artifact
!site/assets/js/*.js
# Generated by scripts/gen-version-h.sh on every build
src/core/version.h
# macOS
.DS_Store
.build
# IDE / editor
/.claude/*
# ... but repo-checked-in agent skills are source, not local IDE state
!/.claude/skills
/.cursor
/.vscode
# Python virtual environments
.venv*/
# Test binaries and debug artifacts
test/test_blitter_simd
test/test_blitter_scalar
test/test_*
!test/test_*.c
!test/test_*.h
!test/test_*.sh
!test/test_*.py
# Compiled test tools. Enumerating each binary meant every new tool could be
# committed by an unlucky `git add -A` -- and a Mach-O binary tracked into the
# tree makes Linux CI skip the rebuild and fail with "Exec format error".
test/tools/test_*
!test/tools/test_*.c
!test/tools/test_*.h
!test/tools/test_*.sh
!test/tools/test_*.py
# Hand-built tool binaries that don't match the test_* prefix.
tools/jagcd/jagcd-chd-check
tools/jagcd/chdman
tools/jagcd/*.exe
test/tools/blit_memo_verify
test/tools/dsp_halt_backtrace
test/tools/dsp_idle_ab
test/tools/idle_skip_scale_ab
test/tools/dsp_idle_probe_falsify
test/tools/gpu_idle_ab
test/tools/gpu_idle_probe_falsify
test/tools/i2s_lag_probe
test/tools/kart_line_probe
test/tools/test_memory_map
test/tools/test_op_gpu_object
test/tools/test_dsp_audio_diag
test/tools/cd_wedge_probe
test/tools/xenowings_ingame_video
test/tools/xenowings_sfx_probe
test/tools/wmcj_intro_logo
test/tools/fb_flicker_probe
test/tools/fmv_seek_probe
test/tools/sram_test
test/tools/netlink_pair
test/tools/perf_iface_witness
test/tools/netlink_game
test/tools/joymatrix_identity
test/tools/teamtap_rom_probe
test/tools/teamtap_ports
test/tools/mouse_decode_test
test/tools/rotary_decode_test
test/tools/analog_decode_test
test/tools/audio_wav_dump
test/tools/paddle_decode_test
test/tools/procontroller_decode_test
test/tools/sixd_decode_test
test/tools/tuning_identity
test/tools/gdb_determinism_probe
# vjtrace flight-recorder analyzer/smoke tools -- built on demand by
# test/tools/vjtrace_selftest.sh (and by hand per each tool's own header
# comment); never tracked, same Mach-O-on-Linux-CI hazard as above.
test/tools/vjtrace_smoke
test/tools/trace_dump
test/tools/trace_diff
test/tools/field_diff
test/tools/trace_memdiff
test/dump_caller
test/dump_pc
test/heap_search
test/*.dSYM/
test/tools/*.dSYM/
# Test logs
*.log
test/*.log
# SRAM and CDROM save files (left at repo root by test harnesses
# that don't redirect the core's save path)
/*.srm
/*.cdrom.srm
# Test ROMs (keep source scripts, ignore binaries)
test/roms/*.jag
test/roms/*.rom
# The private ROM/disc tree. Both forms are ignored deliberately: the data
# lives OUTSIDE every checkout and this path is a symlink to it, so neither
# the directory nor the link may ever be tracked. A tracked symlink here was
# self-referential and let a forced checkout replace the real directory,
# destroying the collection once already (2026-07-30).
test/roms/private/
test/roms/private
# Reference docs (large PDFs, not source)
docs/atari-jaguar-1999/
# LLDB scripts (local debug helpers)
test/lldb_*.cmd
test/lldb_*.py
/test/tools/test_benchmark
/test/tools/test_blitter_compare
/test/tools/test_screenshot
test/tools/build/
# Acid-test build outputs
test/acid/acid_run
test/acid/tests/**/*.jag
# On-demand JaguarDemos clone (see test/jaguar-demos/PIN). Not a submodule:
# pinning 23 MiB of demo sources into every core clone is unnecessary when
# CI/local fetch can check out one SHA.
test/vendor/
# On-demand Jaguar assembler toolchain clones (see
# tools/jaguar-toolchain/PIN / setup.sh fetch). Same rationale as
# test/vendor/ above: pinned SHAs make the sources reproducible without
# vendoring them into this repo's history.
/tools/vendor/
/test/tools/test_frame_timing
/test/tools/audio_timeline
/test/tools/cd_visual_verify
/test/tools/cue2cdi
/test/tools/fb_row_digest
/test/tools/tom_window_trace
/test/tools/frame_hash_ab
/test/tools/hires_box_check
/test/tools/hires_state_digest
/test/tools/hires_shot
/test/tools/padtest_probe
test/tools/__pycache__/
.build-config
.link-mode
# gcov instrumentation output (make coverage)
*.gcda
*.gcno
coverage.xml
test/tools/netlink_latency
test/tools/netlink_delay_proxy
test/tools/netlink_discover_probe
test/tools/netlink_rebuild_witness
test/tools/netlink_mismatch_witness
# Skip ledger written by `make test` (scripts/test-skip.sh)
test/.skipped-checks
# Created by `make platform=windows_msvc*` on a non-Windows host:
# those blocks run `reg query ... 2>nul`, and outside cmd.exe `nul`
# is a plain file. Committing it makes every Windows checkout fail
# with "error: invalid path 'nul'".
/nul
# Generated static site (scripts/build_site.py output)
/_site/
__pycache__/
/test/tools/cart_boot_probe
/test/tools/counter_rate_scan
/test/tools/gpu_bench_read
/test/tools/gpu_disasm_dump
/test/tools/frame_cost_probe
/test/tools/gpu_pipe_probe
/test/tools/irq_rate_probe
/test/tools/m68k_pc_histogram
/test/tools/risc_backtrace_histogram
/test/tools/risc_pc_histogram
/test/tools/menu_step_probe
/test/tools/present_rate_probe
test/tools/blitter_static_leak
test/tools/voicemodem_pair
test/tools/voicechat_pair
/test/tools/netlink_discover_probe
/test/tools/netlink_rebuild_witness
test/roms/tier1/
# Standalone app (app/): CMake build trees
/app/build*/
/app/CMakeUserPresets.json