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 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
|
#!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
export NINJA_PATH=/usr/bin/ninja
export NINJAFLAGS=-v
include /usr/share/dpkg/default.mk
DEB_HOST_ARCH_BITS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_BITS)
# TODO: properly integrate with the other debug setting
ifeq (32,$(DEB_HOST_ARCH_BITS))
export DEB_CFLAGS_MAINT_APPEND = -g1
export DEB_CXXFLAGS_MAINT_APPEND = -g1
endif
export CFLAGS := $(shell dpkg-buildflags --get CFLAGS) $(shell dpkg-buildflags --get CPPFLAGS)
export CXXFLAGS := $(shell dpkg-buildflags --get CXXFLAGS) $(shell dpkg-buildflags --get CPPFLAGS)
export LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS)
export QT_SELECT := qt5
VERSION_CLEAN_UPSTREAM = $(call dpkg_late_eval,VERSION_CLEAN_UPSTREAM,echo '$(DEB_VERSION_UPSTREAM)' | sed -e 's/\(~\|+\).*//')
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes))
ifeq ($(DEB_HOST_ARCH),arm64)
export NINJAFLAGS += -j2
endif
endif
gstab_architectures :=
fulldebug_architectures :=
disabled_jit_architectures := armel mips mipsel
disabled_pch_architectures := amd64 powerpc s390x
small_architectures := armhf mipsel
no_gold_architectures := arm64 armhf mipsel
config_args = -proprietary-codecs \
-feature-webengine-system-libvpx \
-system-ffmpeg \
-system-opus \
-system-webp \
-system-webengine-icu
touch_files = src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/lighthouse/lighthouse-dt-bundle.js \
src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/lighthouse/report-assets/report-generator.js \
src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/diff/diff_match_patch.js \
src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/formatter_worker/acorn/acorn.js \
src/3rdparty/chromium/third_party/polymer/v3_0/components-chromium/polymer/polymer_bundled.min.js \
src/3rdparty/chromium/third_party/web-animations-js/sources/web-animations-next-lite.min.js
%:
dh $@ --with pkgkde_symbolshelper
override_dh_auto_clean:
dh_auto_clean
rm -f .qmake.cache
rm -f config.tests/.qmake.cache
rm -f qtwebengine-config.h
rm -rf $(CURDIR)/test_root
rm -rf $(CURDIR)/docs
rm -rf $(CURDIR)/.local
rm -f $(CURDIR)/src/3rdparty/chromium/third_party/jstemplate/jstemplate_compiled.js
rm -f $(CURDIR)/src/3rdparty/chromium/third_party/mocha/mocha.js
rm -f $(CURDIR)/examples/webenginewidgets/contentmanipulation/jquery*.js
for fname in $(touch_files); do \
rm -f $(CURDIR)/$${fname}; \
done
override_dh_auto_configure:
# Run qmake once to create .qmake.conf and be sure to append the following values.
qmake QT_BUILD_PARTS+=tests QMAKE_EXTRA_ARGS+="$(config_args)" QMAKE_PYTHON2=python2
# Enable gstabs debugging symbols only on gstab_architectures.
ifeq ($(DEB_HOST_ARCH),$(findstring $(DEB_HOST_ARCH), $(gstab_architectures)))
echo "QMAKE_CXXFLAGS -= -g" >> .qmake.conf
echo "QMAKE_CXXFLAGS += -gstabs" >> .qmake.conf
# Enable normal debugging symbols only on fulldebug_architectures.
else ifeq ($(DEB_HOST_ARCH),$(findstring $(DEB_HOST_ARCH), $(fulldebug_architectures)))
echo "QMAKE_CXXFLAGS_DEBUG += -fdebug-types-section" >> .qmake.conf
echo "QMAKE_CXXFLAGS += -fdebug-types-section" >> .qmake.conf
echo "QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -fdebug-types-section" >> .qmake.conf
echo "QMAKE_CXXFLAGS_RELEASE += -fdebug-types-section" >> .qmake.conf
echo "QMAKE_LFLAGS += -fdebug-types-section" >> .qmake.conf
else
# Disable debugging symbols in all the other archs.
echo "QMAKE_CFLAGS -= -g" >> .qmake.conf
echo "QMAKE_CFLAGS -= -gstabs" >> .qmake.conf
echo "QMAKE_CXXFLAGS -= -g" >> .qmake.conf
echo "QMAKE_CXXFLAGS -= -gstabs" >> .qmake.conf
echo "QT_CONFIG -= force_debug_info" >> .qmake.conf
echo "QT_CONFIG -= separate_debug_info" >> .qmake.conf
endif
# Disable JIT on selected architectures
ifeq ($(DEB_HOST_ARCH),$(findstring $(DEB_HOST_ARCH), $(disabled_jit_architectures)))
echo "QMAKE_CXXFLAGS += -DENABLE_JIT=0" >> .qmake.conf
endif
# Disable header precompliation as it creates invalid includes on certain
# architectures causing build failure. LP: 1395661
ifeq ($(DEB_HOST_ARCH),$(findstring $(DEB_HOST_ARCH), $(disabled_pch_architectures)))
echo "CONFIG -= precompile_header" >> .qmake.conf
endif
ifeq ($(DEB_HOST_ARCH),$(findstring $(DEB_HOST_ARCH), $(small_architectures)))
echo "QMAKE_CXXFLAGS += --param ggc-min-expand=20" >> .qmake.conf
echo "QMAKE_CFLAGS += --param ggc-min-expand=20" >> .qmake.conf
echo "QMAKE_LFLAGS -= Wl,--gc-sections" >> .qmake.conf
endif
ifeq ($(DEB_HOST_ARCH),$(findstring $(DEB_HOST_ARCH), $(no_gold_architectures)))
# Do not use ld.gold
echo "QMAKE_LFLAGS -= -fuse-ld=gold" >> .qmake.conf
echo "QMAKE_LFLAGS += -fuse-ld=bfd" >> .qmake.conf
endif
# Make ld not cache the symbol tables of input files in memory to avoid memory exhaustion during the linking phase.
echo "QMAKE_LFLAGS += -Wl,--no-keep-memory" >> .qmake.conf
# Missing hardening flag detected by blhc
echo "QMAKE_LFLAGS += -Wl,-z,now" >> .qmake.conf
# Run qmake again now with the proper values.
qmake QT_BUILD_PARTS+=tests QMAKE_EXTRA_ARGS+="$(config_args)" QMAKE_PYTHON2=python2
# Create js files, that are needed for building step for arch and indep builds
cd $(CURDIR)/src/3rdparty/chromium/third_party/jstemplate/; \
closure-compiler --compilation_level ADVANCED_OPTIMIZATIONS \
--js util.js \
--js jsevalcontext.js \
--js jstemplate.js \
--js exports.js \
--js_output_file jstemplate_compiled.js
>examples/webenginewidgets/contentmanipulation/jquery.js cat debian/missing-sources/jquery-*.js
yui-compressor --type js "examples/webenginewidgets/contentmanipulation/jquery.js" -o "examples/webenginewidgets/contentmanipulation/jquery.min.js"
>src/3rdparty/chromium/third_party/mocha/mocha.js tar xaf debian/missing-sources/mocha*.tar.gz --wildcards --to-stdout '*/mocha.js'
set -ex; for fname in $(touch_files); do \
mkdir -p $(CURDIR)/$$(dirname $${fname}); \
touch $(CURDIR)/$${fname}; \
done
override_dh_auto_build-arch:
dh_auto_build -- -Onone
#we also need the resources.pak files, so we need the normal build.
override_dh_auto_build-indep: override_dh_auto_build-arch
dh_auto_build -- docs
override_dh_auto_install-arch:
dh_auto_install
# Remove rpath from the offending binaries
chrpath -d $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/qt5/libexec/QtWebEngineProcess
# Fix wrong path in pkgconfig files
find $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig -type f -name '*.pc' \
-exec sed -i -e 's/$(DEB_HOST_MULTIARCH)\/$(DEB_HOST_MULTIARCH)/$(DEB_HOST_MULTIARCH)/g' {} \;
# Remove libtool-like files
rm -fv debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/*.la
override_dh_auto_install-indep: override_dh_auto_install-arch
dh_auto_build -- INSTALL_ROOT=$(CURDIR)/debian/tmp install_docs
override_dh_link:
dh_link --package=qtwebengine5-examples \
usr/share/javascript/jquery/jquery.min.js usr/lib/$(DEB_HOST_MULTIARCH)/qt5/examples/webenginewidgets/contentmanipulation/jquery.min.js \
usr/share/javascript/marked/marked.min.js usr/lib/$(DEB_HOST_MULTIARCH)/qt5/examples/webenginewidgets/markdowneditor/resources/marked.js
dh_link --package=qtwebengine5-dev-tools \
usr/lib/qt5/bin/qwebengine_convert_dict usr/lib/$(DEB_HOST_MULTIARCH)/qt5/bin/qwebengine_convert_dict
dh_link --remaining-packages
override_dh_auto_test-arch:
$(MAKE) install -Csrc/core INSTALL_ROOT=$(CURDIR)/test_root
-QTWEBENGINEPROCESS_PATH=$(CURDIR)/libexec/QtWebEngineProcess xvfb-run -a \
-s "-screen 0 1024x768x24 +extension RANDR +extension RENDER +extension GLX" \
dh_auto_test --no-parallel -- -k \
QML2_IMPORT_PATH=$(CURDIR)/test_root/usr/lib/$(DEB_HOST_MULTIARCH)/qt5/qml \
LD_LIBRARY_PATH=$(CURDIR)/lib
override_dh_auto_test-indep:
# Do not attempt to run anything to make build-indep work
|