diff Makefile.freebsd @ 38:8934ac156ef5

Allow to build with the PyPI package "clang" instead of "libclang". 1. It seems to be maintained. 2. In the FreeBSD base system there is no pre-built libclang.so. If you need this library you have to install llvm from ports additionally. 2. On FreeBSD there is no pre-built wheel "libclang" with a packaged libclang.so.
author Franz Glasner <fzglas.hg@dom66.de>
date Tue, 23 Sep 2025 10:27:15 +0200
parents f0e1e5146733
children
line wrap: on
line diff
--- a/Makefile.freebsd	Mon Sep 22 11:44:07 2025 +0200
+++ b/Makefile.freebsd	Tue Sep 23 10:27:15 2025 +0200
@@ -36,14 +36,21 @@
 PYMUPDF_SETUP_MUPDF_BUILD?=	$(THIS_MAKEFILE_DIR)/mupdf-source
 # It would compile with tesseract because its sources are vendored by MuPDF
 PYMUPDF_SETUP_MUPDF_TESSERACT?=	0
+#
+# We use clang instead of libclang: On FreeBSD you have to install
+# llvm to get a libclang.so installed; there is no libclang package
+# with a bundled libclang.so. Additionally, libclang currently is not
+# up-to-date with respect to clang versions >= 19.
+#
+PYMUPDF_SETUP_LIBCLANG?=	clang>=18,<19
 LIBCLANG_LIBRARY_PATH?=		$(CLANG_DIR)/lib
+CLANG_DIR?=			/usr/local/llvm18
 
 TEST=				/bin/test
 LOCALBASE?=			/usr/local
 SYMLINK?=			/bin/ln -s
 PYTHON?=			python3
 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.
@@ -77,11 +84,11 @@
 	$(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/cc || $(SYMLINK) $(CLANG_DIR)/bin/clang $(firstword $(PYTHON_PREFIXES))/bin/cc
 	$(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/c++ || $(SYMLINK) $(CLANG_DIR)/bin/clang++ $(firstword $(PYTHON_PREFIXES))/bin/c++
 	$(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/ld || $(SYMLINK) $(CLANG_DIR)/bin/ld.lld $(firstword $(PYTHON_PREFIXES))/bin/ld
-	FORTIFY=$(FORTIFY) EXTRA_CHECKS=$(EXTRA_CHECKS) PIPCL_VERBOSE=2 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
+	FORTIFY=$(FORTIFY) EXTRA_CHECKS=$(EXTRA_CHECKS) PIPCL_VERBOSE=2 LIBCLANG_LIBRARY_PATH=$(LIBCLANG_LIBRARY_PATH) PYMUPDF_SETUP_MUPDF_BUILD=$(PYMUPDF_SETUP_MUPDF_BUILD) PYMUPDF_SETUP_MUPDF_TESSERACT=$(PYMUPDF_SETUP_MUPDF_TESSERACT) PYMUPDF_SETUP_LIBCLANG='$(PYMUPDF_SETUP_LIBCLANG)' $(PYTHON) -m build --wheel --verbose --no-isolation
 
 
 sdist: check
-	PIPCL_VERBOSE=2 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 --sdist --verbose --no-isolation
+	PIPCL_VERBOSE=2 LIBCLANG_LIBRARY_PATH=$(LIBCLANG_LIBRARY_PATH) PYMUPDF_SETUP_MUPDF_BUILD=$(PYMUPDF_SETUP_MUPDF_BUILD) PYMUPDF_SETUP_MUPDF_TESSERACT=$(PYMUPDF_SETUP_MUPDF_TESSERACT) PYMUPDF_SETUP_LIBCLANG='$(PYMUPDF_SETUP_LIBCLANG)' $(PYTHON) -m build --sdist --verbose --no-isolation
 
 
 populate-venv:
@@ -97,7 +104,9 @@
 	$(PYTHON) -m pip freeze | grep -E '^\s*setuptools-scm==' >/dev/null
 	$(PYTHON) -m pip freeze | grep -E '^\s*build==' >/dev/null
 	$(PYTHON) -m pip freeze | grep -E '^\s*swig==' >/dev/null
-	$(PYTHON) -m pip freeze | grep -E '^\s*libclang==18\.' >/dev/null
+	$(PYTHON) -m pip freeze | grep -E '^\s*clang==18\.' >/dev/null
+	# This covers the "clang" and "libclang" package
+	$(PYTHON) -c 'import clang.cindex' >/dev/null
 	$(TEST) -x $(LOCALBASE)/bin/gmake
 	$(TEST) -x $(LOCALBASE)/bin/cmake
 	$(TEST) -x $(CLANG_DIR)/bin/llvm-ar