summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/webenginewidgets/webenginewidgets.pro4
-rw-r--r--mkspecs/features/functions.prf5
-rw-r--r--mkspecs/features/gn_generator.prf9
-rw-r--r--src/buildtools/config/lipo.pri85
-rw-r--r--src/buildtools/config/lipo_linking.pri15
-rw-r--r--src/core/api/core_api.pro7
-rw-r--r--src/core/core.pro6
-rw-r--r--src/core/core_chromium.pri10
-rw-r--r--src/core/core_gn_config.pri10
-rw-r--r--src/core/core_lipo.pro9
-rw-r--r--src/core/core_module.pro14
-rw-r--r--src/core/gn_run.pro41
-rw-r--r--src/pdf/gn_run.pro44
-rw-r--r--src/pdf/pdf.pro18
-rw-r--r--src/pdf/pdfcore.pro8
-rw-r--r--src/pdf/pdfcore_generator.pro8
-rw-r--r--src/pdf/pdfcore_lipo.pro5
-rw-r--r--src/src.pro2
-rw-r--r--tests/auto/widgets/widgets.pro4
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 {