518 lines
13 KiB
CMake
518 lines
13 KiB
CMake
# Copyright (C) 2022 The Qt Company Ltd.
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
set(cpp_sources
|
|
ambiguous.h
|
|
birthdayparty.cpp birthdayparty.h
|
|
convertQJSPrimitiveValueToIntegral.h
|
|
cppbaseclass.h
|
|
druggeljug.h
|
|
dummyobjekt.h
|
|
dynamicmeta.h
|
|
enumproblems.h
|
|
enumProperty.h
|
|
getOptionalLookup.h
|
|
gadgetwithenum.h
|
|
invisible.h
|
|
largeValueType.h
|
|
listprovider.h
|
|
multiforeign.h
|
|
objectwithmethod.h
|
|
person.cpp person.h
|
|
qmlusing.h
|
|
resettable.h
|
|
sequenceToIterable.h
|
|
sequencetypeexample.cpp sequencetypeexample.h
|
|
state.h
|
|
takenumber.cpp takenumber.h
|
|
theme.cpp theme.h
|
|
timelinetheme.cpp timelinetheme.h
|
|
variantMapLookup.h
|
|
variantreturn.h
|
|
weathermoduleurl.h
|
|
wrapwithvariant.h
|
|
withlength.h
|
|
)
|
|
|
|
set(qml_files
|
|
AccessModelMethodsFromOutside.qml
|
|
Action.qml
|
|
AnonymousComposite.qml
|
|
ArraySequenceLengthInterop.qml
|
|
B.qml
|
|
BadType.qml
|
|
BaseConstraint.qml
|
|
BaseMember.qml
|
|
BindingExpression.qml
|
|
CxxTypeFromDir.qml
|
|
CxxTypeFromImplicit.qml
|
|
Cycle1.qml
|
|
Cycle2.qml
|
|
Cycle3.qml
|
|
CppMethodListReturnType.qml
|
|
Dummy.qml
|
|
Dummy2.qml
|
|
EditConstraint.qml
|
|
Enums.qml
|
|
Foozle.qml
|
|
GetOptionalLookupOnQJSValueNonStrict.qml
|
|
GetOptionalLookupShadowed.qml
|
|
Loopy.qml
|
|
NotificationItem.qml
|
|
NotificationsUtils.js
|
|
OkType.qml
|
|
Panel.qml
|
|
Planner.qml
|
|
ProgressBar/Keyframe.qml
|
|
ProgressBar/KeyframeGroup.qml
|
|
ProgressBar/ProgressBar.ui.qml
|
|
ProgressBar/Root.qml
|
|
ProgressBar/Timeline.qml
|
|
ProgressBar/TimelineAnimation.qml
|
|
RootWithoutId.qml
|
|
Satisfaction.qml
|
|
SelectionRectangle.qml
|
|
ShadowedObjectName.qml
|
|
ShadowedObjectNameDerived.qml
|
|
StoreMetaEnum.qml
|
|
Test.qml
|
|
TestCase.qml
|
|
ValueTypeArgument.qml
|
|
Variable.qml
|
|
WindowDerived.qml
|
|
aliasLookup.qml
|
|
ambiguous1/Ambiguous.qml
|
|
ambiguous2/Ambiguous.qml
|
|
ambiguousAs.qml
|
|
ambiguousSignals.qml
|
|
anchorsFill.qml
|
|
anonymousCompositeUser.qml
|
|
argumentConversion.qml
|
|
array.qml
|
|
arrayCtor.qml
|
|
asCast.qml
|
|
attachedBaseEnum.qml
|
|
badSequence.qml
|
|
basicBlocksWithBackJump.qml
|
|
basicBlocksWithBackJump_infinite.qml
|
|
basicDTZ.qml
|
|
bindToValueType.qml
|
|
blockComments.qml
|
|
boolCoercions.qml
|
|
boolPointerMerge.qml
|
|
brokenAs.qml
|
|
boundComponents.qml
|
|
callContextPropertyLookupResult.qml
|
|
callWithSpread.qml
|
|
childobject.qml
|
|
colorAsVariant.qml
|
|
colorString.qml
|
|
compareOriginals.qml
|
|
comparisonTypes.qml
|
|
componentReturnType.qml
|
|
compositeTypeMethod.qml
|
|
compositesingleton.qml
|
|
consoleObject.qml
|
|
consoleTrace.qml
|
|
construct.qml
|
|
contextParam.qml
|
|
conversionDecrement.qml
|
|
conversionInDeadCode.qml
|
|
conversions.qml
|
|
conversions2.qml
|
|
convertPrimitiveToVar.qml
|
|
convertQJSPrimitiveValueToIntegral.qml
|
|
convertToOriginalReadAcumulatorForUnaryOperators.qml
|
|
curlygrouped.qml
|
|
cycleHead.qml
|
|
dateConstruction.qml
|
|
dateConversions.qml
|
|
deadShoeSize.qml
|
|
deadStoreLoop.qml
|
|
detachOnAssignment.qml
|
|
dialog.qml
|
|
dialogButtonBox.qml
|
|
dynamicscene.qml
|
|
enforceSignature.qml
|
|
enumConversion.qml
|
|
enumFromBadSingleton.qml
|
|
enumInvalid.qml
|
|
enumLookup.qml
|
|
enumMarkedAsFlag.qml
|
|
enumProblems.qml
|
|
enumScope.qml
|
|
enumsInOtherObject.qml
|
|
enumsUser.qml
|
|
equalityQObjects.qml
|
|
equalityQUrl.qml
|
|
equalityTestsWithNullOrUndefined.qml
|
|
equalityVarAndNonStorable.qml
|
|
equalsUndefined.qml
|
|
exceptionFromInner.qml
|
|
excessiveParameters.qml
|
|
extendedTypes.qml
|
|
extra/extra.qml
|
|
failures.qml
|
|
fallbacklookups.qml
|
|
fallbackresettable.qml
|
|
fileDialog.qml
|
|
flagEnum.qml
|
|
fromBoolValue.qml
|
|
funcWithParams.qml
|
|
functionLookup.qml
|
|
functionReturningVoid.qml
|
|
functionTakingVar.qml
|
|
getOptionalLookup.qml
|
|
globals.qml
|
|
idAccess.qml
|
|
ignoredFunctionReturn.qml
|
|
immediateQuit.qml
|
|
imports/QmlBench/Globals.qml
|
|
importsFromImportPath.qml
|
|
indirectlyShadowable.qml
|
|
infinities.qml
|
|
infinitiesToInt.qml
|
|
insertContextOnInvalidType.qml
|
|
intEnumCompare.qml
|
|
intOverflow.qml
|
|
intToEnum.qml
|
|
interactive.qml
|
|
interceptor.qml
|
|
internalConversion.qml
|
|
invalidateCompositeType.qml
|
|
invisibleBase.qml
|
|
invisibleListElementType.qml
|
|
invisibleTypes.qml
|
|
isnan.qml
|
|
iteration.qml
|
|
javaScriptArgument.qml
|
|
jsArrayMethods.qml
|
|
jsArrayMethodsUntyped.qml
|
|
jsArrayMethodsWithParams.qml
|
|
jsArrayMethodsWithParamsUntyped.qml
|
|
jsMathObject.qml
|
|
jsimport.qml
|
|
jsmoduleimport.qml
|
|
jsonArrayToStringList.qml
|
|
layouts.qml
|
|
letAndConst.qml
|
|
library.js
|
|
listAsArgument.qml
|
|
listConversion.qml
|
|
listIndices.qml
|
|
listOfInvisible.qml
|
|
listPropertyAsModel.qml
|
|
listToString.qml
|
|
listlength.qml
|
|
math.qml
|
|
mathMinMax.qml
|
|
mathOperations.qml
|
|
mathStaticProperties.qml
|
|
mergedObjectRead.qml
|
|
mergedObjectWrite.qml
|
|
methodOnListLookup.qml
|
|
methods.qml
|
|
modulePrefix.qml
|
|
moveRegVoid.qml
|
|
multiforeign.qml
|
|
multipleCtors.qml
|
|
namespaceWithEnum.qml
|
|
noBindingLoop.qml
|
|
noQQmlData.qml
|
|
nonNotifyable.qml
|
|
noscope.qml
|
|
notEqualsInt.qml
|
|
notNotString.qml
|
|
nullAccess.qml
|
|
nullAccessInsideSignalHandler.qml
|
|
nullComparison.qml
|
|
nullishCoalescing.qml
|
|
numbersInJsPrimitive.qml
|
|
objectInVar.qml
|
|
objectLookupOnListElement.qml
|
|
objectWithStringListMethod.qml
|
|
optionalComparison.qml
|
|
outOfBounds.qml
|
|
overriddenMember.qml
|
|
ownProperty.qml
|
|
page.qml
|
|
parentProp.qml
|
|
popContextAfterRet.qml
|
|
prefixedMetaType.qml
|
|
pressAndHoldButton.qml
|
|
qmlUsing.qml
|
|
qtbug113150.qml
|
|
qtfont.qml
|
|
reduceWithNullThis.qml
|
|
readEnumFromInstance.qml
|
|
readonlyListProperty.qml
|
|
registerPropagation.qml
|
|
registerelimination.qml
|
|
renameAdjust.qml
|
|
resettable.qml
|
|
returnAfterReject.qml
|
|
revisions.qml
|
|
scopeIdLookup.qml
|
|
scopeVsObject.qml
|
|
scopedEnum.qml
|
|
script.js
|
|
script.mjs
|
|
sequenceToIterable.qml
|
|
setLookupConversion.qml
|
|
setLookupOriginalScope.qml
|
|
shadowedAsCasts.qml
|
|
shadowedMethod.qml
|
|
shadowedPrimitiveCmpEqNull.qml
|
|
shared/Slider.qml
|
|
shifts.qml
|
|
signal.qml
|
|
signalHandler.qml
|
|
signalIndexMismatch.qml
|
|
signalsWithLists.qml
|
|
signatureIgnored.qml
|
|
specificParent.qml
|
|
storeElementSideEffects.qml
|
|
stringArg.qml
|
|
stringLength.qml
|
|
stringToByteArray.qml
|
|
structuredValueType.qml
|
|
takenumber.qml
|
|
testlogger.js
|
|
text.qml
|
|
themerbad.qml
|
|
themergood.qml
|
|
thisObject.qml
|
|
throwObjectName.qml
|
|
toString.qml
|
|
topLevelComponent.qml
|
|
translation.qml
|
|
trigraphs.qml
|
|
trivialSignalHandler.qml
|
|
typePropagationLoop.qml
|
|
typePropertyClash.qml
|
|
typedArray.qml
|
|
undefinedResets.qml
|
|
undefinedToDouble.qml
|
|
unknownAttached.qml
|
|
unknownParameter.qml
|
|
unstoredUndefined.qml
|
|
unusedAttached.qml
|
|
urlString.qml
|
|
usingCxxTypesFromFileImports.qml
|
|
valueTypeCast.qml
|
|
valueTypeCopy.qml
|
|
valueTypeDefault.qml
|
|
valueTypeLists.qml
|
|
valueTypeProperty.qml
|
|
valueTypeReference.qml
|
|
variantMap.qml
|
|
variantMapLookup.qml
|
|
variantReturn.qml
|
|
variantlist.qml
|
|
versionmismatch.qml
|
|
voidConversion.qml
|
|
voidfunction.qml
|
|
writeback.qml
|
|
dummy_imports.qml
|
|
)
|
|
|
|
set(resource_files
|
|
ProgressBar/built-with-Qt_Large.png
|
|
imports/QmlBench/qmldir
|
|
)
|
|
|
|
set_source_files_properties("shared/Slider.qml"
|
|
PROPERTIES QT_RESOURCE_ALIAS "Slider.qml"
|
|
)
|
|
|
|
set_source_files_properties("hidden/Style.qml"
|
|
PROPERTIES QT_QML_SINGLETON_TYPE TRUE)
|
|
|
|
# Do re-evaluate on each import, please
|
|
set_source_files_properties("NotificationsUtils.js"
|
|
PROPERTIES QT_QML_SKIP_QMLDIR_ENTRY FALSE)
|
|
|
|
qt_policy(SET QTP0001 NEW)
|
|
qt_policy(SET QTP0004 NEW)
|
|
|
|
qt_add_library(codegen_test_hidden STATIC)
|
|
qt_autogen_tools_initial_setup(codegen_test_hidden)
|
|
|
|
set_target_properties(codegen_test_hidden PROPERTIES
|
|
# We really want qmlcachegen here, even if qmlsc is available
|
|
QT_QMLCACHEGEN_EXECUTABLE qmlcachegen
|
|
QT_QMLCACHEGEN_ARGUMENTS --validate-basic-blocks
|
|
)
|
|
|
|
target_compile_definitions(codegen_test_hidden PUBLIC
|
|
-DGENERATED_CPP_FOLDER="${CMAKE_CURRENT_BINARY_DIR}/.rcc/qmlcache"
|
|
)
|
|
|
|
qt6_add_qml_module(codegen_test_hidden
|
|
URI HiddenTestTypes
|
|
QML_FILES
|
|
hidden/Main.qml
|
|
hidden/Style.qml
|
|
OUTPUT_DIRECTORY HiddenTestTypes
|
|
__QT_INTERNAL_DISAMBIGUATE_QMLDIR_RESOURCE
|
|
|
|
# Don't add a qmldir in "hidden". That would defeat the purpose.
|
|
NO_GENERATE_EXTRA_QMLDIRS
|
|
)
|
|
|
|
add_dependencies(codegen_test_hidden Qt::Quick)
|
|
|
|
qt_autogen_tools_initial_setup(codegen_test_hiddenplugin)
|
|
|
|
qt_add_library(codegen_test_stringbuilder STATIC)
|
|
qt_autogen_tools_initial_setup(codegen_test_stringbuilder)
|
|
|
|
set_target_properties(codegen_test_stringbuilder PROPERTIES
|
|
# We really want qmlcachegen here, even if qmlsc is available
|
|
QT_QMLCACHEGEN_EXECUTABLE qmlcachegen
|
|
QT_QMLCACHEGEN_ARGUMENTS --validate-basic-blocks
|
|
)
|
|
|
|
target_compile_definitions(codegen_test_stringbuilder PRIVATE
|
|
-DGENERATED_CPP_FOLDER="${CMAKE_CURRENT_BINARY_DIR}/.rcc/qmlcache"
|
|
QT_USE_QSTRINGBUILDER
|
|
)
|
|
|
|
qt6_add_qml_module(codegen_test_stringbuilder
|
|
URI StringBuilderTestTypes
|
|
SOURCES
|
|
writableVariantMap.h
|
|
QML_FILES
|
|
writeVariantMap.qml
|
|
OUTPUT_DIRECTORY StringBuilderTestTypes
|
|
__QT_INTERNAL_DISAMBIGUATE_QMLDIR_RESOURCE
|
|
)
|
|
|
|
qt_autogen_tools_initial_setup(codegen_test_stringbuilderplugin)
|
|
|
|
qt_add_library(codegen_test_module STATIC)
|
|
qt_autogen_tools_initial_setup(codegen_test_module)
|
|
|
|
set_target_properties(codegen_test_module PROPERTIES
|
|
# We really want qmlcachegen here, even if qmlsc is available
|
|
QT_QMLCACHEGEN_EXECUTABLE qmlcachegen
|
|
QT_QMLCACHEGEN_ARGUMENTS --validate-basic-blocks
|
|
)
|
|
|
|
|
|
|
|
target_compile_definitions(codegen_test_module PUBLIC
|
|
-DGENERATED_CPP_FOLDER="${CMAKE_CURRENT_BINARY_DIR}/.rcc/qmlcache"
|
|
-DQT_NO_CAST_FROM_ASCII
|
|
)
|
|
|
|
qt6_add_qml_module(codegen_test_module
|
|
VERSION 1.5
|
|
URI TestTypes
|
|
IMPORT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/imports/"
|
|
DEPENDENCIES
|
|
QtQuick
|
|
QtQuick.Controls
|
|
QtQuick.Templates
|
|
QtQuick.Shapes
|
|
SOURCES
|
|
${cpp_sources}
|
|
QML_FILES
|
|
${qml_files}
|
|
RESOURCES
|
|
${resource_files}
|
|
OUTPUT_DIRECTORY TestTypes # Make sure tst_qmlcachegen doesn't see our output
|
|
__QT_INTERNAL_DISAMBIGUATE_QMLDIR_RESOURCE
|
|
)
|
|
|
|
if(${CMAKE_VERSION} GREATER_EQUAL "3.19.0")
|
|
qt_target_qml_sources(codegen_test_module
|
|
QML_FILES extra2/extra.qml
|
|
)
|
|
else()
|
|
target_compile_definitions(codegen_test_module PUBLIC
|
|
-DVERY_OLD_CMAKE=1
|
|
)
|
|
endif()
|
|
|
|
add_dependencies(codegen_test_module Qt::Quick Qt::QuickTemplates2 Qt::QuickShapesPrivate)
|
|
|
|
qt_autogen_tools_initial_setup(codegen_test_moduleplugin)
|
|
|
|
|
|
qt_add_library(codegen_test_module_verify STATIC)
|
|
qt_autogen_tools_initial_setup(codegen_test_module_verify)
|
|
|
|
set_target_properties(codegen_test_module_verify PROPERTIES
|
|
# We really want qmlcachegen here, even if qmlsc is available
|
|
QT_QMLCACHEGEN_EXECUTABLE qmlcachegen
|
|
QT_QMLCACHEGEN_ARGUMENTS --validate-basic-blocks
|
|
)
|
|
|
|
|
|
qt6_add_qml_module(codegen_test_module_verify
|
|
VERSION 1.5
|
|
URI TestTypes
|
|
IMPORT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/imports/"
|
|
DEPENDENCIES
|
|
QtQuick
|
|
QtQuick.Controls
|
|
QtQuick.Templates
|
|
QtQuick.Shapes
|
|
SOURCES
|
|
${cpp_sources}
|
|
QML_FILES
|
|
${qml_files}
|
|
RESOURCES
|
|
${resource_files}
|
|
OUTPUT_DIRECTORY verify/TestTypes # Make sure tst_qmlcachegen doesn't see our output
|
|
TARGET_PATH verify/TestTypes # Different target path to avoid resource file name clashes
|
|
__QT_INTERNAL_DISAMBIGUATE_QMLDIR_RESOURCE
|
|
)
|
|
|
|
add_dependencies(codegen_test_module_verify Qt::Quick Qt::QuickTemplates2 Qt::QuickShapesPrivate)
|
|
|
|
qt_autogen_tools_initial_setup(codegen_test_module_verifyplugin)
|
|
|
|
|
|
qt_internal_add_test(tst_qmlcppcodegen_verify
|
|
SOURCES
|
|
tst_qmlcppcodegen_verify.cpp
|
|
)
|
|
|
|
add_dependencies(tst_qmlcppcodegen_verify codegen_test_module codegen_test_module_verify)
|
|
|
|
set(a_files "")
|
|
set(b_files "")
|
|
|
|
foreach(qml_file IN LISTS qml_files)
|
|
string(REGEX REPLACE "\\.(js|mjs|qml)$" "_\\1" compiled_file ${qml_file})
|
|
string(REGEX REPLACE "[$#?]+" "_" compiled_file ${compiled_file})
|
|
|
|
list(APPEND
|
|
a_files
|
|
"${CMAKE_CURRENT_BINARY_DIR}/.rcc/qmlcache/codegen_test_module_${compiled_file}.cpp")
|
|
|
|
list(APPEND
|
|
b_files
|
|
"${CMAKE_CURRENT_BINARY_DIR}/.rcc/qmlcache/codegen_test_module_verify_${compiled_file}.cpp")
|
|
endforeach()
|
|
|
|
qt_add_resources(tst_qmlcppcodegen_verify "a"
|
|
PREFIX
|
|
"/a"
|
|
FILES
|
|
${a_files}
|
|
BASE
|
|
"${CMAKE_CURRENT_BINARY_DIR}/.rcc/qmlcache/"
|
|
)
|
|
|
|
qt_add_resources(tst_qmlcppcodegen_verify "b"
|
|
PREFIX
|
|
"/b"
|
|
FILES
|
|
${b_files}
|
|
BASE
|
|
"${CMAKE_CURRENT_BINARY_DIR}/.rcc/qmlcache/"
|
|
)
|