- 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.
68 lines
2.8 KiB
CMake
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()
|