Files
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

66 lines
2.5 KiB
CMake

project(acl_validate_includes CXX)
# The goal of this project is to generate a single cpp file for every public header
# This will allow us to detect if we are missing an include file during development
include_directories("${PROJECT_SOURCE_DIR}/../../includes")
include_directories("${PROJECT_SOURCE_DIR}/../../external/rtm/includes")
include_directories("${PROJECT_SOURCE_DIR}/../../external/sjson-cpp/includes")
# Grab all of our public header files
file(GLOB ALL_PUBLIC_HEADER_FILES LIST_DIRECTORIES false
${PROJECT_SOURCE_DIR}/../../includes/acl/*.h
${PROJECT_SOURCE_DIR}/../../includes/acl/compression/*.h
${PROJECT_SOURCE_DIR}/../../includes/acl/core/*.h
${PROJECT_SOURCE_DIR}/../../includes/acl/decompression/*.h
${PROJECT_SOURCE_DIR}/../../includes/acl/decompression/database/*.h
${PROJECT_SOURCE_DIR}/../../includes/acl/io/*.h
${PROJECT_SOURCE_DIR}/../../includes/acl/math/*.h)
# Generate the single include cpp files
foreach(HEADER_FILE ${ALL_PUBLIC_HEADER_FILES})
# Find the root include directory position
string(FIND ${HEADER_FILE} "acl" HEADER_FILE_ACL_POS REVERSE)
# Strip the root of the include path
string(SUBSTRING ${HEADER_FILE} ${HEADER_FILE_ACL_POS} -1 HEADER_INCLUDE_PATH)
# Sanitize our filename so we can generate a unique cpp file for it
string(REPLACE "/" "_" HEADER_SANITIZED_FILENAME ${HEADER_INCLUDE_PATH})
string(REPLACE "\\" "_" HEADER_SANITIZED_FILENAME ${HEADER_SANITIZED_FILENAME})
# Skip deprecated headers
string(FIND ${HEADER_SANITIZED_FILENAME} "acl_core_utils.h" HEADER_IS_DEPRECATED)
if(NOT ${HEADER_IS_DEPRECATED} EQUAL -1)
continue()
endif()
string(FIND ${HEADER_SANITIZED_FILENAME} "acl_core_floating_point_exceptions.h" HEADER_IS_DEPRECATED)
if(NOT ${HEADER_IS_DEPRECATED} EQUAL -1)
continue()
endif()
# Configure our cpp file content
set(ACL_SINGLE_INCLUDE_NAME ${HEADER_INCLUDE_PATH})
# Generate our single include cpp file
configure_file(${PROJECT_SOURCE_DIR}/single_include.cpp.in single_include_${HEADER_SANITIZED_FILENAME}.cpp @ONLY)
endforeach(HEADER_FILE)
# Grab all of our main source files
file(GLOB_RECURSE ALL_MAIN_SOURCE_FILES LIST_DIRECTORIES false
${PROJECT_SOURCE_DIR}/*.cpp
${PROJECT_BINARY_DIR}/*.cpp)
create_source_groups("${ALL_MAIN_SOURCE_FILES}" ${PROJECT_SOURCE_DIR})
add_library(${PROJECT_NAME} STATIC ${ALL_MAIN_SOURCE_FILES})
setup_default_compiler_flags(${PROJECT_NAME})
if(MSVC)
if(CPU_INSTRUCTION_SET MATCHES "arm64")
# Exceptions are not enabled by default for ARM targets, enable them
target_compile_options(${PROJECT_NAME} PRIVATE /EHsc)
endif()
endif()