Skip to content

Windows DLL build (RX_SHARED on Windows) - #93

Merged
Force67 merged 1 commit into
mainfrom
windows-shared
Sep 29, 2026
Merged

Force67 merged 1 commit into
mainfrom
windows-shared

Conversation

@Force67

@Force67 Force67 commented Sep 29, 2026

Copy link
Copy Markdown
Owner

Makes the component build (one DLL per module) work on Windows. Needs Force67/equilibrium#27 (submodule bumped), Force67/libultragui#15 and Force67/zetanet#7, all merged.

PE gives every DLL that links a static library its own copy of its globals, where ELF shares them. So under RX_SHARED on Windows:

  • equilibrium base is a DLL (EQ_BASE_SHARED): one Option/Feature registry, log, allocator
  • libultragui is a DLL (ULTRAGUI_SHARED): one UI context and component-id table
  • SDL3 is a DLL: one event queue (input_touch_sdl_test caught two)
  • mimalloc is off: an executable's operator new replacement does not reach DLLs

Cross build tooling:

  • nix develop .#mingw: ucrt64 mingw gcc, mcfgthread, OpenSSL for Windows; the toolchain file reads them from the environment instead of hardcoded store paths (the old ones had been collected)
  • toolchain: compiler checks link, packages resolve against the mingw sysroot only (it used the host's Linux SDL3), -mbig-obj
  • fixes it turned up: path_motion_test included what it used only under RX_HAS_NRD; http_test's local server is POSIX-only

Verified (mingw cross, under Wine, Vulkan on the real GPU):

  • full engine builds as 43 DLLs; static and DLL builds agree on 5 scenes + 11 demos (rmse <= 0.0007) and on the test suite
  • editor runs; an option set from the environment reaches the render DLL (wireframe capture identical to static)
  • Linux static and shared: ctest 155/155 under vkrun, shared editor runs

Not verified: MSVC. Known Windows-port issues, same in static and DLL: Wine's d3d12.dll fails some compute pipelines (the *_d3d12 tests, and the editor, which defaults to D3D12 on Windows), scene_authoring_test writes an unescaped Windows path, world_bake_test runs rxworld by its Linux path, and under Wine a process is occasionally SIGKILLed at exit after a clean shutdown.

@Force67
Force67 merged commit e2d0276 into main Sep 29, 2026
@Force67
Force67 deleted the windows-shared branch September 29, 2026 18:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant