mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-04-03 12:03:50 +00:00
Replace the single Ubuntu-based container build with a dedicated Dockerfile, build script, and launcher for each target platform. Infrastructure: - Add .dockerignore to minimize Docker build context - Add container/builder-linux.Dockerfile (Ubuntu 24.04, GCC, native build) - Add container/builder-macos.Dockerfile (multi-stage: SDK fetcher + osxcross/Clang 18) - Add container/builder-windows.Dockerfile (LLVM-MinGW 20240619, vcpkg) - Add container/macos/sdk-fetcher.py (auto-fetch macOS SDK from Apple catalog) - Add container/macos/osxcross-toolchain.cmake (auto-detecting CMake toolchain) - Add container/macos/triplets/arm64-osx-cross.cmake - Add container/macos/triplets/x64-osx-cross.cmake - Remove container/builder-ubuntu.Dockerfile (replaced by per-platform Dockerfiles) - Remove container/build-in-container.sh and container/build-wowee.sh (replaced) Build scripts (run inside containers): - Add container/build-linux.sh (tar copy, FidelityFX clone, cmake/ninja) - Add container/build-macos.sh (arch detection, vcpkg triplet, cross-compile) - Add container/build-windows.sh (Vulkan import lib via dlltool, cross-compile) Launcher scripts (run on host): - Add container/run-linux.sh, run-macos.sh, run-windows.sh (bash) - Add container/run-linux.ps1, run-macos.ps1, run-windows.ps1 (PowerShell) Documentation: - Add container/README.md (quick start, options, file structure, troubleshooting) - Add container/FLOW.md (comprehensive build flow for each platform) CMake changes: - Add macOS cross-compile support (VulkanHeaders, -undefined dynamic_lookup) - Add LLVM-MinGW/Windows cross-compile support - Detect osxcross toolchain and vcpkg triplets Other: - Update vcpkg.json with ffmpeg feature flags - Update resources/wowee.rc version string
62 lines
3.3 KiB
CMake
62 lines
3.3 KiB
CMake
# osxcross CMake toolchain file for cross-compiling to macOS from Linux.
|
|
# Used by vcpkg triplets and the WoWee build.
|
|
# Auto-detects SDK, darwin version, and arch from the osxcross installation
|
|
# and the VCPKG_OSX_ARCHITECTURES / CMAKE_OSX_ARCHITECTURES setting.
|
|
|
|
set(CMAKE_SYSTEM_NAME Darwin)
|
|
|
|
# ── osxcross paths ──────────────────────────────────────────────────
|
|
set(_target_dir "/opt/osxcross/target")
|
|
if(DEFINED ENV{OSXCROSS_TARGET_DIR})
|
|
set(_target_dir "$ENV{OSXCROSS_TARGET_DIR}")
|
|
endif()
|
|
|
|
# Auto-detect SDK (pick the newest if several are present)
|
|
file(GLOB _sdk_dirs "${_target_dir}/SDK/MacOSX*.sdk")
|
|
list(SORT _sdk_dirs)
|
|
list(GET _sdk_dirs -1 _sdk_dir)
|
|
set(CMAKE_OSX_SYSROOT "${_sdk_dir}" CACHE PATH "" FORCE)
|
|
|
|
# Deployment target
|
|
set(CMAKE_OSX_DEPLOYMENT_TARGET "13.0" CACHE STRING "" FORCE)
|
|
if(DEFINED ENV{MACOSX_DEPLOYMENT_TARGET})
|
|
set(CMAKE_OSX_DEPLOYMENT_TARGET "$ENV{MACOSX_DEPLOYMENT_TARGET}" CACHE STRING "" FORCE)
|
|
endif()
|
|
|
|
# ── auto-detect darwin version from compiler names ──────────────────
|
|
file(GLOB _darwin_compilers "${_target_dir}/bin/*-apple-darwin*-clang")
|
|
list(GET _darwin_compilers 0 _first_compiler)
|
|
get_filename_component(_compiler_name "${_first_compiler}" NAME)
|
|
string(REGEX MATCH "apple-darwin[0-9.]+" _darwin_part "${_compiler_name}")
|
|
|
|
# ── pick architecture ───────────────────────────────────────────────
|
|
# CMAKE_OSX_ARCHITECTURES is set by vcpkg from VCPKG_OSX_ARCHITECTURES
|
|
if(CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
|
|
set(_arch "arm64")
|
|
elseif(CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64")
|
|
set(_arch "x86_64")
|
|
elseif(DEFINED ENV{OSXCROSS_ARCH})
|
|
set(_arch "$ENV{OSXCROSS_ARCH}")
|
|
else()
|
|
set(_arch "arm64")
|
|
endif()
|
|
|
|
set(_host "${_arch}-${_darwin_part}")
|
|
set(CMAKE_SYSTEM_PROCESSOR "${_arch}" CACHE STRING "" FORCE)
|
|
|
|
# ── compilers ───────────────────────────────────────────────────────
|
|
set(CMAKE_C_COMPILER "${_target_dir}/bin/${_host}-clang" CACHE FILEPATH "" FORCE)
|
|
set(CMAKE_CXX_COMPILER "${_target_dir}/bin/${_host}-clang++" CACHE FILEPATH "" FORCE)
|
|
|
|
# ── tools ───────────────────────────────────────────────────────────
|
|
set(CMAKE_AR "${_target_dir}/bin/${_host}-ar" CACHE FILEPATH "" FORCE)
|
|
set(CMAKE_RANLIB "${_target_dir}/bin/${_host}-ranlib" CACHE FILEPATH "" FORCE)
|
|
set(CMAKE_STRIP "${_target_dir}/bin/${_host}-strip" CACHE FILEPATH "" FORCE)
|
|
set(CMAKE_INSTALL_NAME_TOOL "${_target_dir}/bin/${_host}-install_name_tool" CACHE FILEPATH "" FORCE)
|
|
|
|
# ── search paths ────────────────────────────────────────────────────
|
|
set(CMAKE_FIND_ROOT_PATH "${_sdk_dir}" "${_target_dir}")
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|