Files
Ange-Marie MAURIN - A2M Systèmes da0d31385b build: arborescence bin/<plateforme>/<type> et build unifié (ADR 0010)
- platform/layout : racine sequa-root.json, chemins des composants, arguments et chemins en UTF-8.
- Règles install() : bin/windows-x64/{debug,release,asan}/ (core, render, studio + ui, engines).
- Le Core trouve sequa-render et les adaptateurs depuis la racine (--sequa-root, passé par
  Studio host à sa copie fantôme) : plus de render-unavailable depuis le panneau Rendu.
- L'adaptateur Godot cherche Godot et son projet à côté de lui (surcharge par --adapter-options) ;
  template_release pour le type release. Godot hébergé dans les presets debug et release.
- scripts/build-all.ps1 : Godot, C++, interface, arrêt des processus du dossier visé, install ;
  check.ps1 l'appelle (modification de l'ADR 0004).
- docs/installation/ : compiler, lancer, installer et désinstaller par plateforme.
2026-11-07 15:50:37 +01:00

68 lines
2.8 KiB
CMake

# SPDX-License-Identifier: MPL-2.0
#
# Arborescence installée (ADR 0010) : bin/<plateforme>/<type>/ en développement, même
# contenu dans le dossier d'installation. `cmake --install <build>` la remplit.
# Plateforme : système et processeur visés (windows-x64, linux-arm64…).
if(WIN32)
set(_sequa_os "windows")
elseif(APPLE)
set(_sequa_os "macos")
else()
string(TOLOWER "${CMAKE_SYSTEM_NAME}" _sequa_os)
endif()
if(MSVC)
set(_sequa_cpu "${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}")
else()
set(_sequa_cpu "${CMAKE_SYSTEM_PROCESSOR}")
endif()
string(TOLOWER "${_sequa_cpu}" _sequa_cpu)
if(_sequa_cpu MATCHES "^(amd64|x86_64|x64)$")
set(_sequa_cpu "x64")
elseif(_sequa_cpu MATCHES "^(arm64|aarch64)$")
set(_sequa_cpu "arm64")
endif()
set(SEQUA_PLATFORM "${_sequa_os}-${_sequa_cpu}" CACHE STRING "Plateforme de bin/<plateforme>/<type>")
# Type : fixé par le preset (debug, release, asan) ; à défaut, d'après CMAKE_BUILD_TYPE.
if(CMAKE_BUILD_TYPE MATCHES "^(Release|RelWithDebInfo|MinSizeRel)$")
set(_sequa_default_type "release")
else()
set(_sequa_default_type "debug")
endif()
set(SEQUA_BIN_TYPE "${_sequa_default_type}" CACHE STRING "Type de bin/<plateforme>/<type>")
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/bin/${SEQUA_PLATFORM}/${SEQUA_BIN_TYPE}"
CACHE PATH "Racine de l'arborescence installée" FORCE)
endif()
message(STATUS "SEQUA : installation dans ${CMAKE_INSTALL_PREFIX}")
# Repère de la racine (sequa::platform::find_root).
configure_file("${CMAKE_CURRENT_LIST_DIR}/sequa-root.json.in" "${PROJECT_BINARY_DIR}/sequa-root.json" @ONLY)
install(FILES "${PROJECT_BINARY_DIR}/sequa-root.json" DESTINATION .)
# Bibliothèques d'exécution qu'un exécutable lancé hors de l'invite de Visual Studio ne
# trouverait pas : ASan de MSVC, à côté de chaque exécutable.
set(SEQUA_RUNTIME_FILES "")
if(MSVC AND SEQUA_SANITIZERS MATCHES "address")
get_filename_component(_sequa_cl_dir "${CMAKE_CXX_COMPILER}" DIRECTORY)
file(GLOB SEQUA_RUNTIME_FILES "${_sequa_cl_dir}/clang_rt.asan_dynamic-*.dll")
if(NOT SEQUA_RUNTIME_FILES)
message(WARNING "Bibliothèque ASan introuvable dans ${_sequa_cl_dir} : bin/ ne se lancera que depuis l'invite de Visual Studio")
endif()
endif()
# Installe un exécutable dans <destination>/ avec les bibliothèques d'exécution.
function(sequa_install_executable target destination)
install(TARGETS ${target} RUNTIME DESTINATION ${destination})
if(SEQUA_RUNTIME_FILES)
install(FILES ${SEQUA_RUNTIME_FILES} DESTINATION ${destination})
endif()
endfunction()
# Installe une bibliothèque d'adaptateur (MODULE) dans engines/<moteur>/.
function(sequa_install_adapter target engine)
install(TARGETS ${target} LIBRARY DESTINATION engines/${engine} RUNTIME DESTINATION engines/${engine})
endfunction()