aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmldevtools/CMakeLists.txt
blob: 439b89dcec3a06ae2c364cdf88266d8207d703f5 (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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# 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
    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(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")
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/${PROJECT_VERSION_MAJOR}/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(QmlDevTools PRIVATE ${_qml_dev_tools_private_includes})
target_include_directories(QmlDevToolsPrivate INTERFACE ${_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:include/${qml_module}>
            $<INSTALL_INTERFACE:include/${qml_module}/${PROJECT_VERSION}>
            $<INSTALL_INTERFACE:include/${qml_module}/${PROJECT_VERSION}/${qml_module}>
        )
endif()
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
)