Client Makefile: add FORCE* options to mirror the SKIP* options, mostly for maintainers

This commit is contained in:
Philippe Teuwen
2026-05-11 21:43:57 +02:00
parent cbb572afad
commit 620e8b4744
2 changed files with 55 additions and 3 deletions
+40 -3
View File
@@ -555,10 +555,16 @@ else
ifeq ($(QT6_FOUND),1)
$(info GUI support: QT6 found, enabled ($(shell QT_SELECT=6 $(QMAKE) -v 2>/dev/null|grep -o 'Qt version.*')))
else
ifeq ($(FORCEQT6),1)
$(error FORCEQT6 not satisfied, aborting)
endif
$(info GUI support: QT5 found, enabled ($(shell QT_SELECT=5 $(QMAKE) -v 2>/dev/null|grep -o 'Qt version.*')))
endif
else
$(info GUI support: QT not found, disabled)
ifeq ($(FORCEQT),1)
$(error FORCEQT not satisfied, aborting)
endif
endif
endif
@@ -569,6 +575,9 @@ else
$(info native BT support: Bluez found, enabled)
else
$(info native BT support: Bluez not found, disabled)
ifeq ($(FORCEBT),1)
$(error FORCEBT not satisfied, aborting)
endif
endif
endif
@@ -578,6 +587,9 @@ else ifeq ($(JANSSON_FOUND),1)
$(info Jansson library: system library found)
else
$(info Jansson library: system library not found, using local library)
ifeq ($(FORCEJANSSONSYSTEM),1)
$(error FORCEJANSSONSYSTEM not satisfied, aborting)
endif
endif
ifeq ($(SKIPLUASYSTEM),1)
@@ -587,6 +599,9 @@ else
$(info Lua library: system library found)
else
$(info Lua library: system library not found, using local library)
ifeq ($(FORCELUASYSTEM),1)
$(error FORCELUASYSTEM not satisfied, aborting)
endif
endif
endif
@@ -597,6 +612,9 @@ else
$(info Python3 library: Python3 v$(shell $(PKG_CONFIG_ENV) pkg-config --modversion $(PYTHON3_PKGCONFIG)) found, enabled)
else
$(info Python3 library: Python3 not found, disabled)
ifeq ($(FORCEPYTHON),1)
$(error FORCEPYTHON not satisfied, aborting)
endif
endif
endif
@@ -607,13 +625,23 @@ else
$(info GD library: GD v$(shell $(PKG_CONFIG_ENV) pkg-config --modversion gdlib) found, enabled)
else
$(info GD library: GD not found, disabled)
ifeq ($(FORCEGD),1)
$(error FORCEGD not satisfied, aborting)
endif
endif
endif
ifeq ($(ZLIB_FOUND),1)
$(info Zlib library: system library found, enabled)
ifeq ($(SKIPZLIB),1)
$(info Zlib library: skipped)
else
$(info Zlib library: not found, disabled)
ifeq ($(ZLIB_FOUND),1)
$(info Zlib library: system library found, enabled)
else
$(info Zlib library: not found, disabled)
ifeq ($(FORCEZLIB),1)
$(error FORCEZLIB not satisfied, aborting)
endif
endif
endif
ifeq ($(SKIPREADLINE),1)
@@ -623,6 +651,9 @@ else
$(info Readline library: enabled)
else
$(info Readline library: Readline not found, disabled)
ifeq ($(FORCEREADLINE),1)
$(error FORCEREADLINE not satisfied, aborting)
endif
endif
endif
@@ -634,6 +665,9 @@ ifneq ($(READLINE_FOUND),1)
$(info Linenoise library: enabled)
else
$(info Linenoise library: Linenoise not found, disabled)
ifeq ($(FORCELINENOISE),1)
$(error FORCELINENOISE not satisfied, aborting)
endif
endif
endif
endif
@@ -645,6 +679,9 @@ else
$(info Whereami library: system library found)
else
$(info Whereami library: system library not found, using local library)
ifeq ($(FORCEWHEREAMISYSTEM),1)
$(error FORCEWHEREAMISYSTEM not satisfied, aborting)
endif
endif
endif
+15
View File
@@ -62,6 +62,8 @@ It's also possible to skip parts even if libraries are present in the compilatio
* `make client SKIPQT=1` to skip GUI even if Qt is present
* `make client SKIPQT6=1` to skip Qt6 even if Qt6 is present, anf fallback on Qt5
* `make client SKIPBT=1` to skip native Bluetooth support even if libbluetooth is present
* `make client SKIPGD=1` to skip NFC ePaper support even if libgd is present
* `make client SKIPZPIB=1` to skip decompressing compressed Google Smart Tap payloads support even if libzlib is present
* `make client SKIPPYTHON=1` to skip embedded Python 3 interpreter even if libpython3 is present
* `make client SKIPLUASYSTEM=1` to skip system Lua lib even if liblua5.2 is present, use embedded Lua lib instead
* `make client SKIPJANSSONSYSTEM=1` to skip system Jansson lib even if libjansson is present, use embedded Jansson lib instead
@@ -89,6 +91,19 @@ Some unittests are available via `make check`, which is actually triggering indi
* `SKIPUV=1 tools/pm3_tests.sh` to skip usage of `uv` even if `uv` is present, and force usage of `python3` (in which case you must take care of installing the script dependencies yourself)
Inversely, it's possible to mandate parts and make sure the compilation will fail if libraries are not present in the compilation environment:
* `make client FORCEQT=1` to make sure Qt is present
* `make client FORCEQT6=1` to make sure Qt6 is present
* `make client FORCEBT=1` to make sure libbluetooth is present
* `make client FORCEGD=1` to make sure libgd is present
* `make client FORCEZPIB=1` to make sure libzlib is present
* `make client FORCEPYTHON=1` to make sure libpython3 is present
* `make client FORCELUASYSTEM=1` to make sure liblua5.2 is present in the system
* `make client FORCEJANSSONSYSTEM=1` to make sure libjansson is present in the system
* `make client FORCEWHEREAMISYSTEM=1` to make sure libwhereami is present in the system
* `make client FORCEREADLINE=1` to make sure libreadline is present
Host binaries are compiled with hardening flags (only with Makefile, not with cmake). Exact level of hardening depends on the OS.
* `make host NOHARDENING=1` to disable hardening flags.