| 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) |