changeset 6:b5f06508363a

PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd". A virtual environment with requirements from "requirements-build.txt" is required.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 16:16:51 +0200
parents 710d30cd138a
children 5ab937c03c27
files Makefile.freebsd mupdf-source/scripts/wrap/__main__.py mupdf-source/scripts/wrap/state.py requirements-build.txt
diffstat 4 files changed, 38 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- /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
--- 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:
--- 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'
--- 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