Skip to content

Commit 4f39271

Browse files
committed
New package: libpdfium-7651
1 parent d188dd7 commit 4f39271

3 files changed

Lines changed: 201 additions & 0 deletions

File tree

common/shlibs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4533,6 +4533,7 @@ libomemo-c.so.0 libomemo-c-0.5.1_1
45334533
libclapper-gtk-0.0.so.0 clapper-libs-0.8.0_1
45344534
libclapper-0.0.so.0 clapper-libs-0.8.0_1
45354535
libopenxr_loader.so.1 openxr-1.1.47_1
4536+
libpdfium.so.1 libpdfium-7651_1
45364537
libppsdocument-4.0.so.5 libpapers-48.3_1
45374538
libppsshell-4.0.so.4 libpapers-48.3_1
45384539
libppsview-4.0.so.4 libpapers-48.3_1

srcpkgs/libpdfium-devel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
libpdfium

srcpkgs/libpdfium/template

Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
# Template file for 'libpdfium'
2+
pkgname=libpdfium
3+
version=7651
4+
revision=1
5+
_commit_pdfium="7cc0a4a9213a9d5c13695d0747f56ede53e5df39"
6+
_commit_build="73bc49ded0de5ce2de9fb4e6aa8b1394368ec690"
7+
_commit_buildtools="4dc32b3f510b330137385e2b3a631ca8e13a8e22"
8+
_commit_fast_float="8.2.2"
9+
hostmakedepends="python3 ninja gn pkg-config tar"
10+
makedepends="libjpeg-turbo-devel icu-devel libopenjpeg2-devel freetype-devel
11+
glib-devel abseil-cpp-devel lcms2-devel libpng-devel zlib-devel"
12+
short_desc="Google PDF rendering library"
13+
maintainer="Mateusz Sylwestrzak <slymattz@gmail.com>"
14+
license="Apache-2.0"
15+
homepage="https://pdfium.googlesource.com/pdfium"
16+
distfiles="
17+
https://pdfium.googlesource.com/pdfium/+archive/${_commit_pdfium}.tar.gz>pdfium-${version}.tar.gz
18+
https://chromium.googlesource.com/chromium/src/build/+archive/${_commit_build}.tar.gz>build-${version}.tar.gz
19+
https://chromium.googlesource.com/chromium/src/buildtools/+archive/${_commit_buildtools}.tar.gz>buildtools-${version}.tar.gz
20+
https://github.com/fastfloat/fast_float/archive/refs/tags/v${_commit_fast_float}.tar.gz>fast_float.tar.gz"
21+
checksum="@a6f3fb34f5fcc728cc4a4aabbb66b409bf50f648ed529a7e646abddd8752943f
22+
@f41ce5add198758c0a9550a57b59ad6cfeab4e7d291ffef27c3b9c5f1800477a
23+
@f19f859a4da0b8fd98a10fe14f0166ed817071f6c1cb75ec4d4299b0121b51e2
24+
e64b5fff88e04959154adbd5fb83331d91f2e04ac06454671cdfcbdff172b158"
25+
skip_extraction="build-${version}.tar.gz buildtools-${version}.tar.gz fast_float.tar.gz"
26+
27+
post_extract() {
28+
mkdir -p build buildtools third_party/fast_float/src
29+
tar -xf "${XBPS_SRCDISTDIR}/${pkgname}-${version}/build-${version}.tar.gz" -C build
30+
tar -xf "${XBPS_SRCDISTDIR}/${pkgname}-${version}/buildtools-${version}.tar.gz" -C buildtools
31+
tar -xf "${XBPS_SRCDISTDIR}/${pkgname}-${version}/fast_float.tar.gz" -C third_party/fast_float/src --strip-components=1
32+
33+
# Infrastructure stubs
34+
mkdir -p build/config build_overrides pdf_overrides testing v8 third_party/test_fonts
35+
rm -f testing/BUILD.gn
36+
37+
echo "checkout_google_benchmark = false" > build/config/gclient_args.gni
38+
echo "checkout_nacl = false" >> build/config/gclient_args.gni
39+
echo "build_with_chromium = false" > build_overrides/build.gni
40+
echo "use_system_libcxx = true" >> build_overrides/build.gni
41+
42+
cat > pdf_overrides/build.gni <<-EOF
43+
pdf_is_standalone = true
44+
pdf_enable_v8_override = false
45+
pdf_enable_xfa_override = false
46+
pdf_use_skia_override = false
47+
EOF
48+
49+
for g in pdfium_test path_service embedder_test_support unit_test_support test_support; do
50+
echo "group(\"$g\") {}" >> testing/BUILD.gn
51+
done
52+
53+
echo 'group("test_fonts") {}' > third_party/test_fonts/BUILD.gn
54+
echo 'config("external_startup_data") {}' > v8/BUILD.gn
55+
echo 'group("v8_libplatform") {}' >> v8/BUILD.gn
56+
echo 'group("v8") {}' >> v8/BUILD.gn
57+
58+
# Path hijacking
59+
_incdir="${XBPS_CROSS_BASE}/usr/include"
60+
61+
# Create parents
62+
mkdir -p third_party/icu/source/common \
63+
third_party/abseil-cpp \
64+
third_party/zlib \
65+
third_party/libpng \
66+
third_party/libjpeg_turbo \
67+
third_party/lcms2/include \
68+
third_party/libopenjpeg2
69+
70+
# Perform symlinks
71+
ln -sf "${_incdir}/unicode" third_party/icu/source/common/
72+
ln -sf "${_incdir}/absl" third_party/abseil-cpp/absl
73+
ln -sf "${_incdir}/zlib.h" "${_incdir}/zconf.h" third_party/zlib/
74+
ln -sf "${_incdir}/png.h" "${_incdir}/pngconf.h" "${_incdir}/pnglibconf.h" third_party/libpng/
75+
ln -sf "${_incdir}/jpeglib.h" "${_incdir}/jerror.h" "${_incdir}/jconfig.h" "${_incdir}/jmorecfg.h" third_party/libjpeg_turbo/
76+
ln -sf "${_incdir}/lcms2.h" "${_incdir}/lcms2_plugin.h" third_party/lcms2/include/
77+
78+
_ojp_inc=$(ls -d ${_incdir}/openjpeg-2.* | head -n1)
79+
ln -sf "${_ojp_inc}/openjpeg.h" third_party/libopenjpeg2/openjpeg.h
80+
81+
# Links to system ICU but fixes include paths
82+
cat > third_party/icu/BUILD.gn <<-EOF
83+
import("//build/config/linux/pkg_config.gni")
84+
pkg_config("icu_config") { packages = [ "icu-uc", "icu-i18n" ] }
85+
config("icu_local_headers") {
86+
include_dirs = [ "source/common", "source/i18n" ]
87+
}
88+
group("icuuc") { public_configs = [ ":icu_config", ":icu_local_headers" ] }
89+
group("icui18n") { public_configs = [ ":icu_config", ":icu_local_headers" ] }
90+
EOF
91+
92+
cat > third_party/abseil-cpp/BUILD.gn <<-EOF
93+
config("absl_config") {
94+
include_dirs = [ "." ]
95+
libs = [ "absl_base", "absl_int128", "absl_strings", "absl_hash", "absl_synchronization", "absl_raw_hash_set", "absl_low_level_hash", "absl_raw_logging_internal" ]
96+
}
97+
group("absl") { public_configs = [ ":absl_config" ] }
98+
EOF
99+
100+
cat > third_party/BUILD.gn <<-EOF
101+
import("//build/config/linux/pkg_config.gni")
102+
pkg_config("s") { packages = [ "zlib", "libpng", "libjpeg", "lcms2", "libopenjp2", "freetype2" ] }
103+
104+
config("jpeg_shim") { include_dirs = [ "libjpeg_turbo" ] }
105+
group("jpeg") { public_configs = [ ":s", ":jpeg_shim" ] }
106+
107+
config("lcms2_shim") { include_dirs = [ "lcms2/include" ] }
108+
group("lcms2") { public_configs = [ ":s", ":lcms2_shim" ] }
109+
110+
group("zlib") { public_configs = [ ":s" ] }
111+
group("png") { public_configs = [ ":s" ] }
112+
group("libopenjpeg2") { public_configs = [ ":s" ] }
113+
group("fx_agg") { public_deps = [ "//third_party/agg23" ] }
114+
group("fx_freetype") { public_configs = [ ":s" ] }
115+
group("icu") { public_deps = [ "//third_party/icu:icuuc", "//third_party/icu:icui18n" ] }
116+
EOF
117+
118+
mkdir -p third_party/agg23
119+
cat > third_party/agg23/BUILD.gn <<-EOF
120+
config("c") { include_dirs = [ "." ] }
121+
source_set("agg23") {
122+
configs -= [ "//build/config/compiler:chromium_code" ]
123+
configs += [ "//build/config/compiler:no_chromium_code" ]
124+
public_configs = [ ":c" ]
125+
sources = [ "agg_curves.cpp", "agg_curves.h", "agg_path_storage.cpp", "agg_path_storage.h", "agg_rasterizer_scanline_aa.cpp", "agg_rasterizer_scanline_aa.h", "agg_vcgen_dash.cpp", "agg_vcgen_dash.h", "agg_vcgen_stroke.cpp", "agg_vcgen_stroke.h" ]
126+
}
127+
EOF
128+
129+
# Enable cross-compilation
130+
sed -i '/toolprefix =/d' build/toolchain/linux/BUILD.gn
131+
sed -i \
132+
-e "s|cc = \".*gcc\"|cc = \"${CC}\"|g" \
133+
-e "s|cxx = \".*g++\"|cxx = \"${CXX}\"|g" \
134+
-e "s|ar = \".*ar\"|ar = \"${AR}\"|g" \
135+
-e "s|nm = \".*nm\"|nm = \"${NM}\"|g" \
136+
-e "s|readelf = \".*readelf\"|readelf = \"${READELF}\"|g" \
137+
build/toolchain/linux/BUILD.gn
138+
139+
# Enable extra_* flags in GN
140+
sed -i '1i declare_args() { extra_cflags="" extra_cppflags="" extra_ldflags="" }' build/config/compiler/BUILD.gn
141+
}
142+
143+
do_configure() {
144+
case "$XBPS_TARGET_MACHINE" in
145+
aarch64*) _cpu=arm64 ;;
146+
arm*) _cpu=arm ;;
147+
mips64*) _cpu=mips64 ;;
148+
mips*) _cpu=mips ;;
149+
ppc*) _cpu=ppc ;;
150+
i686*) _cpu=x86 ;;
151+
x86_64*) _cpu=x64 ;;
152+
esac
153+
154+
gn gen out/Release --args="
155+
target_cpu=\"${_cpu}\" target_os=\"linux\" is_debug=false
156+
pdf_enable_v8=false pdf_enable_xfa=false is_component_build=true
157+
pdf_is_standalone=true use_system_libopenjpeg2=true use_custom_libcxx=false
158+
use_sysroot=false is_clang=false clang_use_chrome_plugins=false
159+
treat_warnings_as_errors=false symbol_level=0
160+
extra_cflags=\"${CFLAGS}\"
161+
extra_cppflags=\"${CXXFLAGS}\"
162+
extra_ldflags=\"${LDFLAGS} -Wl,-soname,libpdfium.so.1\""
163+
}
164+
165+
do_build() {
166+
ninja -C out/Release pdfium
167+
}
168+
169+
do_install() {
170+
vinstall out/Release/libpdfium.so 755 usr/lib libpdfium.so.1
171+
ln -sf libpdfium.so.1 ${DESTDIR}/usr/lib/libpdfium.so
172+
173+
vmkdir usr/include/pdfium
174+
vcopy "public/*.h" usr/include/pdfium
175+
176+
vmkdir usr/lib/pkgconfig
177+
cat > "${DESTDIR}/usr/lib/pkgconfig/pdfium.pc" <<-EOF
178+
prefix=/usr
179+
exec_prefix=\${prefix}
180+
libdir=\${exec_prefix}/lib
181+
includedir=\${prefix}/include/pdfium
182+
183+
Name: pdfium
184+
Description: Google PDFium rendering library
185+
Version: ${version}
186+
Libs: -L\${libdir} -lpdfium
187+
Cflags: -I\${includedir}
188+
EOF
189+
}
190+
191+
libpdfium-devel_package() {
192+
short_desc+=" - development files"
193+
depends="${sourcepkg}>=${version}_${revision}"
194+
pkg_install() {
195+
vmove "usr/lib/*.so"
196+
vmove usr/include
197+
vmove usr/lib/pkgconfig
198+
}
199+
}

0 commit comments

Comments
 (0)