Files
Toastconcern--FrameStudio/cmake/llvm-mingw.cmake
T
ToastconcernandClaude Opus 5.5 f7345a5ac3 Frame Studio and Frame Home: cross-platform builds
Frame Studio now builds for Windows (x64, x86, ARM64), Linux (x64, x86, ARM64)
and macOS (Apple Silicon, Intel):
- studio/platform.h with Win32 and POSIX implementations (dialogs through
  tinyfiledialogs on Linux/macOS), a GLFW window beside the Win32 one, and a
  platform-neutral frame pacer
- MoltenVK support in the renderer (portability enumeration) and bundled in
  the macOS app
- 32-bit builds: large-address-aware, LZMA packing within a 32-bit address space
- unaligned file reads in the loaders go through loadUnaligned (no UB)
- scripts/build-studio.sh, studio/build_windows.bat [x64|x86|arm64],
  cmake/llvm-mingw.cmake, and a GitHub Actions workflow building every target

Frame Home installs without Studio: frame/install-frame-home.{sh,ps1} and
"Install Frame Home.bat" (packaged as FrameHome-installer.zip).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:03:25 -05:00

33 lines
1.4 KiB
CMake

# Cross-building Frame Studio for Windows from Linux with llvm-mingw (https://github.com/mstorsjo/llvm-mingw):
# cmake -S studio -B build/windows-arm64 -DCMAKE_TOOLCHAIN_FILE=cmake/llvm-mingw.cmake -DWINDOWS_ARCH=aarch64 \
# -DLLVM_MINGW=/path/to/llvm-mingw
# WINDOWS_ARCH: x86_64 (64-bit PCs), i686 (32-bit), aarch64 (Windows on ARM). LLVM_MINGW defaults to $LLVM_MINGW,
# then ~/.local/opt/llvm-mingw.
set(CMAKE_SYSTEM_NAME Windows)
if(NOT WINDOWS_ARCH)
set(WINDOWS_ARCH x86_64)
endif()
set(WINDOWS_ARCH "${WINDOWS_ARCH}" CACHE STRING "x86_64, i686 or aarch64")
if(WINDOWS_ARCH STREQUAL "aarch64")
set(CMAKE_SYSTEM_PROCESSOR ARM64)
elseif(WINDOWS_ARCH STREQUAL "i686")
set(CMAKE_SYSTEM_PROCESSOR X86)
else()
set(CMAKE_SYSTEM_PROCESSOR AMD64)
endif()
if(NOT LLVM_MINGW)
if(DEFINED ENV{LLVM_MINGW})
set(LLVM_MINGW "$ENV{LLVM_MINGW}")
else()
set(LLVM_MINGW "$ENV{HOME}/.local/opt/llvm-mingw")
endif()
endif()
set(LLVM_MINGW "${LLVM_MINGW}" CACHE PATH "llvm-mingw's folder")
set(CMAKE_C_COMPILER "${LLVM_MINGW}/bin/${WINDOWS_ARCH}-w64-mingw32-clang")
set(CMAKE_CXX_COMPILER "${LLVM_MINGW}/bin/${WINDOWS_ARCH}-w64-mingw32-clang++")
set(CMAKE_RC_COMPILER "${LLVM_MINGW}/bin/${WINDOWS_ARCH}-w64-mingw32-windres")
set(CMAKE_FIND_ROOT_PATH "${LLVM_MINGW}/${WINDOWS_ARCH}-w64-mingw32")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)