annotate Makefile.freebsd @ 9:b2d41d02518f

Use the LLVM compilers by symlinking them in the venv. This is because CC= and CXX= do not work for some subprojects.
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 17 Sep 2025 06:11:34 +0200
parents bf1744083a54
children 76e05e28f6a8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
1 # -*- mode: makefile; coding: utf-8 -*-
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
2 #
8
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
3 # Needs GNU make (aka gmake) and binutils/ar (instead of FreeBSD /usr/bin/ar).
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
4 #
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
5 # Building against an installed mupdf package fails because the libmupdfcpp.so
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
6 # is missing.
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
7 #
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
8 # Prepare:
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
9 #
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
10 # - Create a Python venv and activate it
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
11 #
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
12 # - In the "bin"-directory of the venv symlink "make" to /usr/local/bin/ggmake
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
13 # and "ar" to /usr/local/bin/ar
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
14 #
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
15 # * Makefiles have GNU syntax
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
16 # * ar is called with @-response-files -- which are a GNU feature
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
17 #
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
18 # - At first to not build with tesseract (OCR)
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
19 #
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
20 # export PYMUPDF_SETUP_MUPDF_TESSERACT=0
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
21 #
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
22 # - Install a LLVM package that has the same version as the libclang
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
23 # Python package that will be used/installed
bf1744083a54 Some documentation notes into Makefile.freebsd
Franz Glasner <fzglas.hg@dom66.de>
parents: 6
diff changeset
24 # (e.g. pkg install llvm18 because of libclang>=18,<19)
6
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
25 #
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
26
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
27 .PHONY: build
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
28
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
29 THIS_MAKEFILE_JUSTNAME:= $(firstword $(MAKEFILE_LIST))
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
30 THIS_MAKEFILE_DIR:= $(abspath $(dir $(THIS_MAKEFILE_JUSTNAME)))
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
31
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
32 PYMUPDF_SETUP_MUPDF_BUILD?= $(THIS_MAKEFILE_DIR)/mupdf-source
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
33 PYMUPDF_SETUP_MUPDF_TESSERACT?= 0
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
34 LIBCLANG_LIBRARY_PATH?= $(CLANG_DIR)/lib
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
35
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
36 TEST= /bin/test
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
37 LOCALBASE?= /usr/local
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
38 SYMLINK?= /bin/ln -s
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
39 PYTHON?= python
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
40 PYTHON_PREFIXES!= $(PYTHON) -c 'import sys; print(sys.prefix); print(sys.base_prefix)'
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
41 CLANG_DIR?= /usr/local/llvm18
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
42
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
43 # Setting these does not work for some parts built by sub-makes
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
44 #CC= $(CLANG_DIR)/bin/clang
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
45 #CXX= $(CLANG_DIR)/bin/clang++
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
46
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
47 build:
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
48 ifneq ($(firstword $(PYTHON_PREFIXES)),$(lastword $(PYTHON_PREFIXES)))
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
49 $(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/make || $(SYMLINK) $(LOCALBASE)/bin/gmake $(firstword $(PYTHON_PREFIXES))/bin/make
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
50 $(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/ar || $(SYMLINK) $(LOCALBASE)/bin/ar $(firstword $(PYTHON_PREFIXES))/bin/ar
9
b2d41d02518f Use the LLVM compilers by symlinking them in the venv.
Franz Glasner <fzglas.hg@dom66.de>
parents: 8
diff changeset
51 $(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/cc || $(SYMLINK) $(CLANG_DIR)/bin/clang $(firstword $(PYTHON_PREFIXES))/bin/cc
b2d41d02518f Use the LLVM compilers by symlinking them in the venv.
Franz Glasner <fzglas.hg@dom66.de>
parents: 8
diff changeset
52 $(TEST) -e $(firstword $(PYTHON_PREFIXES))/bin/c++ || $(SYMLINK) $(CLANG_DIR)/bin/clang++ $(firstword $(PYTHON_PREFIXES))/bin/c++
6
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
53 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
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
54 else
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
55 $(error Not in a Python virtual environment)
b5f06508363a PyMuPDF builds on FreeBSD now with "gmake -f Makefile.freebsd".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
56 endif