Repository navigation
Release v1.0.26
Changes in this release
Critical Build System Fixes (Build Analysis and Repair)
Build Error Analysis and Resolution
After extensive analysis of build failures in issues/102.txt, identified and addressed multiple critical build system issues:
Fixed - Framework Linker Arguments
- Problem: Malformed framework arguments causing
clang++: error: no such file or directory: 'ApplicationServices' - Root Cause: Cairo's pkg-config files contained
-framework ApplicationServiceswhich CMake/ninja didn't quote properly - Solution: Added automatic sed fix in
build.shto convert framework flags to-Wl,-framework,CoreFoundation -Wl,-framework,ApplicationServicesformat - Files Modified:
v2/scripts/build.sh(lines 1288-1295)
Fixed - Universal Binary Architecture Support
- Problem: FontConfig configure failing with
Invalid configuration 'arm64-apple-darwin': machine 'arm64-apple' not recognized - Root Cause: Outdated config.sub in fontconfig-2.15.0 doesn't recognize arm64 architecture
- Solution: Added automatic config.sub update from GNU config repository during fontconfig build
- Files Modified:
v2/scripts/build.sh(lines 1252-1257)
Fixed - FontConfig Static Library Integration
- Problem: Poppler still linking against system fontconfig (
/usr/local/lib/libfontconfig.dylib) despite configuration - Root Cause: FontConfig build was commented out due to previous issues
- Solution:
- Re-enabled fontconfig build with per-architecture compilation and lipo merging
- Updated Poppler CMake configuration with explicit static fontconfig paths
- Set PKG_CONFIG_PATH to prioritize staged dependencies
- Files Modified:
v2/scripts/build.sh(lines 1238-1313, 1417-1446)- Added
-DFONTCONFIG_LIBRARYand-DFONTCONFIG_INCLUDE_DIRto Poppler build
Fixed - Cairo FontConfig Integration
- Problem: Cairo built with fontconfig disabled, breaking dependency chain
- Root Cause: Previous build issues led to disabling fontconfig support
- Solution: Re-enabled fontconfig in Cairo meson configuration (
-Dfontconfig=enabled) - Files Modified:
v2/scripts/build.sh(line 1340)
Updated - Build Environment Isolation
- Problem: System libraries (Homebrew) interfering with static builds
- Solution:
- Set PKG_CONFIG_PATH to only include staged dependencies
- Added explicit environment variables for FONTCONFIG_CFLAGS and FONTCONFIG_LIBS
- Improved library path isolation
- Files Modified:
v2/scripts/build.sh(lines 1417-1427)
Build Infrastructure Improvements
Enhanced Error Handling
- Improved curl command for config.sub download with better error handling
- Added fallback mechanisms for config.sub updates
Dependency Chain Fixes
- Complete chain: pdf2htmlEX → poppler-glib → cairo → fontconfig
- All components now configured for universal binary static linking
- Proper dependency order and library path management
Current Build Status
- Basic dependencies: ✅ All built successfully (libjpeg-turbo, libpng, bzip2, brotli, etc.)
- FontConfig: 🔧 Build script fixed, testing in progress
- Cairo: ✅ Framework linking fixed, fontconfig enabled
- Poppler: 🔧 Configuration updated, awaiting fontconfig completion
- pdf2htmlEX: ⏳ Pending successful Poppler build
Technical Debt Addressed
- Removed temporary workarounds and disabled features
- Restored full fontconfig support throughout dependency chain
- Improved universal binary build reliability
- Enhanced pkg-config path management
Files Modified in This Session
v2/scripts/build.sh- Major updates to fontconfig, Cairo, and Poppler buildsv2/build/staging/lib/pkgconfig/cairo*.pc- Framework argument fixesWORK.md- Updated with current build status and issue analysis
Known Issues Being Addressed
- Some test executables still failing to link (tests can be disabled)
- Poppler test data warnings (non-critical, expected)
- CMake policy warnings (non-blocking)
Installation
brew tap twardoch/pdf2htmlex
brew install pdf2htmlexOr install directly from this repository:
brew install --build-from-source https://raw.githubusercontent.com/twardoch/pdf2htmlEX/main/v2/Formula/pdf2htmlex.rb