Skip to content

Port Arco server to Windows#4

Open
oltyan wants to merge 3 commits into
rbdannenberg:mainfrom
Musical-Mycology:windows-server-port
Open

Port Arco server to Windows#4
oltyan wants to merge 3 commits into
rbdannenberg:mainfrom
Musical-Mycology:windows-server-port

Conversation

@oltyan
Copy link
Copy Markdown

@oltyan oltyan commented Apr 14, 2026

Adds Windows build support for the Arco server, including curses-free console mode and O2lite connectivity.

Server port

  • Add _WIN32 guards to server UI code (arco_ui.cpp, arco.cpp, cmtio.c) replacing curses/form with plain console I/O via _kbhit/_getch
  • Fix nofileio.cpp missing unistd.h guard, replace POSIX getline() with fgets() in svprefs.cpp
  • Fix host_close_audio() void-returning-value bug (MSVC strict)
  • Add WIN32_LEAN_AND_MEAN before windows.h to avoid winsock conflicts
  • Enable O2lite connections via o2lite_initialize() and o2_network_enable(true)
  • Update arcoserver.cmakeinclude: no curses linking, add Bonjour SDK dnssd.lib and Windows system libs

Build scripts

  • setup_arco_win.bat: full Windows dev environment setup (builds PortAudio, libsndfile, PDCurses, O2, generates libraries.txt)
  • build_all.bat/.sh: quick dependency rebuild
  • Helper scripts for PDCurses build and DSP code generation

All build scripts use a configurable PROJECTS env var instead of hardcoded paths.

Tested

  • Built and ran arcobasic.exe on Windows with Visual Studio 2022
  • Verified O2lite client (PyArco) can discover and connect to the server

oltyan and others added 3 commits April 8, 2026 13:01
- Add Windows _WIN32 guards to server UI code (arco_ui.cpp, arco.cpp, cmtio.c)
  replacing curses/form with plain console I/O using _kbhit/_getch
- Fix nofileio.cpp missing unistd.h guard for WIN32
- Replace POSIX getline() with fgets() in svprefs.cpp
- Fix host_close_audio() void-returning-value bug (MSVC strict)
- Add WIN32_LEAN_AND_MEAN before windows.h to avoid winsock conflicts
- Enable O2lite connections: call o2lite_initialize() and
  o2_network_enable(true) so Zeroconf discovery works for O2lite clients
- Update arcoserver.cmakeinclude for Windows: no curses linking,
  add Bonjour SDK dnssd.lib and Windows system libs
- Add CLAUDE.md with project context for AI-assisted development

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- setup_arco_win.bat: full environment setup (CMake, FAUST, PortAudio,
  libsndfile, PDCurses, O2, auto-generates libraries.txt)
- build_all.bat/.sh: quick rebuild of all dependencies
- build_pdcurses.bat: standalone PDCurses build
- getvsenv.bat: print VS build environment for debugging
- ugens/sine/generate_sine.bat: DSP code generation helper

All scripts use configurable PROJECTS env var (defaults to parent
directory) instead of hardcoded paths.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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