aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmldevtools/CMakeLists.txt
blob: d7db2378ee89107fa8b7d0f2236f758d62f4cdae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# Generated from qmldevtools.pro.

#####################################################################
## QmlDevTools Module:
#####################################################################

qt_add_module(QmlDevTools
    STATIC
    INTERNAL_MODULE
    NO_SYNC_QT
    SOURCES
        ../qml/common/qqmlapiversion_p.h
        ../qml/common/qqmljsdiagnosticmessage_p.h
        ../qml/common/qqmljsfixedpoolarray_p.h
        ../qml/common/qqmljsmemorypool_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/parser/qqmljssourcelocation_p.h
        ../qml/qmldirparser/qqmldirparser.cpp ../qml/qmldirparser/qqmldirparser_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
    LIBRARIES
        Qt::CorePrivate
    PUBLIC_LIBRARIES
        Qt::Core
)

# special case begin
# Need to generate the parser files as in Qml module.
set(_qt_qlalr_flags "--no-debug" "--qt")
qt_process_qlalr(QmlDevTools "${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 QmlDevTools module,
# until we fix the script to handle internal_module to create only one single Private module.
qt_internal_module_info(qml_module "Qml")
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}>
    )
target_include_directories(QmlDevTools PRIVATE ${_qml_dev_tools_private_includes})
target_include_directories(QmlDevToolsPrivate INTERFACE ${_qml_dev_tools_private_includes})
set(_qml_dev_tools_public_includes
        $<INSTALL_INTERFACE:include/${qml_module}>
        $<INSTALL_INTERFACE:include/${qml_module}/${PROJECT_VERSION}>
        $<INSTALL_INTERFACE:include/${qml_module}/${PROJECT_VERSION}/${qml_module}>
    )
target_include_directories(QmlDevTools PRIVATE ${_qml_dev_tools_public_includes})
target_include_directories(QmlDevToolsPrivate INTERFACE ${_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 QmlDevTools 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(QmlDevTools 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_extend_target(QmlDevTools CONDITION GCC AND QT_COMPILER_VERSION_MAJOR STREQUAL 5
    COMPILE_OPTIONS
        -fno-strict-aliasing
)