Qt6DBusMacros: Fix regression after moc filename changes
This fixes an regression after commit aa99bf532d,
where the moc filename was changed. It does not check if basename contains a
relative path.
This checks if basename contains a relative path. In that case, make sure to
correctly set the path in the `_moc` variable.
Fixes: QTBUG-106571
Change-Id: I88ec156d7c666b626d85018e9cde0dc397051035
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
bb10
parent
545e8122a7
commit
1c2f055074
|
|
@ -6,11 +6,17 @@ include(MacroAddFileDependencies)
|
|||
|
||||
include(CMakeParseArguments)
|
||||
|
||||
function(qt6_add_dbus_interface _sources _interface _basename)
|
||||
function(qt6_add_dbus_interface _sources _interface _relativename)
|
||||
get_filename_component(_infile ${_interface} ABSOLUTE)
|
||||
set(_header "${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h")
|
||||
set(_impl "${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp")
|
||||
set(_moc "${CMAKE_CURRENT_BINARY_DIR}/moc_${_basename}.cpp")
|
||||
get_filename_component(_basepath ${_relativename} DIRECTORY)
|
||||
get_filename_component(_basename ${_relativename} NAME)
|
||||
set(_header "${CMAKE_CURRENT_BINARY_DIR}/${_relativename}.h")
|
||||
set(_impl "${CMAKE_CURRENT_BINARY_DIR}/${_relativename}.cpp")
|
||||
if(_basepath)
|
||||
set(_moc "${CMAKE_CURRENT_BINARY_DIR}/${_basepath}/moc_${_basename}.cpp")
|
||||
else()
|
||||
set(_moc "${CMAKE_CURRENT_BINARY_DIR}/moc_${_basename}.cpp")
|
||||
endif()
|
||||
|
||||
get_source_file_property(_nonamespace ${_interface} NO_NAMESPACE)
|
||||
if(_nonamespace)
|
||||
|
|
@ -30,7 +36,7 @@ function(qt6_add_dbus_interface _sources _interface _basename)
|
|||
endif()
|
||||
|
||||
add_custom_command(OUTPUT "${_impl}" "${_header}"
|
||||
COMMAND ${QT_CMAKE_EXPORT_NAMESPACE}::qdbusxml2cpp ${_params} -p ${_basename} ${_infile}
|
||||
COMMAND ${QT_CMAKE_EXPORT_NAMESPACE}::qdbusxml2cpp ${_params} -p ${_relativename} ${_infile}
|
||||
DEPENDS ${_infile} ${QT_CMAKE_EXPORT_NAMESPACE}::qdbuscpp2xml
|
||||
VERBATIM
|
||||
)
|
||||
|
|
@ -52,14 +58,14 @@ if(NOT QT_NO_CREATE_VERSIONLESS_FUNCTIONS)
|
|||
# arguments, so we can preserve them exactly. As an added bonus, if the
|
||||
# caller doesn't provide enough arguments, they will get an error message
|
||||
# for their call site instead of here in the wrapper.
|
||||
function(qt_add_dbus_interface sources interface basename)
|
||||
function(qt_add_dbus_interface sources interface relativename)
|
||||
if(ARGC GREATER 3)
|
||||
message(FATAL_ERROR "Unexpected arguments: ${ARGN}")
|
||||
endif()
|
||||
if(QT_DEFAULT_MAJOR_VERSION EQUAL 5)
|
||||
qt5_add_dbus_interface("${sources}" "${interface}" "${basename}")
|
||||
qt5_add_dbus_interface("${sources}" "${interface}" "${relativename}")
|
||||
elseif(QT_DEFAULT_MAJOR_VERSION EQUAL 6)
|
||||
qt6_add_dbus_interface("${sources}" "${interface}" "${basename}")
|
||||
qt6_add_dbus_interface("${sources}" "${interface}" "${relativename}")
|
||||
endif()
|
||||
set("${sources}" "${${sources}}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
|
@ -136,7 +142,7 @@ if(NOT QT_NO_CREATE_VERSIONLESS_FUNCTIONS)
|
|||
endif()
|
||||
|
||||
|
||||
function(qt6_add_dbus_adaptor _sources _xml_file _include) # _optionalParentClass _optionalBasename _optionalClassName)
|
||||
function(qt6_add_dbus_adaptor _sources _xml_file _include) # _optionalParentClass _optionalRelativename _optionalClassName)
|
||||
get_filename_component(_infile ${_xml_file} ABSOLUTE)
|
||||
|
||||
set(_optionalParentClass "${ARGV3}")
|
||||
|
|
@ -145,28 +151,34 @@ function(qt6_add_dbus_adaptor _sources _xml_file _include) # _optionalParentClas
|
|||
set(_parentClass "${_optionalParentClass}")
|
||||
endif()
|
||||
|
||||
set(_optionalBasename "${ARGV4}")
|
||||
if(_optionalBasename)
|
||||
set(_basename ${_optionalBasename} )
|
||||
set(_optionalRelativename "${ARGV4}")
|
||||
if(_optionalRelativename)
|
||||
set(_relativename ${_optionalRelativename})
|
||||
else()
|
||||
string(REGEX REPLACE "(.*[/\\.])?([^\\.]+)\\.xml" "\\2adaptor" _basename ${_infile})
|
||||
string(TOLOWER ${_basename} _basename)
|
||||
string(REGEX REPLACE "(.*[/\\.])?([^\\.]+)\\.xml" "\\2adaptor" _relativename ${_infile})
|
||||
string(TOLOWER ${_relativename} _relativename)
|
||||
endif()
|
||||
get_filename_component(_basepath ${_relativename} DIRECTORY)
|
||||
get_filename_component(_basename ${_relativename} NAME)
|
||||
|
||||
set(_optionalClassName "${ARGV5}")
|
||||
set(_header "${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h")
|
||||
set(_impl "${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp")
|
||||
set(_moc "${CMAKE_CURRENT_BINARY_DIR}/moc_${_basename}.cpp")
|
||||
set(_header "${CMAKE_CURRENT_BINARY_DIR}/${_relativename}.h")
|
||||
set(_impl "${CMAKE_CURRENT_BINARY_DIR}/${_relativename}.cpp")
|
||||
if(_basepath)
|
||||
set(_moc "${CMAKE_CURRENT_BINARY_DIR}/${_basepath}/moc_${_basename}.cpp")
|
||||
else()
|
||||
set(_moc "${CMAKE_CURRENT_BINARY_DIR}/moc_${_basename}.cpp")
|
||||
endif()
|
||||
|
||||
if(_optionalClassName)
|
||||
add_custom_command(OUTPUT "${_impl}" "${_header}"
|
||||
COMMAND ${QT_CMAKE_EXPORT_NAMESPACE}::qdbusxml2cpp -m -a ${_basename} -c ${_optionalClassName} -i ${_include} ${_parentClassOption} ${_parentClass} ${_infile}
|
||||
COMMAND ${QT_CMAKE_EXPORT_NAMESPACE}::qdbusxml2cpp -m -a ${_relativename} -c ${_optionalClassName} -i ${_include} ${_parentClassOption} ${_parentClass} ${_infile}
|
||||
DEPENDS ${_infile} ${QT_CMAKE_EXPORT_NAMESPACE}::qdbuscpp2xml
|
||||
VERBATIM
|
||||
)
|
||||
else()
|
||||
add_custom_command(OUTPUT "${_impl}" "${_header}"
|
||||
COMMAND ${QT_CMAKE_EXPORT_NAMESPACE}::qdbusxml2cpp -m -a ${_basename} -i ${_include} ${_parentClassOption} ${_parentClass} ${_infile}
|
||||
COMMAND ${QT_CMAKE_EXPORT_NAMESPACE}::qdbusxml2cpp -m -a ${_relativename} -i ${_include} ${_parentClassOption} ${_parentClass} ${_infile}
|
||||
DEPENDS ${_infile} ${QT_CMAKE_EXPORT_NAMESPACE}::qdbuscpp2xml
|
||||
VERBATIM
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in New Issue