yams/CMakeLists.txt

74 lines
2.2 KiB
CMake

cmake_minimum_required(VERSION 3.20)
project(yams-bootstrap LANGUAGES NONE)
set(YAMS_PROFILE "Release" CACHE STRING "Build profile forwarded to setup script")
set_property(CACHE YAMS_PROFILE PROPERTY STRINGS Debug Release Profiling Fuzzing)
set(YAMS_BUILD_DIR "" CACHE PATH "Optional YAMS build directory override")
option(YAMS_OFFLINE "Disable network dependency resolution" OFF)
option(YAMS_USE_SYSTEM_DEPS "Skip Conan and use system dependencies" OFF)
find_program(MESON_EXECUTABLE meson REQUIRED)
if(WIN32)
find_program(YAMS_POWERSHELL_EXECUTABLE NAMES pwsh powershell REQUIRED)
set(_setup_cmd
"${YAMS_POWERSHELL_EXECUTABLE}" -NoProfile -ExecutionPolicy Bypass
-File "${CMAKE_SOURCE_DIR}/setup.ps1"
-BuildType "${YAMS_PROFILE}")
if(YAMS_OFFLINE)
list(APPEND _setup_cmd -Offline)
endif()
if(YAMS_USE_SYSTEM_DEPS)
list(APPEND _setup_cmd -SystemDeps)
endif()
else()
find_program(YAMS_BASH_EXECUTABLE bash REQUIRED)
set(_setup_cmd "${YAMS_BASH_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/setup.sh" "${YAMS_PROFILE}")
if(YAMS_OFFLINE)
list(APPEND _setup_cmd --offline)
endif()
if(YAMS_USE_SYSTEM_DEPS)
list(APPEND _setup_cmd --system-deps)
endif()
endif()
if(YAMS_BUILD_DIR)
set(_meson_build_dir "${YAMS_BUILD_DIR}")
else()
if(YAMS_PROFILE STREQUAL "Debug")
set(_meson_build_dir "builddir")
else()
string(TOLOWER "${YAMS_PROFILE}" _profile_lower)
set(_meson_build_dir "build/${_profile_lower}")
endif()
endif()
set(_env_cmd "${CMAKE_COMMAND}" -E env)
if(YAMS_BUILD_DIR)
list(APPEND _env_cmd "YAMS_BUILD_DIR=${YAMS_BUILD_DIR}")
endif()
add_custom_target(yams-configure
COMMAND ${_env_cmd} ${_setup_cmd}
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
USES_TERMINAL
COMMENT "Configuring YAMS via setup script"
)
add_custom_target(yams ALL
COMMAND "${MESON_EXECUTABLE}" compile -C "${_meson_build_dir}"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
DEPENDS yams-configure
USES_TERMINAL
COMMENT "Building YAMS via Meson"
)
add_custom_target(yams-install
COMMAND "${MESON_EXECUTABLE}" install -C "${_meson_build_dir}"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
DEPENDS yams
USES_TERMINAL
COMMENT "Installing YAMS via Meson"
)