The Meson Build System
http://mesonbuild.com/
82 lines
2.0 KiB
82 lines
2.0 KiB
if(MESON_PS_LOADED) |
|
return() |
|
endif() |
|
|
|
set(MESON_PS_LOADED ON) |
|
|
|
cmake_policy(PUSH) |
|
cmake_policy(SET CMP0054 NEW) # https://cmake.org/cmake/help/latest/policy/CMP0054.html |
|
|
|
# Dummy macros that have a special meaning in the meson code |
|
macro(meson_ps_execute_delayed_calls) |
|
endmacro() |
|
|
|
macro(meson_ps_reload_vars) |
|
endmacro() |
|
|
|
macro(meson_ps_disabled_function) |
|
message(WARNING "The function '${ARGV0}' is disabled in the context of CMake subprojects.\n" |
|
"This should not be an issue but may lead to compilation errors.") |
|
endmacro() |
|
|
|
# Helper macro to inspect the current CMake state |
|
macro(meson_ps_inspect_vars) |
|
set(MESON_PS_CMAKE_CURRENT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}") |
|
set(MESON_PS_CMAKE_CURRENT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") |
|
meson_ps_execute_delayed_calls() |
|
endmacro() |
|
|
|
|
|
# Override some system functions with custom code and forward the args |
|
# to the original function |
|
macro(add_custom_command) |
|
meson_ps_inspect_vars() |
|
_add_custom_command(${ARGV}) |
|
endmacro() |
|
|
|
macro(add_custom_target) |
|
meson_ps_inspect_vars() |
|
_add_custom_target(${ARGV}) |
|
endmacro() |
|
|
|
macro(set_property) |
|
meson_ps_inspect_vars() |
|
_set_property(${ARGV}) |
|
endmacro() |
|
|
|
function(set_source_files_properties) |
|
set(FILES) |
|
set(I 0) |
|
set(PROPERTIES OFF) |
|
|
|
while(I LESS ARGC) |
|
if(NOT PROPERTIES) |
|
if("${ARGV${I}}" STREQUAL "PROPERTIES") |
|
set(PROPERTIES ON) |
|
else() |
|
list(APPEND FILES "${ARGV${I}}") |
|
endif() |
|
|
|
math(EXPR I "${I} + 1") |
|
else() |
|
set(ID_IDX ${I}) |
|
math(EXPR PROP_IDX "${ID_IDX} + 1") |
|
|
|
set(ID "${ARGV${ID_IDX}}") |
|
set(PROP "${ARGV${PROP_IDX}}") |
|
|
|
set_property(SOURCE ${FILES} PROPERTY "${ID}" "${PROP}") |
|
math(EXPR I "${I} + 2") |
|
endif() |
|
endwhile() |
|
endfunction() |
|
|
|
# Disable some functions that would mess up the CMake meson integration |
|
macro(target_precompile_headers) |
|
meson_ps_disabled_function(target_precompile_headers) |
|
endmacro() |
|
|
|
set(MESON_PS_DELAYED_CALLS add_custom_command;add_custom_target;set_property) |
|
meson_ps_reload_vars() |
|
|
|
cmake_policy(POP)
|
|
|