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