# HG changeset patch # User Franz Glasner # Date 1757945811 -7200 # Node ID b5f06508363a7a45830f56a1748f2311baede69b # Parent 710d30cd138a5b760abaf26d75594e787118429b PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd". A virtual environment with requirements from "requirements-build.txt" is required. diff -r 710d30cd138a -r b5f06508363a Makefile.freebsd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile.freebsd Mon Sep 15 16:16:51 2025 +0200 @@ -0,0 +1,34 @@ +# -*- mode: makefile; coding: utf-8 -*- +# +# GNU make and binutils/ar +# + +.PHONY: build + +THIS_MAKEFILE_JUSTNAME:= $(firstword $(MAKEFILE_LIST)) +THIS_MAKEFILE_DIR:= $(abspath $(dir $(THIS_MAKEFILE_JUSTNAME))) + +PYMUPDF_SETUP_MUPDF_BUILD?= $(THIS_MAKEFILE_DIR)/mupdf-source +PYMUPDF_SETUP_MUPDF_TESSERACT?= 0 +LIBCLANG_LIBRARY_PATH?= $(CLANG_DIR)/lib + +TEST= /bin/test +LOCALBASE?= /usr/local +SYMLINK?= /bin/ln -s +PYTHON?= python +PYTHON_PREFIXES!= $(PYTHON) -c 'import sys; print(sys.prefix); print(sys.base_prefix)' +CLANG_DIR?= /usr/local/llvm18 + +# Setting these does not work for some parts built by sub-makes +#CC= $(CLANG_DIR)/bin/clang +#CXX= $(CLANG_DIR)/bin/clang++ + +build: +ifneq ($(firstword $(PYTHON_PREFIXES)),$(lastword $(PYTHON_PREFIXES))) + $(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/make || $(SYMLINK) $(LOCALBASE)/bin/gmake $(firstword $(PYTHON_PREFIXES))/bin/make + $(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/ar || $(SYMLINK) $(LOCALBASE)/bin/ar $(firstword $(PYTHON_PREFIXES))/bin/ar + echo $(PYTHON_PREFIXES) + LIBCLANG_LIBRARY_PATH=$(LIBCLANG_LIBRARY_PATH) PYMUPDF_SETUP_MUPDF_BUILD=$(PYMUPDF_SETUP_MUPDF_BUILD) PYMUPDF_SETUP_MUPDF_TESSERACT=$(PYMUPDF_SETUP_MUPDF_TESSERACT) $(PYTHON) -m build --wheel --verbose --no-isolation +else + $(error Not in a Python virtual environment) +endif diff -r 710d30cd138a -r b5f06508363a mupdf-source/scripts/wrap/__main__.py --- a/mupdf-source/scripts/wrap/__main__.py Mon Sep 15 12:32:08 2025 +0200 +++ b/mupdf-source/scripts/wrap/__main__.py Mon Sep 15 16:16:51 2025 +0200 @@ -1698,7 +1698,7 @@ ) if command_was_run: macos_patch( libmupdfcpp, f'{build_dirs.dir_so}/libmupdf.dylib{so_version}') - if so_version and state.state_.linux: + if so_version and (state.state_.linux or state.state_.freebsd): jlib.system(f'ln -sf libmupdfcpp.so{so_version} {build_dirs.dir_so}/libmupdfcpp.so') elif 'fpic' in dir_so_flags: diff -r 710d30cd138a -r b5f06508363a mupdf-source/scripts/wrap/state.py --- a/mupdf-source/scripts/wrap/state.py Mon Sep 15 12:32:08 2025 +0200 +++ b/mupdf-source/scripts/wrap/state.py Mon Sep 15 16:16:51 2025 +0200 @@ -69,6 +69,7 @@ self.windows = (self.os_name == 'Windows' or self.os_name.startswith('CYGWIN')) self.cygwin = self.os_name.startswith('CYGWIN') self.openbsd = self.os_name == 'OpenBSD' + self.freebsd = self.os_name == 'FreeBSD' self.linux = self.os_name == 'Linux' self.macos = self.os_name == 'Darwin' self.pyodide = os.environ.get('OS') == 'pyodide' diff -r 710d30cd138a -r b5f06508363a requirements-build.txt --- a/requirements-build.txt Mon Sep 15 12:32:08 2025 +0200 +++ b/requirements-build.txt Mon Sep 15 16:16:51 2025 +0200 @@ -3,6 +3,8 @@ # cmake is required as a system package: could not build it as Python package # on the fly. # +# gmake is to be used! +# setuptools setuptools-scm build