diff options
-rw-r--r-- | examples/webenginewidgets/webenginewidgets.pro | 4 | ||||
-rw-r--r-- | mkspecs/features/functions.prf | 5 | ||||
-rw-r--r-- | mkspecs/features/gn_generator.prf | 9 | ||||
-rw-r--r-- | src/buildtools/config/lipo.pri | 85 | ||||
-rw-r--r-- | src/buildtools/config/lipo_linking.pri | 15 | ||||
-rw-r--r-- | src/core/api/core_api.pro | 7 | ||||
-rw-r--r-- | src/core/core.pro | 6 | ||||
-rw-r--r-- | src/core/core_chromium.pri | 10 | ||||
-rw-r--r-- | src/core/core_gn_config.pri | 10 | ||||
-rw-r--r-- | src/core/core_lipo.pro | 9 | ||||
-rw-r--r-- | src/core/core_module.pro | 14 | ||||
-rw-r--r-- | src/core/gn_run.pro | 41 | ||||
-rw-r--r-- | src/pdf/gn_run.pro | 44 | ||||
-rw-r--r-- | src/pdf/pdf.pro | 18 | ||||
-rw-r--r-- | src/pdf/pdfcore.pro | 8 | ||||
-rw-r--r-- | src/pdf/pdfcore_generator.pro | 8 | ||||
-rw-r--r-- | src/pdf/pdfcore_lipo.pro | 5 | ||||
-rw-r--r-- | src/src.pro | 2 | ||||
-rw-r--r-- | tests/auto/widgets/widgets.pro | 4 |
19 files changed, 256 insertions, 48 deletions
diff --git a/examples/webenginewidgets/webenginewidgets.pro b/examples/webenginewidgets/webenginewidgets.pro index deb42a8cd..31a214ceb 100644 --- a/examples/webenginewidgets/webenginewidgets.pro +++ b/examples/webenginewidgets/webenginewidgets.pro @@ -1,3 +1,5 @@ +load(functions) + include($$QTWEBENGINE_OUT_ROOT/src/core/qtwebenginecore-config.pri) # workaround for QTBUG-68093 QT_FOR_CONFIG += webenginecore webenginecore-private @@ -20,7 +22,7 @@ qtConfig(webengine-printing-and-pdf) { SUBDIRS += printme html2pdf } -qtConfig(webengine-spellchecker):!qtConfig(webengine-native-spellchecker):!cross_compile { +qtConfig(webengine-spellchecker):!qtConfig(webengine-native-spellchecker):!cross_compile:!isUniversal() { SUBDIRS += spellchecker } else { message("Spellcheck example will not be built because it depends on usage of Hunspell dictionaries.") diff --git a/mkspecs/features/functions.prf b/mkspecs/features/functions.prf index 2750d7071..7f630588a 100644 --- a/mkspecs/features/functions.prf +++ b/mkspecs/features/functions.prf @@ -5,6 +5,11 @@ defineReplace(getConfigDir) { return("debug") } +defineTest(isUniversal) { + macos:count(QT_ARCHS, 1, >):return(true) + return(false) +} + defineReplace(getChromiumSrcDir) { exists($$QTWEBENGINE_ROOT/.git): git_chromium_src_dir = $$system("git config qtwebengine.chromiumsrcdir") # Fall back to the snapshot path if git does not know about chromium sources (i.e. init-repository.py has not been used) diff --git a/mkspecs/features/gn_generator.prf b/mkspecs/features/gn_generator.prf index a83b59847..306e58db1 100644 --- a/mkspecs/features/gn_generator.prf +++ b/mkspecs/features/gn_generator.prf @@ -27,7 +27,7 @@ defineReplace(filter_flag_values) { return($$value_to_check) } -isEmpty(GN_FILE): GN_FILE = $$system_path($$_PRO_FILE_PWD_/BUILD.gn) +isEmpty(GN_FILES): GN_FILES = $$system_path($$_PRO_FILE_PWD_/BUILD.gn) isEmpty(GN_RUN_BINARY_SCRIPT): GN_RUN_BINARY_SCRIPT = "//build/gn_run_binary.py" isEmpty(GN_FIND_MOCABLES_SCRIPT): GN_FIND_MOCABLES_SCRIPT = "//build/gn_find_mocables.py" @@ -260,12 +260,13 @@ GN_CONTENTS += "}" for (inc, GN_INCLUDES): GN_CONTENTS += $$cat($$inc,lines) } -build_pass|!debug_and_release: write_file($$GN_FILE, GN_CONTENTS) - +build_pass|!debug_and_release { + for(gnFile, GN_FILES): write_file($$gnFile, GN_CONTENTS) +} # The generated Makefile shouldn't build anything by itself, just re-run qmake if necessary TEMPLATE = aux SOURCES = HEADERS = RESOURCES = -QMAKE_DISTCLEAN += $$GN_FILE +QMAKE_DISTCLEAN += $$GN_FILES diff --git a/src/buildtools/config/lipo.pri b/src/buildtools/config/lipo.pri new file mode 100644 index 000000000..f065c8ee9 --- /dev/null +++ b/src/buildtools/config/lipo.pri @@ -0,0 +1,85 @@ +for(arch, QT_ARCHS) { + + linking_pri = $$OUT_PWD/$$arch/$$getConfigDir()/$${TARGET}.pri + + !include($$linking_pri) { + message("Could not find the linking information that gn should have generated.") + } + + # Do not precompile any headers. We are only interested in the linker step. + PRECOMPILED_HEADER = + + isEmpty(NINJA_OBJECTS): error("Missing object files from linking pri.") + isEmpty(NINJA_LFLAGS): error("Missing linker flags from linking pri") + isEmpty(NINJA_ARCHIVES): error("Missing archive files from linking pri") + isEmpty(NINJA_LIBS): error("Missing library files from linking pri") + NINJA_OBJECTS = $$eval($$list($$NINJA_OBJECTS)) + # Do manual response files + + + RSP_OBJECT_FILE = $$OUT_PWD/$$arch/$$getConfigDir()/$${TARGET}_objects.rsp + for(object, NINJA_OBJECTS): RSP_OBJECTS_CONTENT += $$object + write_file($$RSP_OBJECT_FILE, RSP_OBJECTS_CONTENT) + RSP_ARCHIVE_FILE = $$OUT_PWD/$$arch/$$getConfigDir()/$${TARGET}_archives.rsp + for(archive, NINJA_ARCHIVES): RSP_ARCHIVES_CONTENT += $$archive + write_file($$RSP_ARCHIVE_FILE, RSP_ARCHIVES_CONTENT) + RSP_LIBS_FILE = $$OUT_PWD/$$arch/$$getConfigDir()/$${TARGET}_libs.rsp + for(lib, NINJA_LIBS): RSP_LIBS_CONTENT += $$lib + write_file($$RSP_LIBS_FILE, RSP_LIBS_CONTENT) + + unset(RSP_OBJECTS_CONTENT) + unset(RSP_ARCHIVES_CONTENT) + unset(RSP_LIBS_CONTENT) + unset(NINJA_OBJECTS) + unset(NINJA_LFLAGS) + unset(NINJA_ARCHIVES) + unset(NINJA_LIBS) +} + +LIPO_OUT_FILE = $$OUT_PWD/$$getConfigDir()/$${TARGET}.a +INPUT_FILE = . +lipo.name = lipo +lipo.output = $$LIPO_OUT_FILE +lipo.input = INPUT_FILE +lipo.CONFIG += target_predeps no_link +lipo.commands = lipo -create -output $$LIPO_OUT_FILE +QMAKE_EXTRA_COMPILERS += lipo + +include($$QTWEBENGINE_ROOT/src/buildtools/config/mac_osx.pri) + +for(arch, QT_ARCHS) { + + RSP_OBJECT_FILE = $$OUT_PWD/$$arch/$$getConfigDir()/$${TARGET}_objects.rsp + OBJECT_FILE = $$OUT_PWD/$$arch/$$getConfigDir()/$${TARGET}_objects.o + RSP_ARCHIVE_FILE = $$OUT_PWD/$$arch/$$getConfigDir()/$${TARGET}_archives.rsp + ARCHIVE_FILE = $$OUT_PWD/$$arch/$$getConfigDir()/$${TARGET}_archives.o + OUT_FILE = $$OUT_PWD/$$arch/$$getConfigDir()/$${TARGET}.a + + intermediate_archive_$${arch}.name = build_intermediate_archive_$${arch} + intermediate_archive_$${arch}.output= $$OUT_FILE + intermediate_archive_$${arch}.input = INPUT_FILE + intermediate_archive_$${arch}.depends = $$RSP_OBJECT_FILE $$RSP_ARCHIVE_FILE $$NINJA_TARGETDEPS + intermediate_archive_$${arch}.CONFIG += target_predeps no_link + intermediate_archive_$${arch}.commands = \ + clang++ -r -nostdlib -arch $$arch \ + -mmacosx-version-min=$${QMAKE_MACOSX_DEPLOYMENT_TARGET} \ + -o $$OBJECT_FILE \ + -Wl,-keep_private_externs \ + @$$RSP_OBJECT_FILE ;\ + $$QMAKE_CC -r -nostdlib -arch $$arch \ + -mmacosx-version-min=$${QMAKE_MACOSX_DEPLOYMENT_TARGET} \ + -o $$ARCHIVE_FILE \ + -Wl,-keep_private_externs \ + -Wl,-all_load \ + @$$RSP_ARCHIVE_FILE ;\ + ar -crs $$OUT_FILE $$OBJECT_FILE $$ARCHIVE_FILE + lipo.depends += $$OUT_FILE + lipo.commands += $$OUT_FILE + QMAKE_EXTRA_COMPILERS += intermediate_archive_$$arch + + unset(RSP_OBJECT_FILE) + unset(OBJECT_FILE) + unset(RSP_ARCHVIE_FILE) + unset(OUT_FILE) +} + diff --git a/src/buildtools/config/lipo_linking.pri b/src/buildtools/config/lipo_linking.pri new file mode 100644 index 000000000..c65fef059 --- /dev/null +++ b/src/buildtools/config/lipo_linking.pri @@ -0,0 +1,15 @@ +include($$QTWEBENGINE_OUT_ROOT/src/buildtools/qtbuildtools-config.pri) +QT_FOR_CONFIG += buildtools-private + +LIPO_OUT_FILE = $$OUT_PWD/$$getConfigDir()/$${TARGET}.a +!static { + QMAKE_LFLAGS += $${LIPO_OUT_FILE} +} else { + LIBS_PRIVATE += $${LIPO_OUT_FILE} +} + +LIBS_PRIVATE += @$$OUT_PWD/$$QT_ARCH/$$getConfigDir()/$${TARGET}_libs.rsp + +qtConfig(webengine-noexecstack): QMAKE_LFLAGS += -Wl,-z,noexecstack + +POST_TARGETDEPS += $$LIPO_OUT_FILE diff --git a/src/core/api/core_api.pro b/src/core/api/core_api.pro index 2ddd0d69f..28d5586ba 100644 --- a/src/core/api/core_api.pro +++ b/src/core/api/core_api.pro @@ -23,7 +23,12 @@ DEFINES += \ NOMINMAX CHROMIUM_SRC_DIR = $$QTWEBENGINE_ROOT/$$getChromiumSrcDir() -CHROMIUM_GEN_DIR = $$OUT_PWD/../$$getConfigDir()/gen + +isUniversal() { + CHROMIUM_GEN_DIR = $$OUT_PWD/../$$QT_ARCH/$$getConfigDir()/gen +} else { + CHROMIUM_GEN_DIR = $$OUT_PWD/../$$getConfigDir()/gen +} INCLUDEPATH += $$QTWEBENGINE_ROOT/src/core \ $$CHROMIUM_GEN_DIR \ $$CHROMIUM_SRC_DIR/third_party/abseil-cpp \ diff --git a/src/core/core.pro b/src/core/core.pro index f2d3fd307..fa1d7f6a7 100644 --- a/src/core/core.pro +++ b/src/core/core.pro @@ -7,9 +7,13 @@ TEMPLATE = subdirs core_headers.file = core_headers.pro core_api.file = api/core_api.pro +core_lipo.file = core_lipo.pro +core_lipo.depends = gn_run + # This will take the compile output of ninja, and link+deploy the final binary. core_module.file = core_module.pro core_module.depends = core_api +isUniversal(): core_module.depends += core_lipo core_generator.file = core_generator.pro core_generator.depends = core_headers @@ -44,5 +48,7 @@ core_project.depends = gn_run core_api \ core_module + isUniversal(): SUBDIRS += core_lipo + false: SUBDIRS += core_project } diff --git a/src/core/core_chromium.pri b/src/core/core_chromium.pri index e978d20a1..a846f2fbc 100644 --- a/src/core/core_chromium.pri +++ b/src/core/core_chromium.pri @@ -21,9 +21,13 @@ DEFINES += QT_NO_KEYWORDS \ BUILDING_CHROMIUM # Ensure that response files, generated by qtbase/mkspecs/features/moc.prf, are found by moc. -MOC_DIR = $$OUT_PWD/$$getConfigDir()/.moc -RCC_DIR = $$OUT_PWD/$$getConfigDir()/.rcc - +isUniversal() { + MOC_DIR = $$OUT_PWD/$$QT_ARCH/$$getConfigDir()/.moc + RCC_DIR = $$OUT_PWD/$$QT_ARCH/$$getConfigDir()/.rcc +} else { + MOC_DIR = $$OUT_PWD/$$getConfigDir()/.moc + RCC_DIR = $$OUT_PWD/$$getConfigDir()/.rcc +} # Assume that we want mobile touch and low-end hardware behaviors # whenever we are cross compiling. qtConfig(webengine-embedded-build): DEFINES += QTWEBENGINE_EMBEDDED_SWITCHES diff --git a/src/core/core_gn_config.pri b/src/core/core_gn_config.pri index 2b8f2e18f..379bbac94 100644 --- a/src/core/core_gn_config.pri +++ b/src/core/core_gn_config.pri @@ -1,10 +1,16 @@ CONFIG = gn_generator $$CONFIG GN_SRC_DIR = $$PWD -GN_FILE = $$OUT_PWD/$$getConfigDir()/BUILD.gn +isUniversal() { + for(arch, QT_ARCHS) { + GN_FILES += $$OUT_PWD/$$arch/$$getConfigDir()/BUILD.gn + } +} else { + GN_FILES = $$OUT_PWD/$$getConfigDir()/BUILD.gn +} GN_FIND_MOCABLES_SCRIPT = $$shell_path($$QTWEBENGINE_ROOT/tools/scripts/gn_find_mocables.py) GN_RUN_BINARY_SCRIPT = $$shell_path($$QTWEBENGINE_ROOT/tools/scripts/gn_run_binary.py) GN_IMPORTS = $$PWD/qtwebengine.gni -qtConfig (webengine-extensions) { +qtConfig(webengine-extensions) { GN_INCLUDES += $$PWD/qtwebengine_sources.gni $$PWD/qtwebengine_resources.gni $$PWD/common/extensions/api/qtwebengine_extensions_features.gni } else { GN_INCLUDES = $$PWD/qtwebengine_sources.gni $$PWD/qtwebengine_resources.gni diff --git a/src/core/core_lipo.pro b/src/core/core_lipo.pro new file mode 100644 index 000000000..41846b7f2 --- /dev/null +++ b/src/core/core_lipo.pro @@ -0,0 +1,9 @@ +TEMPLATE = aux + +qtConfig(debug_and_release): CONFIG += debug_and_release +qtConfig(build_all): CONFIG += build_all + +TARGET= QtWebEngineCore +include($${QTWEBENGINE_ROOT}/src/buildtools/config/lipo.pri) + + diff --git a/src/core/core_module.pro b/src/core/core_module.pro index 520b452f7..9e087c815 100644 --- a/src/core/core_module.pro +++ b/src/core/core_module.pro @@ -1,7 +1,11 @@ MODULE = webenginecore include(core_common.pri) -include($${QTWEBENGINE_ROOT}/src/buildtools/config/linking.pri) +isUniversal() { + include($${QTWEBENGINE_ROOT}/src/buildtools/config/lipo_linking.pri) +} else { + include($${QTWEBENGINE_ROOT}/src/buildtools/config/linking.pri) +} api_library_name = qtwebenginecoreapi$$qtPlatformTargetSuffix() api_library_path = $$OUT_PWD/api/$$getConfigDir() @@ -49,7 +53,11 @@ linux { qtConfig(separate_debug_info): QMAKE_POST_LINK="cd $(DESTDIR) && $(STRIP) --strip-unneeded $(TARGET)" } -REPACK_DIR = $$OUT_PWD/$$getConfigDir() +isUniversal() { + REPACK_DIR = $$OUT_PWD/$$QT_ARCH/$$getConfigDir() +} else { + REPACK_DIR = $$OUT_PWD/$$getConfigDir() +} # Duplicated from resources/resources.gyp LOCALE_LIST = am ar bg bn ca cs da de el en-GB en-US es-419 es et fa fi fil fr gu he hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr sv sw ta te th tr uk vi zh-CN zh-TW @@ -61,7 +69,7 @@ resources.files = $$REPACK_DIR/qtwebengine_resources.pak \ $$REPACK_DIR/qtwebengine_resources_200p.pak \ $$REPACK_DIR/qtwebengine_devtools_resources.pak -icu.files = $$OUT_PWD/$$getConfigDir()/icudtl.dat +icu.files = $$REPACK_DIR/icudtl.dat !qtConfig(debug_and_release)|!qtConfig(build_all)|CONFIG(release, debug|release) { qtConfig(framework) { diff --git a/src/core/gn_run.pro b/src/core/gn_run.pro index 3d6fda80e..9072f2847 100644 --- a/src/core/gn_run.pro +++ b/src/core/gn_run.pro @@ -28,36 +28,51 @@ build_pass|!debug_and_release { gn_binary = gn runninja.target = run_ninja + QMAKE_EXTRA_TARGETS += runninja gn_args = $$gnWebEngineArgs() - gn_args += "qtwebengine_target=\"$$system_path($$OUT_PWD/$$getConfigDir()):QtWebEngineCore\"" !qtConfig(webengine-system-gn) { gn_binary = $$system_quote($$system_path($$gnPath())) } - gn_args = $$system_quote($$gn_args) gn_src_root = $$system_quote($$system_path($$QTWEBENGINE_ROOT/$$getChromiumSrcDir())) - gn_build_root = $$system_quote($$system_path($$OUT_PWD/$$getConfigDir())) gn_python = "--script-executable=$$pythonPathForSystem()" - gn_run = $$gn_binary gen $$gn_build_root $$gn_python --args=$$gn_args --root=$$gn_src_root - - message("Running: $$gn_run ") - !system($$gn_run) { - error("GN run error!") - } ninjaflags = $$(NINJAFLAGS) isEmpty(ninjaflags):!silent: ninjaflags = "-v" - - runninja.commands = $$NINJA $$ninjaflags \$\(NINJAJOBS\) -C $$gn_build_root QtWebEngineCore - QMAKE_EXTRA_TARGETS += runninja - build_pass:build_all: default_target.target = all else: default_target.target = first default_target.depends = runninja QMAKE_EXTRA_TARGETS += default_target + + isUniversal(){ + for(arch, QT_ARCHS) { + gn_target = "qtwebengine_target=\"$$system_path($$OUT_PWD/$$arch/$$getConfigDir()):QtWebEngineCore\"" + gn_args_per_arch = $$system_quote($$gn_args $$gn_target target_cpu=\"$$gnArch($$arch)\") + gn_build_root = $$system_quote($$system_path($$OUT_PWD/$$arch/$$getConfigDir())) + gn_run = $$gn_binary gen $$gn_build_root $$gn_python --args=$$gn_args_per_arch --root=$$gn_src_root + message("Running for $$arch: $$gn_run") + !system($$gn_run) { + error("GN run error for $$arch!") + } + runninja_$${arch}.target = run_ninja_$${arch} + runninja_$${arch}.commands = $$NINJA $$ninjaflags \$\(NINJAJOBS\) -C $$gn_build_root QtWebEngineCore + QMAKE_EXTRA_TARGETS += runninja_$${arch} + runninja.depends += runninja_$${arch} + } + } else { + gn_args+= "qtwebengine_target=\"$$system_path($$OUT_PWD/$$getConfigDir()):QtWebEngineCore\"" + gn_args = $$system_quote($$gn_args) + gn_build_root = $$system_quote($$system_path($$OUT_PWD/$$getConfigDir())) + gn_run = $$gn_binary gen $$gn_build_root $$gn_python --args=$$gn_args --root=$$gn_src_root + message("Running: $$gn_run for $$arch") + !system($$gn_run) { + error("GN run error!") + } + runninja.commands = $$NINJA $$ninjaflags \$\(NINJAJOBS\) -C $$gn_build_root QtWebEngineCore + } } !build_pass:debug_and_release { diff --git a/src/pdf/gn_run.pro b/src/pdf/gn_run.pro index 70ee582a9..d00406193 100644 --- a/src/pdf/gn_run.pro +++ b/src/pdf/gn_run.pro @@ -27,39 +27,55 @@ build_pass|!debug_and_release { gn_binary = gn runninja.target = run_ninja + QMAKE_EXTRA_TARGETS += runninja # fixme: refine args gn_args = $$gnPdfArgs() - # fixme: qtwebengine_target - gn_args += "qtwebengine_target=\"$$system_path($$OUT_PWD/$$getConfigDir()):QtPdf\"" - # fixme: !qtConfig(webengine-system-gn) { gn_binary = $$system_quote($$system_path($$gnPath())) } - gn_args = $$system_quote($$gn_args) gn_src_root = $$system_quote($$system_path($$QTWEBENGINE_ROOT/$$getChromiumSrcDir())) - gn_build_root = $$system_quote($$system_path($$OUT_PWD/$$getConfigDir())) gn_python = "--script-executable=$$pythonPathForSystem()" - gn_run = $$gn_binary gen $$gn_build_root $$gn_python --args=$$gn_args --root=$$gn_src_root - - message("Running: $$gn_run ") - !system($$gn_run) { - error("GN run error!") - } ninjaflags = $$(NINJAFLAGS) isEmpty(ninjaflags):!silent: ninjaflags = "-v" - runninja.commands = $$NINJA $$ninjaflags -C $$gn_build_root QtPdf - QMAKE_EXTRA_TARGETS += runninja - build_pass:build_all: default_target.target = all else: default_target.target = first default_target.depends = runninja QMAKE_EXTRA_TARGETS += default_target + + isUniversal(){ + for(arch, QT_ARCHS) { + # fixme: qtwebengine_target + gn_target = "qtwebengine_target=\"$$system_path($$OUT_PWD/$$arch/$$getConfigDir()):QtPdf\"" + gn_args_per_arch = $$system_quote($$gn_args $$gn_target target_cpu=\"$$gnArch($$arch)\") + gn_build_root = $$system_quote($$system_path($$OUT_PWD/$$arch/$$getConfigDir())) + gn_run = $$gn_binary gen $$gn_build_root $$gn_python --args=$$gn_args_per_arch --root=$$gn_src_root + message("Running for $$arch: $$gn_run") + !system($$gn_run) { + error("GN run error for $$arch!") + } + runninja_$${arch}.target = run_ninja_$${arch} + runninja_$${arch}.commands = $$NINJA $$ninjaflags -C $$gn_build_root QtPdf + QMAKE_EXTRA_TARGETS += runninja_$${arch} + runninja.depends += runninja_$${arch} + } + } else { + gn_args+= "qtwebengine_target=\"$$system_path($$OUT_PWD/$$getConfigDir()):QtPdf\"" + gn_args = $$system_quote($$gn_args) + gn_build_root = $$system_quote($$system_path($$OUT_PWD/$$getConfigDir())) + gn_run = $$gn_binary gen $$gn_build_root $$gn_python --args=$$gn_args --root=$$gn_src_root + message("Running: $$gn_run for $$arch") + !system($$gn_run) { + error("GN run error!") + } + runninja.commands = $$NINJA $$ninjaflags -C $$gn_build_root QtPdf + } + } !build_pass:debug_and_release { diff --git a/src/pdf/pdf.pro b/src/pdf/pdf.pro index 9f98c32b0..fedcc9bde 100644 --- a/src/pdf/pdf.pro +++ b/src/pdf/pdf.pro @@ -3,13 +3,22 @@ QT_FOR_CONFIG += buildtools-private TEMPLATE = subdirs pdfcore.file = pdfcore.pro pdfcore_generator.file = pdfcore_generator.pro + +pdfcore_lipo.file = pdfcore_lipo.pro +pdfcore_lipo.depends = gn_run + gn_run.file = gn_run.pro pdfcore_prl_generator.file = pdfcore_prl_generator.pro gn_run.depends = pdfcore_generator pdfcore_prl_generator.depends = gn_run -pdfcore.depends = pdfcore_prl_generator quick.depends = pdfcore +isUniversal() { + pdfcore.depends += pdfcore_lipo +} else { + pdfcore.depends += pdfcore_prl_generator +} + !qtConfig(webengine-qtpdf-support):qtConfig(build-qtpdf)::!build_pass { !qtwebengine_makeCheckPdfError() { errorbuild.commands = @echo $$shell_quote("QtPdf will not be built. $${skipBuildReason}") @@ -24,8 +33,13 @@ quick.depends = pdfcore SUBDIRS += \ pdfcore_generator \ gn_run \ - pdfcore_prl_generator \ pdfcore \ quick + + isUniversal() { + SUBDIRS += pdfcore_lipo + } else { + SUBDIRS += pdfcore_prl_generator + } } diff --git a/src/pdf/pdfcore.pro b/src/pdf/pdfcore.pro index 23e0cec79..c2626a48a 100644 --- a/src/pdf/pdfcore.pro +++ b/src/pdf/pdfcore.pro @@ -27,11 +27,15 @@ msvc { QMAKE_CXXFLAGS_WARN_ON += -wd"4100" } -include($${QTWEBENGINE_ROOT}/src/buildtools/config/linking.pri) +isUniversal() { + include($${QTWEBENGINE_ROOT}/src/buildtools/config/lipo_linking.pri) +} else { + include($${QTWEBENGINE_ROOT}/src/buildtools/config/linking.pri) +} # install static dependencies and handle prl files for static builds -static:!isEmpty(NINJA_ARCHIVES) { +static:!isEmpty(NINJA_ARCHIVES):!isUniversal() { static_dep_pri = $$OUT_PWD/$$getConfigDir()/$${TARGET}_static_dep.pri !include($${static_dep_pri}) { error("Could not find the prl information.") diff --git a/src/pdf/pdfcore_generator.pro b/src/pdf/pdfcore_generator.pro index e5c7258b7..0930256ca 100644 --- a/src/pdf/pdfcore_generator.pro +++ b/src/pdf/pdfcore_generator.pro @@ -5,7 +5,13 @@ TEMPLATE = lib CONFIG = gn_generator $$CONFIG CONFIG -=static # note we still do static when linking GN_SRC_DIR = $$PWD -GN_FILE = $$OUT_PWD/$$getConfigDir()/BUILD.gn +isUniversal() { + for(arch, QT_ARCHS) { + GN_FILES += $$OUT_PWD/$$arch/$$getConfigDir()/BUILD.gn + } +} else { + GN_FILES = $$OUT_PWD/$$getConfigDir()/BUILD.gn +} GN_FIND_MOCABLES_SCRIPT = $$shell_path($$QTWEBENGINE_ROOT/tools/scripts/gn_find_mocables.py) GN_RUN_BINARY_SCRIPT = $$shell_path($$QTWEBENGINE_ROOT/tools/scripts/gn_run_binary.py) GN_IMPORTS = $$PWD/qtpdf.gni diff --git a/src/pdf/pdfcore_lipo.pro b/src/pdf/pdfcore_lipo.pro new file mode 100644 index 000000000..6caf2ac75 --- /dev/null +++ b/src/pdf/pdfcore_lipo.pro @@ -0,0 +1,5 @@ +TEMPLATE = aux + +TARGET= QtPdf +include($${QTWEBENGINE_ROOT}/src/buildtools/config/lipo.pri) + diff --git a/src/src.pro b/src/src.pro index 6f8bc2fe4..c99904309 100644 --- a/src/src.pro +++ b/src/src.pro @@ -29,7 +29,7 @@ qtConfig(build-qtwebengine-core):qtConfig(webengine-core-support) { SUBDIRS += buildtools core process - qtConfig(webengine-spellchecker):!qtConfig(webengine-native-spellchecker):!cross_compile { + qtConfig(webengine-spellchecker):!qtConfig(webengine-native-spellchecker):!cross_compile:!isUniversal() { SUBDIRS += qwebengine_convert_dict qwebengine_convert_dict.subdir = tools/qwebengine_convert_dict qwebengine_convert_dict.depends = core diff --git a/tests/auto/widgets/widgets.pro b/tests/auto/widgets/widgets.pro index 2dc1eefcd..d35f875c1 100644 --- a/tests/auto/widgets/widgets.pro +++ b/tests/auto/widgets/widgets.pro @@ -1,3 +1,5 @@ +load(functions) + include($$QTWEBENGINE_OUT_ROOT/src/core/qtwebenginecore-config.pri) # workaround for QTBUG-68093 QT_FOR_CONFIG += webenginecore webenginecore-private @@ -37,7 +39,7 @@ qtConfig(ssl) { SUBDIRS += certificateerror } -qtConfig(webengine-spellchecker):!cross_compile { +qtConfig(webengine-spellchecker):!cross_compile:!isUniversal() { !qtConfig(webengine-native-spellchecker) { SUBDIRS += spellchecking } else { |