diff --git a/doc/md/Development/Maintainers.md b/doc/md/Development/Maintainers.md index 2a72e500f..42230a6a9 100644 --- a/doc/md/Development/Maintainers.md +++ b/doc/md/Development/Maintainers.md @@ -60,6 +60,7 @@ If your platform needs specific lib/include paths for the client, you can use `L It's also possible to skip parts even if libraries are present in the compilation environment: * `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 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 @@ -86,6 +87,8 @@ One tool requires a CUDA compilation environment, it can be skipped as well: Some unittests are available via `make check`, which is actually triggering individual targets as for `make install`. +* `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) + `make install` is actually triggering the following individual targets which can be accessed individually: * `make client/install` diff --git a/doc/md/Development/Makefile-vs-CMake.md b/doc/md/Development/Makefile-vs-CMake.md index e052321a4..2d2e7d4e8 100644 --- a/doc/md/Development/Makefile-vs-CMake.md +++ b/doc/md/Development/Makefile-vs-CMake.md @@ -70,9 +70,10 @@ At the moment both are maintained because they don't perfectly overlap yet. | dep pthread | sys | sys | | | pthread detection | **none** | **none** (1) | (1) cf https://stackoverflow.com/questions/1620918/cmake-and-libpthread ? | | `SKIPPTHREAD` | yes | yes | e.g. for termux | -| dep Qt | opt, sys, Qt5 & Qt4 | opt, sys, Qt5 | | +| dep Qt | opt, sys, Qt6 & Qt5 | opt, sys, Qt5 | | | Qt detection | pc(qt6)/pc(qt5)/`QTDIR`(1) (2) | find_package(qt5) (3) | (1) if `QTDIR`: hardcode path (2) OSX: pkg-config hook for Brew (3) OSX: add search path| | `SKIPQT` | yes | yes | | +| `SKIPQT6` | yes | no | | | dep readline | sys | sys | | | readline detection | **none** (1) | find*(2), Cross:getzip | (1) OSX: hardcoded path (2) additional paths for OSX | | `SKIPREADLINE` | yes | yes | CLI not fully functional without Readline | diff --git a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md index 01dcea7dd..702db31ba 100644 --- a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md @@ -59,7 +59,7 @@ Install the requirements ```sh sudo apt-get install --no-install-recommends git ca-certificates build-essential pkg-config \ -libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev \ +libreadline-dev gcc-arm-none-eabi libnewlib-dev qt6-base-dev \ libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev libgd-dev ``` @@ -68,7 +68,7 @@ libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev libgd-dev you can skip the installation of `libbluetooth-dev`. 👉 If you don't need the graphical components of the Proxmark3 client (such as in `hw tune`), -you can skip the installation of `qtbase5-dev`. +you can skip the installation of `qt6-base-dev`. 👉 If you don't need support for Python3 scripts in the Proxmark3 client, you can skip the installation of `libpython3-dev`. @@ -86,7 +86,7 @@ you may have to install `libcanberra-gtk-module`. ```sh sudo pacman -Syu git base-devel readline bzip2 lz4 arm-none-eabi-gcc \ -arm-none-eabi-newlib qt5-base bluez python gd --needed +arm-none-eabi-newlib qt6-base bluez python gd --needed ``` ### If you don't need... @@ -94,7 +94,7 @@ arm-none-eabi-newlib qt5-base bluez python gd --needed you can skip the installation of `bluez`. 👉 If you don't need the graphical components of the Proxmark3 client (such as in `hw tune`), -you can skip the installation of `qt5-base`. +you can skip the installation of `qt6-base`. 👉 If you don't need support for Python3 scripts in the Proxmark3 client, you can skip the installation of `python`. @@ -108,7 +108,7 @@ you can skip the installation of `gd`. ```sh sudo dnf install git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib \ -readline-devel bzip2-devel lz4-devel qt5-qtbase-devel bluez-libs-devel \ +readline-devel bzip2-devel lz4-devel qt6-qtbase-devel bluez-libs-devel \ python3-devel libatomic openssl-devel gd-devel ``` @@ -117,7 +117,7 @@ python3-devel libatomic openssl-devel gd-devel you can skip the installation of `bluez-libs-devel`. 👉 If you don't need the graphical components of the Proxmark3 client (such as in `hw tune`), -you can skip the installation of `qt5-qtbase-devel`. +you can skip the installation of `qt6-qtbase-devel`. 👉 If you don't need support for Python3 scripts in the Proxmark3 client, you can skip the installation of `python3-devel`. @@ -140,19 +140,32 @@ sudo zypper install cross-arm-none-eabi-gcc15 cross-arm-none-eabi-newlib Note that Bluez is not available on openSUSE Leap so the native Bluetooth support won't be available in the client. +Note that the instructions above are for an usage with Qt5. In case of conflict with the presence of development files of Qt6, you can force Qt5 with `make SKIPQT6=1`. + +It is possible to compile the proxmark3 client with Qt6 but with some caveats because the default compiler is GCC 7 and Qt6 requires at least GCC 8: +- install `gcc15 gcc15-c++` instead of `gcc-c++` +- install `qt6-core-devel qt6-widgets-devel` instead of `libqt5-qtbase-devel` +- set default compiler to GCC 15 instead of GCC 7 +``` +sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-15 100 && \ +sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-15 100 && \ +sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-15 100 && \ +sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-15 100 +``` + ## On openSUSE Tumbleweed ^[Top](#top) ```sh sudo zypper install git patterns-devel-base-devel_basis gcc-c++ \ readline-devel libbz2-devel liblz4-devel bluez-devel \ -python3-devel libqt5-qtbase-devel libopenssl-devel gd-devel \ +python3-devel qt6-core-devel qt6-widgets-devel libopenssl-devel gd-devel \ cross-arm-none-gcc12 cross-arm-none-newlib-devel ``` ### If you don't need... 👉 If you don't need the graphical components of the Proxmark3 client (such as in `hw tune`), -you can skip the installation of `libqt5-qtbase-devel`. +you can skip the installation of `qt6-core-devel qt6-widgets-devel`. 👉 If you don't need support for Python3 scripts in the Proxmark3 client, you can skip the installation of `python3-devel`. diff --git a/doc/md/Installation_Instructions/Troubleshooting.md b/doc/md/Installation_Instructions/Troubleshooting.md index 079e4bf4a..043ac8bef 100644 --- a/doc/md/Installation_Instructions/Troubleshooting.md +++ b/doc/md/Installation_Instructions/Troubleshooting.md @@ -29,7 +29,7 @@ Always use the latest repository commits from *master* branch. There are always - [Qt Session management error](#qt-session-management-error) - [found architecture 'x86\_64' required architecture 'arm64' error](#found-architecture-x86_64-required-architecture-arm64-error) - [wrong permissions on runtime directory /run/user/1000](#wrong-permissions-on-runtime-directory-runuser1000) - - [proxspace `file not found or locked` on Windows 11](#proxspace-file-not-found-or-locked-on-windows-11) + - [proxspace 'file not found or locked' on Windows 11](#proxspace-file-not-found-or-locked-on-windows-11) ## `pm3` or `pm3-flash*` doesn't see my Proxmark @@ -253,8 +253,8 @@ make: *** [Makefile:177: client/all] Error 2 The following dependencies are currently needed to make the development environment compile: ``` sudo apt-get install --no-install-recommends git ca-certificates build-essential pkg-config \ -libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev \ -libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev +libreadline-dev gcc-arm-none-eabi libnewlib-dev qt6-base-dev \ +libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev libgd-dev ``` ## target attribute is not supported on this machine diff --git a/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md b/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md index 0c6f7026a..749d441df 100644 --- a/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md +++ b/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md @@ -37,6 +37,13 @@ make clean make SKIPQT=1 ``` +or to force a fallback to Qt5 even when Qt6 is installed + +``` +make clean +make SKIPQT6=1 +``` + On Linux hosts, if the Bluez headers and library are present, the client will be compiled with native Bluetooth support. It's possible to explicitly skip Bluetooth support with: ```