comparison 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
comparison
equal deleted inserted replaced
37:1252325c592f 38:8934ac156ef5
34 THIS_MAKEFILE_DIR:= $(abspath $(dir $(THIS_MAKEFILE_JUSTNAME))) 34 THIS_MAKEFILE_DIR:= $(abspath $(dir $(THIS_MAKEFILE_JUSTNAME)))
35 35
36 PYMUPDF_SETUP_MUPDF_BUILD?= $(THIS_MAKEFILE_DIR)/mupdf-source 36 PYMUPDF_SETUP_MUPDF_BUILD?= $(THIS_MAKEFILE_DIR)/mupdf-source
37 # It would compile with tesseract because its sources are vendored by MuPDF 37 # It would compile with tesseract because its sources are vendored by MuPDF
38 PYMUPDF_SETUP_MUPDF_TESSERACT?= 0 38 PYMUPDF_SETUP_MUPDF_TESSERACT?= 0
39 #
40 # We use clang instead of libclang: On FreeBSD you have to install
41 # llvm to get a libclang.so installed; there is no libclang package
42 # with a bundled libclang.so. Additionally, libclang currently is not
43 # up-to-date with respect to clang versions >= 19.
44 #
45 PYMUPDF_SETUP_LIBCLANG?= clang>=18,<19
39 LIBCLANG_LIBRARY_PATH?= $(CLANG_DIR)/lib 46 LIBCLANG_LIBRARY_PATH?= $(CLANG_DIR)/lib
47 CLANG_DIR?= /usr/local/llvm18
40 48
41 TEST= /bin/test 49 TEST= /bin/test
42 LOCALBASE?= /usr/local 50 LOCALBASE?= /usr/local
43 SYMLINK?= /bin/ln -s 51 SYMLINK?= /bin/ln -s
44 PYTHON?= python3 52 PYTHON?= python3
45 PYTHON_PREFIXES!= $(PYTHON) -c 'import sys; print(sys.prefix); print(sys.base_prefix)' 53 PYTHON_PREFIXES!= $(PYTHON) -c 'import sys; print(sys.prefix); print(sys.base_prefix)'
46 CLANG_DIR?= /usr/local/llvm18
47 54
48 # 55 #
49 # Setting these does not work for some parts built by sub-makes. 56 # Setting these does not work for some parts built by sub-makes.
50 # Symlink in the venv instead. 57 # Symlink in the venv instead.
51 # 58 #
75 $(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/make || $(SYMLINK) $(LOCALBASE)/bin/gmake $(firstword $(PYTHON_PREFIXES))/bin/make 82 $(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/make || $(SYMLINK) $(LOCALBASE)/bin/gmake $(firstword $(PYTHON_PREFIXES))/bin/make
76 $(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/ar || $(SYMLINK) $(CLANG_DIR)/bin/llvm-ar $(firstword $(PYTHON_PREFIXES))/bin/ar 83 $(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/ar || $(SYMLINK) $(CLANG_DIR)/bin/llvm-ar $(firstword $(PYTHON_PREFIXES))/bin/ar
77 $(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/cc || $(SYMLINK) $(CLANG_DIR)/bin/clang $(firstword $(PYTHON_PREFIXES))/bin/cc 84 $(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/cc || $(SYMLINK) $(CLANG_DIR)/bin/clang $(firstword $(PYTHON_PREFIXES))/bin/cc
78 $(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/c++ || $(SYMLINK) $(CLANG_DIR)/bin/clang++ $(firstword $(PYTHON_PREFIXES))/bin/c++ 85 $(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/c++ || $(SYMLINK) $(CLANG_DIR)/bin/clang++ $(firstword $(PYTHON_PREFIXES))/bin/c++
79 $(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/ld || $(SYMLINK) $(CLANG_DIR)/bin/ld.lld $(firstword $(PYTHON_PREFIXES))/bin/ld 86 $(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/ld || $(SYMLINK) $(CLANG_DIR)/bin/ld.lld $(firstword $(PYTHON_PREFIXES))/bin/ld
80 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 87 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
81 88
82 89
83 sdist: check 90 sdist: check
84 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 91 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
85 92
86 93
87 populate-venv: 94 populate-venv:
88 ifneq ($(firstword $(PYTHON_PREFIXES)),$(lastword $(PYTHON_PREFIXES))) 95 ifneq ($(firstword $(PYTHON_PREFIXES)),$(lastword $(PYTHON_PREFIXES)))
89 $(PYTHON) -m pip install -U -r requirements-build.txt 96 $(PYTHON) -m pip install -U -r requirements-build.txt
95 check: 102 check:
96 ifneq ($(firstword $(PYTHON_PREFIXES)),$(lastword $(PYTHON_PREFIXES))) 103 ifneq ($(firstword $(PYTHON_PREFIXES)),$(lastword $(PYTHON_PREFIXES)))
97 $(PYTHON) -m pip freeze | grep -E '^\s*setuptools-scm==' >/dev/null 104 $(PYTHON) -m pip freeze | grep -E '^\s*setuptools-scm==' >/dev/null
98 $(PYTHON) -m pip freeze | grep -E '^\s*build==' >/dev/null 105 $(PYTHON) -m pip freeze | grep -E '^\s*build==' >/dev/null
99 $(PYTHON) -m pip freeze | grep -E '^\s*swig==' >/dev/null 106 $(PYTHON) -m pip freeze | grep -E '^\s*swig==' >/dev/null
100 $(PYTHON) -m pip freeze | grep -E '^\s*libclang==18\.' >/dev/null 107 $(PYTHON) -m pip freeze | grep -E '^\s*clang==18\.' >/dev/null
108 # This covers the "clang" and "libclang" package
109 $(PYTHON) -c 'import clang.cindex' >/dev/null
101 $(TEST) -x $(LOCALBASE)/bin/gmake 110 $(TEST) -x $(LOCALBASE)/bin/gmake
102 $(TEST) -x $(LOCALBASE)/bin/cmake 111 $(TEST) -x $(LOCALBASE)/bin/cmake
103 $(TEST) -x $(CLANG_DIR)/bin/llvm-ar 112 $(TEST) -x $(CLANG_DIR)/bin/llvm-ar
104 $(TEST) -x $(CLANG_DIR)/bin/clang 113 $(TEST) -x $(CLANG_DIR)/bin/clang
105 $(TEST) -x $(CLANG_DIR)/bin/clang++ 114 $(TEST) -x $(CLANG_DIR)/bin/clang++