replace devtools library with QtQml

qmldevtools was needed when building with qmake, and to avoid circular
dependencies in the tools (before making QtQml minimal).
Now it can be avoided.
This change will make qmldom, qmlformat, qmlimportscanner and qmllint
depend on QtQml (just like the other Qml tools) and not be always
completely static (qmldevtools was always a static library, QtQml
normally isn't).

Change-Id: Idfa0a70e51f0d4999fb9753121c6c228ae69c9bb
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Fawzi Mohamed 2021-07-01 02:17:33 +02:00
parent 3395bed6c7
commit 70dac58bd9
20 changed files with 4 additions and 229 deletions

View File

@ -60,9 +60,8 @@ add_subdirectory(labs)
add_subdirectory(plugins)
if(QT_FEATURE_qml_devtools)
add_subdirectory(qmldevtools)
add_subdirectory(qmldom)
add_subdirectory(qmlcompiler)
add_subdirectory(qmldom)
# Build qmlcachegen now, so that we can use it in src/imports.
if(QT_FEATURE_qml_devtools AND QT_FEATURE_xmlstreamwriter)

View File

@ -28,7 +28,7 @@ qt_internal_add_module(QmlCompilerPrivate
qqmljsregistercontent.cpp qqmljsregistercontent_p.h
PUBLIC_LIBRARIES
Qt::CorePrivate
Qt::QmlDevToolsPrivate
Qt::QmlPrivate
)
#### Keys ignored in scope 1:.:.:qmlcompiler.pro:<TRUE>:

View File

@ -1,135 +0,0 @@
# Generated from qmldevtools.pro.
#####################################################################
## QmlDevToolsPrivate Module:
#####################################################################
qt_internal_add_module(QmlDevToolsPrivate
STATIC
INTERNAL_MODULE
NO_SYNC_QT
SOURCES
../qml/common/qqmljsdiagnosticmessage_p.h
../qml/common/qqmljsfixedpoolarray_p.h
../qml/common/qqmljsmemorypool_p.h
../qml/common/qqmljssourcelocation_p.h
../qml/common/qv4alloca_p.h
../qml/common/qv4calldata_p.h
../qml/common/qv4compileddata_p.h
../qml/common/qv4staticvalue_p.h
../qml/common/qv4stringtoarrayindex_p.h
../qml/compiler/qqmlirbuilder.cpp ../qml/compiler/qqmlirbuilder_p.h
../qml/compiler/qv4bytecodegenerator.cpp ../qml/compiler/qv4bytecodegenerator_p.h
../qml/compiler/qv4bytecodehandler.cpp ../qml/compiler/qv4bytecodehandler_p.h
../qml/compiler/qv4codegen.cpp ../qml/compiler/qv4codegen_p.h
../qml/compiler/qv4compiler.cpp ../qml/compiler/qv4compiler_p.h
../qml/compiler/qv4compilercontext.cpp ../qml/compiler/qv4compilercontext_p.h
../qml/compiler/qv4compilercontrolflow_p.h
../qml/compiler/qv4compilerglobal_p.h
../qml/compiler/qv4compilerscanfunctions.cpp ../qml/compiler/qv4compilerscanfunctions_p.h
../qml/compiler/qv4instr_moth.cpp ../qml/compiler/qv4instr_moth_p.h
../qml/compiler/qv4util_p.h
../qml/parser/qqmljsast.cpp ../qml/parser/qqmljsast_p.h
../qml/parser/qqmljsastfwd_p.h
../qml/parser/qqmljsastvisitor.cpp ../qml/parser/qqmljsastvisitor_p.h
../qml/parser/qqmljsengine_p.cpp ../qml/parser/qqmljsengine_p.h
../qml/parser/qqmljsglobal_p.h
../qml/parser/qqmljskeywords_p.h
../qml/parser/qqmljslexer.cpp ../qml/parser/qqmljslexer_p.h
../qml/qmldirparser/qqmldirparser.cpp ../qml/qmldirparser/qqmldirparser_p.h
../qml/qmldirparser/qqmlimportresolver.cpp ../qml/qmldirparser/qqmlimportresolver_p.h
INCLUDE_DIRECTORIES
${CMAKE_CURRENT_BINARY_DIR}/../qml
${CMAKE_CURRENT_BINARY_DIR}/../qml/compiler
${CMAKE_CURRENT_BINARY_DIR}/../qml/qmldirparser
../qml/compiler
../qml/qmldirparser
PUBLIC_LIBRARIES
Qt::CorePrivate
)
# special case begin
# Need to generate the parser files as in Qml module.
set(_qt_qlalr_flags "--no-debug" "--qt")
qt_process_qlalr(QmlDevToolsPrivate "${CMAKE_CURRENT_SOURCE_DIR}/../qml/parser/qqmljs.g" "${_qt_qlalr_flags}")
# Need to propagate some of the include directories from Qml via QmlDevToolsPrivate
# for other tools, and also for the main QmlDevToolsPrivate module,
# until we fix the script to handle internal_module to create only one single Private module.
qt_internal_module_info(qml_module "Qml")
if(QT_FEATURE_framework)
get_target_property(_qml_fw_headers_dir Qt::Qml LIBRARY_OUTPUT_DIRECTORY)
string(APPEND _qml_fw_headers_dir /${qml_module}.framework/Versions/A/Headers)
set(_qml_dev_tools_private_includes
$<BUILD_INTERFACE:${_qml_fw_headers_dir}>
$<BUILD_INTERFACE:${_qml_fw_headers_dir}/${PROJECT_VERSION}>
$<BUILD_INTERFACE:${_qml_fw_headers_dir}/${PROJECT_VERSION}/${qml_module}>
)
else()
set(_qml_dev_tools_private_includes
$<BUILD_INTERFACE:${qml_module_include_dir}>
$<BUILD_INTERFACE:${qml_module_repo_include_dir}>
$<BUILD_INTERFACE:${qml_module_include_dir}/${PROJECT_VERSION}>
$<BUILD_INTERFACE:${qml_module_include_dir}/${PROJECT_VERSION}/${qml_module}>
)
endif()
target_include_directories(QmlDevToolsPrivate PUBLIC ${_qml_dev_tools_private_includes})
if(QT_FEATURE_framework)
set(_qml_fw_headers_dir lib/${qml_module}.framework/Headers)
set(_qml_dev_tools_public_includes
$<INSTALL_INTERFACE:${_qml_fw_headers_dir}>
$<INSTALL_INTERFACE:${_qml_fw_headers_dir}/${PROJECT_VERSION}>
$<INSTALL_INTERFACE:${_qml_fw_headers_dir}/${PROJECT_VERSION}/${qml_module}>
)
else()
set(_qml_dev_tools_public_includes
$<INSTALL_INTERFACE:${INSTALL_INCLUDEDIR}/${qml_module}>
$<INSTALL_INTERFACE:${INSTALL_INCLUDEDIR}/${qml_module}/${PROJECT_VERSION}>
$<INSTALL_INTERFACE:${INSTALL_INCLUDEDIR}/${qml_module}/${PROJECT_VERSION}/${qml_module}>
)
endif()
target_include_directories(QmlDevToolsPrivate PUBLIC ${_qml_dev_tools_public_includes})
# We build the qlalr sources into qmldevtools, so there's no link-time
# dependency to QtQml. However we also include files in QmlDevToolsPrivate such
# as qqmlirbuilder.cpp that include <private/qqmljsgrammar_p.h> that
# originate from QtQml. That particular header was created at cmake time
# via syncqt, but it's just a forwarding header that in turn includes
# the generated file. That generated file is created when building
# QtQml, so we must depend on it:
add_dependencies(QmlDevToolsPrivate Qml)
# special case end
#### Keys ignored in scope 1:.:.:qmldevtools.pro:<TRUE>:
# MODULE_INCNAME = "QtQml"
# _OPTION = "host_build"
## Scopes:
#####################################################################
#### Keys ignored in scope 2:.:.:qmldevtools.pro:ICC:
# WERROR = "-ww2415"
#### Keys ignored in scope 3:.:.:qmldevtools.pro:CLANG AND ( (QT_CLANG_MAJOR_VERSION GREATER 3) OR (QT_CLANG_MINOR_VERSION GREATER 3) ):
# WERROR = "-Wno-error=unused-const-variable"
#### Keys ignored in scope 5:.:../qml/common:../qml/common/common.pri:NOT build_pass:
# compile_hash_contents = "// Generated file, DO NOT EDIT" "$${LITERAL_HASH}define QML_COMPILE_HASH "$$QML_COMPILE_HASH"" "$${LITERAL_HASH}define QML_COMPILE_HASH_LENGTH $$str_size($$QML_COMPILE_HASH)"
# tag = <EMPTY>
# tagFile = "$$PWD/../../.tag"
#### Keys ignored in scope 6:.:../qml/common:../qml/common/common.pri:EXISTS _ss_tagFile:
# QMAKE_INTERNAL_INCLUDED_FILES = "$$tagFile"
# tag = "$$cat($$tagFile, singleline)"
#### Keys ignored in scope 7:.:../qml/common:../qml/common/common.pri:NOT tag___equals____ss_{LITERAL_DOLLAR}Format AND %H_ss_{LITERAL_DOLLAR}:
# QML_COMPILE_HASH = "$$tag"
#### Keys ignored in scope 9:.:../qml/common:../qml/common/common.pri:EXISTS _ss_PWD/../../.git:
# QML_COMPILE_HASH = "$$commit"
# commit = "$$system(git rev-parse HEAD)"
qt_internal_extend_target(QmlDevToolsPrivate CONDITION GCC AND QT_COMPILER_VERSION_MAJOR STREQUAL 5
COMPILE_OPTIONS
-fno-strict-aliasing
)

View File

@ -36,7 +36,7 @@ qt_internal_add_module(QmlDomPrivate
QMLDOM_LIBRARY
PUBLIC_LIBRARIES
Qt::CorePrivate
Qt::QmlDevToolsPrivate
Qt::QmlPrivate
)
#### Keys ignored in scope 1:.:.:qmldom.pro:<TRUE>:

View File

@ -6,7 +6,6 @@ if(TARGET Qt::Quick)
add_subdirectory(quicktest)
endif()
add_subdirectory(core)
add_subdirectory(qmldevtools)
add_subdirectory(cmake)
add_subdirectory(toolsupport)
if(NOT UIKIT)

View File

@ -1,5 +0,0 @@
# Generated from qmldevtools.pro.
if(QT_FEATURE_private_tests)
add_subdirectory(compile)
endif()

View File

@ -1,30 +0,0 @@
# Generated from compile.pro.
#####################################################################
## tst_compile Binary:
#####################################################################
qt_internal_add_executable(tst_compile
GUI
SOURCES
tst_compile.cpp
PUBLIC_LIBRARIES
Qt::Gui
Qt::QmlDevToolsPrivate
)
#### Keys ignored in scope 1:.:.:compile.pro:<TRUE>:
# _OPTION = "host_build"
## Scopes:
#####################################################################
qt_internal_extend_target(tst_compile CONDITION force_bootstrap
PUBLIC_LIBRARIES
Qt::BootstrapPrivate
)
qt_internal_extend_target(tst_compile CONDITION NOT force_bootstrap
PUBLIC_LIBRARIES
Qt::Core
)

View File

@ -1,42 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:GPL-EXCEPT$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <private/qqmljsengine_p.h>
#include <private/qqmljslexer_p.h>
#include <private/qqmljsparser_p.h>
#include <private/qqmljsastvisitor_p.h>
#include <private/qqmljsast_p.h>
#include <private/qqmlirbuilder_p.h>
#include <private/qv4codegen_p.h>
int main()
{
// Nothing - this test just makes sure that the QmlDevTools headers
// are present, and that we can link against the library.
return 0;
}

View File

@ -25,7 +25,6 @@ qt_internal_add_test(tst_dom_all
QT_QMLTEST_DATADIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}/../domdata\\\"
PUBLIC_LIBRARIES
Qt::Core
Qt::QmlDevToolsPrivate
Qt::QmlDomPrivate
Qt::Test
TESTDATA ${test_data}

View File

@ -16,7 +16,6 @@ qt_internal_add_test(tst_qmldomitem
QT_DEPRECATED_WARNINGS
QT_QMLTEST_DATADIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}/../domdata\\\"
PUBLIC_LIBRARIES
Qt::QmlDevToolsPrivate
Qt::QmlDomPrivate
Qt::Test
TESTDATA ${test_data}

View File

@ -10,6 +10,5 @@ qt_internal_add_test(tst_qmldomerrormessage
DEFINES
QT_DEPRECATED_WARNINGS
PUBLIC_LIBRARIES
Qt::QmlDevToolsPrivate
Qt::QmlDomPrivate
)

View File

@ -17,7 +17,6 @@ qt_internal_add_test(tst_dommerging
QT_QMLTEST_DATADIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}/../domdata\\\"
PUBLIC_LIBRARIES
Qt::Core
Qt::QmlDevToolsPrivate
Qt::QmlDomPrivate
Qt::Test
TESTDATA ${test_data}

View File

@ -10,6 +10,5 @@ qt_internal_add_test(tst_qmldompath
DEFINES
QT_DEPRECATED_WARNINGS
PUBLIC_LIBRARIES
Qt::QmlDevToolsPrivate
Qt::QmlDomPrivate
)

View File

@ -15,7 +15,6 @@ qt_internal_add_test(tst_reformatter
QT_QMLTEST_DATADIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}/../domdata\\\"
PUBLIC_LIBRARIES
Qt::Core
Qt::QmlDevToolsPrivate
Qt::QmlDomPrivate
Qt::Test
TESTDATA ${test_data}

View File

@ -12,6 +12,5 @@ qt_internal_add_test(tst_qmldomstringdumper
INCLUDE_DIRECTORIES
../../../../src/qmldom
PUBLIC_LIBRARIES
Qt::QmlDevToolsPrivate
Qt::QmlDomPrivate
)

View File

@ -16,7 +16,6 @@ qt_internal_add_tool(${target_name}
QT_NO_CAST_TO_ASCII
PUBLIC_LIBRARIES
Qt::QmlCompilerPrivate
Qt::QmlDevToolsPrivate
)
#### Keys ignored in scope 1:.:.:qmlcachegen.pro:<TRUE>:

View File

@ -10,6 +10,5 @@ qt_internal_add_tool(${target_name}
qmldomtool.cpp
PUBLIC_LIBRARIES
Qt::CorePrivate
Qt::QmlDevToolsPrivate
Qt::QmlDomPrivate
)

View File

@ -12,7 +12,6 @@ qt_internal_add_tool(${target_name}
qmlformat.cpp
PUBLIC_LIBRARIES
Qt::Core
Qt::QmlDevToolsPrivate
Qt::QmlDomPrivate
)

View File

@ -16,7 +16,7 @@ qt_internal_add_tool(${target_name}
QT_NO_CAST_TO_ASCII
PUBLIC_LIBRARIES
Qt::QmlCompilerPrivate
Qt::QmlDevToolsPrivate
Qt::QmlPrivate
)
# special case begin

View File

@ -17,7 +17,6 @@ qt_internal_add_tool(${target_name}
PUBLIC_LIBRARIES
Qt::CorePrivate
Qt::QmlCompilerPrivate
Qt::QmlDevToolsPrivate
)
#### Keys ignored in scope 1:.:.:qmllint.pro:<TRUE>: