Skip to content

Commit cce7b7e

Browse files
committed
New package: libpdfium-7651
1 parent 54f1146 commit cce7b7e

2 files changed

Lines changed: 196 additions & 0 deletions

File tree

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: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
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"
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+
[ ! -d "${_incdir}" ] && _incdir="/usr/include"
61+
62+
# Create parents
63+
mkdir -p third_party/icu/source/common \
64+
third_party/abseil-cpp \
65+
third_party/zlib \
66+
third_party/libpng \
67+
third_party/libjpeg_turbo \
68+
third_party/lcms2/include \
69+
third_party/libopenjpeg2
70+
71+
# Perform symlinks
72+
# ICU
73+
ln -sf "${_incdir}/unicode" third_party/icu/source/common/
74+
75+
# Abseil
76+
ln -sf "${_incdir}/absl" third_party/abseil-cpp/absl
77+
78+
# Zlib, PNG, JPEG, LCMS2
79+
ln -sf "${_incdir}/zlib.h" "${_incdir}/zconf.h" third_party/zlib/
80+
ln -sf "${_incdir}/png.h" "${_incdir}/pngconf.h" "${_incdir}/pnglibconf.h" third_party/libpng/
81+
ln -sf "${_incdir}/jpeglib.h" "${_incdir}/jerror.h" "${_incdir}/jconfig.h" "${_incdir}/jmorecfg.h" third_party/libjpeg_turbo/
82+
ln -sf "${_incdir}/lcms2.h" "${_incdir}/lcms2_plugin.h" third_party/lcms2/include/
83+
84+
# OpenJPEG
85+
_ojp_inc=$(ls -d ${_incdir}/openjpeg-2.* | head -n1)
86+
ln -sf "${_ojp_inc}/openjpeg.h" third_party/libopenjpeg2/openjpeg.h
87+
88+
# GN Bridge Builders
89+
cat > third_party/icu/BUILD.gn <<-EOF
90+
import("//build/config/linux/pkg_config.gni")
91+
pkg_config("icu_config") { packages = [ "icu-uc", "icu-i18n" ] }
92+
group("icuuc") { public_configs = [ ":icu_config" ] }
93+
group("icui18n") { public_configs = [ ":icu_config" ] }
94+
EOF
95+
96+
cat > third_party/abseil-cpp/BUILD.gn <<-EOF
97+
config("absl_config") {
98+
include_dirs = [ "." ]
99+
libs = [
100+
"absl_base",
101+
"absl_int128",
102+
"absl_strings",
103+
"absl_hash",
104+
"absl_synchronization",
105+
"absl_raw_hash_set", # THE KEY FIX
106+
"absl_low_level_hash",
107+
"absl_raw_logging_internal"
108+
]
109+
}
110+
group("absl") { public_configs = [ ":absl_config" ] }
111+
EOF
112+
113+
cat > third_party/BUILD.gn <<-EOF
114+
import("//build/config/linux/pkg_config.gni")
115+
pkg_config("s") { packages = [ "zlib", "libpng", "libjpeg", "lcms2", "libopenjp2", "freetype2" ] }
116+
group("zlib") { public_configs = [ ":s" ] }
117+
group("png") { public_configs = [ ":s" ] }
118+
group("jpeg") { public_configs = [ ":s" ] }
119+
group("lcms2") { public_configs = [ ":s" ] }
120+
group("libopenjpeg2") { public_configs = [ ":s" ] }
121+
group("fx_agg") { public_deps = [ "//third_party/agg23" ] }
122+
group("fx_freetype") { public_configs = [ ":s" ] }
123+
EOF
124+
125+
mkdir -p third_party/agg23
126+
cat > third_party/agg23/BUILD.gn <<-EOF
127+
config("c") { include_dirs = [ "." ] }
128+
source_set("agg23") {
129+
configs -= [ "//build/config/compiler:chromium_code" ]
130+
configs += [ "//build/config/compiler:no_chromium_code" ]
131+
public_configs = [ ":c" ]
132+
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" ]
133+
}
134+
EOF
135+
136+
# Toolchain
137+
sed -i 's|/usr/bin/python|/usr/bin/python3|g' build/toolchain/gcc_toolchain.gni
138+
sed -i 's|toolprefix = ".*"|toolprefix = ""|g' build/toolchain/linux/BUILD.gn
139+
sed -i -e "s|gcc\"|${CC}\"|g" -e "s|g++\"|${CXX}\"|g" -e "s|ar\"|${AR}\"|g" \
140+
-e "s|readelf\"|${READELF}\"|g" -e "s|nm\"|${NM}\"|g" build/toolchain/linux/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}\" extra_cppflags=\"${CXXFLAGS}\" extra_ldflags=\"${LDFLAGS}\""
161+
}
162+
163+
do_build() {
164+
ninja -C out/Release pdfium
165+
}
166+
167+
do_install() {
168+
vinstall out/Release/libpdfium.so 755 usr/lib
169+
170+
vmkdir usr/include/pdfium
171+
vcopy "public/*.h" usr/include/pdfium
172+
173+
vmkdir usr/lib/pkgconfig
174+
cat > "${DESTDIR}/usr/lib/pkgconfig/pdfium.pc" <<-EOF
175+
prefix=/usr
176+
exec_prefix=\${prefix}
177+
libdir=\${exec_prefix}/lib
178+
includedir=\${prefix}/include/pdfium
179+
180+
Name: pdfium
181+
Description: Google PDFium rendering library
182+
Version: ${version}
183+
Libs: -L\${libdir} -lpdfium
184+
Cflags: -I\${includedir}
185+
EOF
186+
}
187+
188+
libpdfium-devel_package() {
189+
short_desc+=" - development files"
190+
depends="${sourcepkg}>=${version}_${revision}"
191+
pkg_install() {
192+
vmove usr/include
193+
vmove usr/lib/pkgconfig
194+
}
195+
}

0 commit comments

Comments
 (0)