mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2026-05-12 11:18:11 -07:00
cmake: Workaround for buggy Qt 6.4.2 & 6.6.3
This commit is contained in:
@@ -30,7 +30,7 @@ jobs:
|
||||
run: sudo apt-get update
|
||||
|
||||
- name: Install dependencies
|
||||
run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qt6-base-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.4-dev liblua5.4-0 lua5.4 sed libssl-dev libgd-dev
|
||||
run: sudo apt-get install -yqq make build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qt6-base-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.4-dev liblua5.4-0 lua5.4 sed libssl-dev libgd-dev
|
||||
|
||||
- name: Install Python dependencies
|
||||
run: pip install -r tools/requirements.txt
|
||||
@@ -60,7 +60,7 @@ jobs:
|
||||
run: sudo apt-get update
|
||||
|
||||
- name: Install dependencies
|
||||
run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qt6-base-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.4-dev liblua5.4-0 lua5.4 sed libssl-dev libgd-dev
|
||||
run: sudo apt-get install -yqq make build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qt6-base-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.4-dev liblua5.4-0 lua5.4 sed libssl-dev libgd-dev
|
||||
|
||||
- name: Install Python dependencies
|
||||
run: pip install -r tools/requirements.txt
|
||||
@@ -91,7 +91,7 @@ jobs:
|
||||
run: sudo apt-get update
|
||||
|
||||
- name: Install dependencies
|
||||
run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qt6-base-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.4-dev liblua5.4-0 lua5.4 sed libssl-dev libgd-dev
|
||||
run: sudo apt-get install -yqq make build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qt6-base-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.4-dev liblua5.4-0 lua5.4 sed libssl-dev libgd-dev
|
||||
|
||||
- name: Install Python dependencies
|
||||
run: pip install -r tools/requirements.txt
|
||||
|
||||
@@ -751,6 +751,47 @@ add_executable(proxmark3
|
||||
${ADDITIONAL_SRC}
|
||||
)
|
||||
|
||||
# Handle overlays.ui manually to apply the Qt6 setNum fix
|
||||
if ((NOT SKIPQT EQUAL 1) AND Qt6_FOUND)
|
||||
# Find the UIC tool
|
||||
get_target_property(QT_UIC_EXECUTABLE Qt6::uic IMPORTED_LOCATION)
|
||||
|
||||
set(UI_OVERLAYS_INPUT ${PM3_ROOT}/client/src/ui/overlays.ui)
|
||||
set(UI_OVERLAYS_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ui/ui_overlays.h)
|
||||
|
||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/ui)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${UI_OVERLAYS_OUTPUT}
|
||||
COMMAND ${QT_UIC_EXECUTABLE} ${UI_OVERLAYS_INPUT} -o ${UI_OVERLAYS_OUTPUT}
|
||||
# Fix bug in headers generated by some Qt6 versions (seen on 6.4.2 & 6.6.3):
|
||||
# replace &QLabel::setNum with qOverload<int>(&QLabel::setNum)
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-DFILE=${UI_OVERLAYS_OUTPUT}
|
||||
-P ${CMAKE_CURRENT_BINARY_DIR}/fix_overlays.cmake
|
||||
DEPENDS ${UI_OVERLAYS_INPUT}
|
||||
COMMENT "UIC overlays.ui (with Qt6 setNum fix)"
|
||||
)
|
||||
|
||||
# Write the sed-equivalent cmake script at configure time
|
||||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/fix_overlays.cmake [=[
|
||||
file(READ "${FILE}" _content)
|
||||
string(REPLACE
|
||||
"&QLabel::setNum);"
|
||||
"qOverload<int>(&QLabel::setNum));"
|
||||
_content "${_content}")
|
||||
file(WRITE "${FILE}" "${_content}")
|
||||
]=])
|
||||
|
||||
# Add the generated header as a source so it gets built
|
||||
# and tell AUTOUIC to skip the .ui file (we handle it ourselves)
|
||||
set_property(SOURCE ${UI_OVERLAYS_INPUT} PROPERTY SKIP_AUTOUIC ON)
|
||||
|
||||
# Make proxmark3 depend on the generated header
|
||||
target_sources(proxmark3 PRIVATE ${UI_OVERLAYS_OUTPUT})
|
||||
target_include_directories(proxmark3 PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
|
||||
endif()
|
||||
|
||||
target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3)
|
||||
if (EMBED_READLINE)
|
||||
if (NOT SKIPREADLINE EQUAL 1)
|
||||
|
||||
Reference in New Issue
Block a user