|
| 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