Fix up documentation integration placeholder

In the future need will need to continue to tie qdoc runs still to
targets, just like with qmake. This change prepares us for that by
ensuring that add_docs takes two parameters and that any re-generated
CMakeLists.txt from now on gets it right.

Change-Id: Id0256dc1e2f2f59f3b4e4ca98f0d10d025d189fb
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
Simon Hausmann 2019-09-18 09:27:22 +02:00 committed by Alexandru Croitor
parent d6ca7306ad
commit cb5fbbde27
2 changed files with 37 additions and 14 deletions

View File

@ -2779,7 +2779,17 @@ function(qt_compute_injection_forwarding_header target)
endfunction() endfunction()
function(add_qt_docs qdocFile) function(add_qt_docs)
if(${ARGC} EQUAL 1)
# Function called from old generated CMakeLists.txt that was missing the target parameter
return()
endif()
if(NOT ${ARGC} EQUAL 2)
message(FATAL_ERROR "add_qt_docs called with the wrong number of arguments. Should be add_qt_docs(target path_to_project.qdocconf).")
return()
endif()
set(target ${ARGV0})
set(doc_project ${ARGV1})
# TODO # TODO
endfunction() endfunction()

View File

@ -2080,7 +2080,7 @@ def write_main_part(cm_fh: typing.IO[str], name: str, typename: str,
cm_fh.write(ignored_keys_report) cm_fh.write(ignored_keys_report)
def write_module(cm_fh: typing.IO[str], scope: Scope, *, def write_module(cm_fh: typing.IO[str], scope: Scope, *,
indent: int = 0) -> None: indent: int = 0) -> str:
module_name = scope.TARGET module_name = scope.TARGET
if not module_name.startswith('Qt'): if not module_name.startswith('Qt'):
print('XXXXXX Module name {} does not start with Qt!'.format(module_name)) print('XXXXXX Module name {} does not start with Qt!'.format(module_name))
@ -2112,7 +2112,8 @@ def write_module(cm_fh: typing.IO[str], scope: Scope, *,
if module_plugin_types: if module_plugin_types:
extra.append('PLUGIN_TYPES {}'.format(" ".join(module_plugin_types))) extra.append('PLUGIN_TYPES {}'.format(" ".join(module_plugin_types)))
write_main_part(cm_fh, module_name[2:], 'Module', 'add_qt_module', scope, target_name = module_name[2:]
write_main_part(cm_fh, target_name, 'Module', 'add_qt_module', scope,
extra_lines=extra, indent=indent, extra_lines=extra, indent=indent,
known_libraries={}, extra_keys=[]) known_libraries={}, extra_keys=[])
@ -2121,9 +2122,11 @@ def write_module(cm_fh: typing.IO[str], scope: Scope, *,
cm_fh.write('\n\n{}qt_create_tracepoints({} {})\n' cm_fh.write('\n\n{}qt_create_tracepoints({} {})\n'
.format(spaces(indent), module_name[2:], ' '.join(tracepoints))) .format(spaces(indent), module_name[2:], ' '.join(tracepoints)))
return target_name
def write_tool(cm_fh: typing.IO[str], scope: Scope, *, def write_tool(cm_fh: typing.IO[str], scope: Scope, *,
indent: int = 0) -> None: indent: int = 0) -> str:
tool_name = scope.TARGET tool_name = scope.TARGET
extra = ['BOOTSTRAP'] if 'force_bootstrap' in scope.get('CONFIG') else [] extra = ['BOOTSTRAP'] if 'force_bootstrap' in scope.get('CONFIG') else []
@ -2132,9 +2135,11 @@ def write_tool(cm_fh: typing.IO[str], scope: Scope, *,
indent=indent, known_libraries={'Qt::Core', }, indent=indent, known_libraries={'Qt::Core', },
extra_lines=extra, extra_keys=['CONFIG']) extra_lines=extra, extra_keys=['CONFIG'])
return tool_name
def write_test(cm_fh: typing.IO[str], scope: Scope, def write_test(cm_fh: typing.IO[str], scope: Scope,
gui: bool = False, *, indent: int = 0) -> None: gui: bool = False, *, indent: int = 0) -> str:
test_name = scope.TARGET test_name = scope.TARGET
assert test_name assert test_name
@ -2154,6 +2159,8 @@ def write_test(cm_fh: typing.IO[str], scope: Scope,
indent=indent, known_libraries=libraries, indent=indent, known_libraries=libraries,
extra_lines=extra, extra_keys=[]) extra_lines=extra, extra_keys=[])
return test_name
def write_binary(cm_fh: typing.IO[str], scope: Scope, def write_binary(cm_fh: typing.IO[str], scope: Scope,
gui: bool = False, *, indent: int = 0) -> None: gui: bool = False, *, indent: int = 0) -> None:
@ -2180,6 +2187,8 @@ def write_binary(cm_fh: typing.IO[str], scope: Scope,
extra_lines=extra, indent=indent, extra_lines=extra, indent=indent,
known_libraries={'Qt::Core', }, extra_keys=['target.path', 'INSTALLS']) known_libraries={'Qt::Core', }, extra_keys=['target.path', 'INSTALLS'])
return binary_name
def write_find_package_section(cm_fh: typing.IO[str], def write_find_package_section(cm_fh: typing.IO[str],
public_libs: typing.List[str], public_libs: typing.List[str],
@ -2202,7 +2211,7 @@ def write_find_package_section(cm_fh: typing.IO[str],
def write_example(cm_fh: typing.IO[str], scope: Scope, def write_example(cm_fh: typing.IO[str], scope: Scope,
gui: bool = False, *, indent: int = 0) -> None: gui: bool = False, *, indent: int = 0) -> str:
binary_name = scope.TARGET binary_name = scope.TARGET
assert binary_name assert binary_name
@ -2242,8 +2251,10 @@ def write_example(cm_fh: typing.IO[str], scope: Scope,
' LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"\n' + ' LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"\n' +
')\n') ')\n')
return binary_name
def write_plugin(cm_fh, scope, *, indent: int = 0):
def write_plugin(cm_fh, scope, *, indent: int = 0) -> str:
plugin_name = scope.TARGET plugin_name = scope.TARGET
assert plugin_name assert plugin_name
@ -2264,6 +2275,7 @@ def write_plugin(cm_fh, scope, *, indent: int = 0):
write_main_part(cm_fh, plugin_name, 'Plugin', plugin_function_name, scope, write_main_part(cm_fh, plugin_name, 'Plugin', plugin_function_name, scope,
indent=indent, extra_lines=extra, known_libraries={}, extra_keys=[]) indent=indent, extra_lines=extra, known_libraries={}, extra_keys=[])
return plugin_name
def write_qml_plugin(cm_fh: typing.IO[str], def write_qml_plugin(cm_fh: typing.IO[str],
@ -2348,34 +2360,35 @@ def handle_app_or_lib(scope: Scope, cm_fh: typing.IO[str], *,
is_lib = scope.TEMPLATE == 'lib' is_lib = scope.TEMPLATE == 'lib'
is_qml_plugin = any('qml_plugin' == s for s in scope.get('_LOADED')) is_qml_plugin = any('qml_plugin' == s for s in scope.get('_LOADED'))
is_plugin = any('qt_plugin' == s for s in scope.get('_LOADED')) or is_qml_plugin or 'plugin' in config is_plugin = any('qt_plugin' == s for s in scope.get('_LOADED')) or is_qml_plugin or 'plugin' in config
target = ""
if is_plugin: if is_plugin:
assert not is_example assert not is_example
write_plugin(cm_fh, scope, indent=indent) target = write_plugin(cm_fh, scope, indent=indent)
elif is_lib or 'qt_module' in scope.get('_LOADED'): elif is_lib or 'qt_module' in scope.get('_LOADED'):
assert not is_example assert not is_example
write_module(cm_fh, scope, indent=indent) target = write_module(cm_fh, scope, indent=indent)
elif 'qt_tool' in scope.get('_LOADED'): elif 'qt_tool' in scope.get('_LOADED'):
assert not is_example assert not is_example
write_tool(cm_fh, scope, indent=indent) target = write_tool(cm_fh, scope, indent=indent)
else: else:
gui = all(val not in config for val in ['console', 'cmdline']) gui = all(val not in config for val in ['console', 'cmdline'])
if 'testcase' in config \ if 'testcase' in config \
or 'testlib' in config \ or 'testlib' in config \
or 'qmltestcase' in config: or 'qmltestcase' in config:
assert not is_example assert not is_example
write_test(cm_fh, scope, gui, indent=indent) target = write_test(cm_fh, scope, gui, indent=indent)
else: else:
if is_example: if is_example:
write_example(cm_fh, scope, gui, indent=indent) target = write_example(cm_fh, scope, gui, indent=indent)
else: else:
write_binary(cm_fh, scope, gui, indent=indent) target = write_binary(cm_fh, scope, gui, indent=indent)
ind = spaces(indent) ind = spaces(indent)
write_source_file_list(cm_fh, scope, '', write_source_file_list(cm_fh, scope, '',
['QMAKE_DOCS',], ['QMAKE_DOCS',],
indent, indent,
header = 'add_qt_docs(\n', header = f"add_qt_docs({target},\n",
footer = ')\n') footer = ')\n')