-
Notifications
You must be signed in to change notification settings - Fork 91
Feat: Qt keycard support with nfc and pcsc #19545
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
b7be80c
bd44e02
405fa2e
b657405
e128fc7
453c48f
be020d5
c3095fc
8a34d73
70b80e6
ed3c5fe
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -40,6 +40,7 @@ GIT_ROOT ?= $(shell git rev-parse --show-toplevel 2>/dev/null || echo .) | |
| tests-nim-linux \ | ||
| status-go \ | ||
| status-keycard-go \ | ||
| status-keycard-qt \ | ||
| statusq-sanity-checker \ | ||
| run-statusq-sanity-checker \ | ||
| statusq-tests \ | ||
|
|
@@ -248,6 +249,9 @@ NIMSDS_LIBDIR := $(NIM_SDS_SOURCE_DIR)/build | |
| NIMSDS_LIBFILE := $(NIMSDS_LIBDIR)/libsds.$(LIB_EXT) | ||
| NIM_EXTRA_PARAMS += --passL:"-L$(NIMSDS_LIBDIR)" --passL:"-lsds" | ||
| STATUSGO_MAKE_PARAMS += NIM_SDS_SOURCE_DIR="$(NIM_SDS_SOURCE_DIR)" | ||
| # Keycard library selection: set to 1 to use status-keycard-qt (Qt/C++), 0 for status-keycard-go (Go) | ||
| # Default: use status-keycard-go for now (stable), switch to 1 to test status-keycard-qt | ||
| USE_STATUS_KEYCARD_QT ?= 0 | ||
|
|
||
| INCLUDE_DEBUG_SYMBOLS ?= false | ||
| ifeq ($(INCLUDE_DEBUG_SYMBOLS),true) | ||
|
|
@@ -501,6 +505,59 @@ $(STATUSKEYCARDGO): | deps | |
| $(if $(filter 1 true,$(USE_MOCKED_KEYCARD_LIB)), build-mocked-lib, build-lib) \ | ||
| $(STATUSKEYCARDGO_MAKE_PARAMS) $(HANDLE_OUTPUT) | ||
|
|
||
| ## | ||
| ## status-keycard-qt (Qt/C++ based keycard library) | ||
| ## | ||
|
|
||
| # Allow using local status-keycard-qt for development | ||
| STATUS_KEYCARD_QT_SOURCE_DIR ?= vendor/status-keycard-qt | ||
| KEYCARD_QT_SOURCE_DIR ?= "" | ||
|
|
||
| # Determine build directory based on platform | ||
| ifeq ($(mkspecs),macx) | ||
| STATUS_KEYCARD_QT_BUILD_DIR := $(STATUS_KEYCARD_QT_SOURCE_DIR)/build/macos | ||
| else ifeq ($(mkspecs),win32) | ||
| STATUS_KEYCARD_QT_BUILD_DIR := $(STATUS_KEYCARD_QT_SOURCE_DIR)/build/windows | ||
| else | ||
| STATUS_KEYCARD_QT_BUILD_DIR := $(STATUS_KEYCARD_QT_SOURCE_DIR)/build/linux | ||
| endif | ||
|
|
||
| export STATUSKEYCARD_QT_LIB := $(STATUS_KEYCARD_QT_BUILD_DIR)/libstatus-keycard-qt.$(LIB_EXT) | ||
| export STATUSKEYCARD_QT_LIBDIR := $(STATUS_KEYCARD_QT_BUILD_DIR) | ||
|
|
||
| status-keycard-qt: $(STATUSKEYCARD_QT_LIB) | ||
| $(STATUSKEYCARD_QT_LIB): | deps check-qt-dir | ||
| echo -e $(BUILD_MSG) "status-keycard-qt" | ||
| cmake -S "${STATUS_KEYCARD_QT_SOURCE_DIR}" -B "${STATUS_KEYCARD_QT_BUILD_DIR}" \ | ||
| $(COMMON_CMAKE_CONFIG_PARAMS) \ | ||
| -DBUILD_TESTING=OFF \ | ||
| -DBUILD_EXAMPLES=OFF \ | ||
| -DBUILD_SHARED_LIBS=ON \ | ||
| -DKEYCARD_QT_SOURCE_DIR=${KEYCARD_QT_SOURCE_DIR} \ | ||
| $(HANDLE_OUTPUT) | ||
| cmake --build $(STATUS_KEYCARD_QT_BUILD_DIR) --target status-keycard-qt $(HANDLE_OUTPUT) | ||
|
|
||
| status-keycard-qt-clean: | ||
| echo -e "\033[92mCleaning:\033[39m status-keycard-qt" | ||
| rm -rf $(STATUS_KEYCARD_QT_BUILD_DIR) | ||
|
|
||
| ## | ||
| ## Keycard library selection | ||
| ## | ||
|
|
||
| # Set the keycard library and paths based on USE_STATUS_KEYCARD_QT | ||
| ifeq ($(USE_STATUS_KEYCARD_QT),1) | ||
| KEYCARD_LIB := $(STATUSKEYCARD_QT_LIB) | ||
| KEYCARD_LIBDIR := $(STATUSKEYCARD_QT_LIBDIR) | ||
| KEYCARD_LINKNAME := status-keycard-qt | ||
| KEYCARD_DYLIB_NAME := libstatus-keycard-qt.dylib | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That looks like a macOS specific libname
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Linux will look like "libstatus-keycard-qt.so"
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should use a variant of
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Still a valid question imo :)
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ahh, lol! Just pushed the fix to the next PR that sits on top of this. 6352ad8
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Alright, up to you and how you want to deal with merging the whole chain :) |
||
| else | ||
| KEYCARD_LIB := $(STATUSKEYCARDGO) | ||
| KEYCARD_LIBDIR := $(STATUSKEYCARDGO_LIBDIR) | ||
| KEYCARD_LINKNAME := keycard | ||
| KEYCARD_DYLIB_NAME := libkeycard.$(LIB_EXT) | ||
| endif | ||
|
|
||
| QRCODEGEN := vendor/QR-Code-generator/c/libqrcodegen.a | ||
|
|
||
| $(QRCODEGEN): | deps | ||
|
|
@@ -611,16 +668,16 @@ $(NIM_STATUS_CLIENT): update-qmake-previous | |
| endif | ||
|
|
||
| $(NIM_STATUS_CLIENT): NIM_PARAMS += $(RESOURCES_LAYOUT) | ||
| $(NIM_STATUS_CLIENT): $(NIM_SOURCES) | statusq dotherside check-qt-dir $(STATUSGO) $(STATUSKEYCARDGO) $(QRCODEGEN) rcc deps | ||
| $(NIM_STATUS_CLIENT): $(NIM_SOURCES) | statusq dotherside check-qt-dir $(STATUSGO) $(KEYCARD_LIB) $(QRCODEGEN) rcc deps | ||
| echo -e $(BUILD_MSG) "$@" | ||
| $(ENV_SCRIPT) nim c $(NIM_PARAMS) \ | ||
| --mm:refc \ | ||
| --passL:"-L$(STATUSGO_LIBDIR)" \ | ||
| --passL:"-lstatus" \ | ||
| --passL:"-L$(STATUSQ_INSTALL_PATH)/StatusQ" \ | ||
| --passL:"-lStatusQ" \ | ||
| --passL:"-L$(STATUSKEYCARDGO_LIBDIR)" \ | ||
| --passL:"-lkeycard" \ | ||
| --passL:"-L$(KEYCARD_LIBDIR)" \ | ||
| --passL:"-l$(KEYCARD_LINKNAME)" \ | ||
| --passL:"$(QRCODEGEN)" \ | ||
| --passL:"-lm" \ | ||
| --parallelBuild:0 \ | ||
|
|
@@ -631,8 +688,8 @@ ifeq ($(mkspecs),macx) | |
| @rpath/libstatus.dylib \ | ||
| bin/nim_status_client | ||
| install_name_tool -change \ | ||
| libkeycard.dylib \ | ||
| @rpath/libkeycard.dylib \ | ||
| $(KEYCARD_DYLIB_NAME) \ | ||
| @rpath/$(KEYCARD_DYLIB_NAME) \ | ||
| bin/nim_status_client | ||
| endif | ||
|
|
||
|
|
@@ -850,7 +907,7 @@ zip-windows: check-pkg-target-windows $(STATUS_CLIENT_7Z) | |
| clean-destdir: | ||
| rm -rf bin/* | ||
|
|
||
| clean: | clean-common clean-destdir statusq-clean status-go-clean dotherside-clean storybook-clean clean-translations | ||
| clean: | clean-common clean-destdir statusq-clean status-go-clean status-keycard-qt-clean dotherside-clean storybook-clean clean-translations | ||
| rm -rf bottles/* pkg/* tmp/* $(STATUSKEYCARDGO) | ||
| + $(MAKE) -C vendor/QR-Code-generator/c/ --no-print-directory clean | ||
|
|
||
|
|
@@ -868,12 +925,12 @@ run: $(RUN_TARGET) | |
|
|
||
| run-linux: nim_status_client | ||
| echo -e "\033[92mRunning:\033[39m bin/nim_status_client" | ||
| LD_LIBRARY_PATH="$(QT_LIBDIR)":"$(LIBWAKU_LIBDIR)":"$(NIMSDS_LIBDIR)":"$(STATUSGO_LIBDIR)":"$(STATUSKEYCARDGO_LIBDIR)":"$(STATUSQ_INSTALL_PATH)/StatusQ":"$(LD_LIBRARY_PATH)" \ | ||
| LD_LIBRARY_PATH="$(QT_LIBDIR)":"$(LIBWAKU_LIBDIR)":"$(NIMSDS_LIBDIR)":"$(STATUSGO_LIBDIR)":"$(KEYCARD_LIBDIR)":"$(STATUSQ_INSTALL_PATH)/StatusQ":"$(LD_LIBRARY_PATH)" \ | ||
| ./bin/nim_status_client $(ARGS) | ||
|
|
||
| run-linux-gdb: nim_status_client | ||
| echo -e "\033[92mRunning:\033[39m bin/nim_status_client" | ||
| LD_LIBRARY_PATH="$(QT_LIBDIR)":"$(LIBWAKU_LIBDIR)":"$(NIMSDS_LIBDIR)":"$(STATUSGO_LIBDIR)":"$(STATUSKEYCARDGO_LIBDIR)":"$(STATUSQ_INSTALL_PATH)/StatusQ":"$(LD_LIBRARY_PATH)" \ | ||
| LD_LIBRARY_PATH="$(QT_LIBDIR)":"$(LIBWAKU_LIBDIR)":"$(NIMSDS_LIBDIR)":"$(STATUSGO_LIBDIR)":"$(KEYCARD_LIBDIR)":"$(STATUSQ_INSTALL_PATH)/StatusQ":"$(LD_LIBRARY_PATH)" \ | ||
| gdb -ex=r ./bin/nim_status_client $(ARGS) | ||
|
|
||
| run-macos: nim_status_client | ||
|
|
@@ -884,12 +941,13 @@ run-macos: nim_status_client | |
| ln -fs ../../../nim_status_client ./ | ||
| fileicon set bin/nim_status_client status-dev.icns | ||
| echo -e "\033[92mRunning:\033[39m bin/StatusDev.app/Contents/MacOS/nim_status_client" | ||
| DYLD_LIBRARY_PATH="$(STATUSGO_LIBDIR)":"$(KEYCARD_LIBDIR)":"$(STATUSQ_INSTALL_PATH)/StatusQ":"$(DYLD_LIBRARY_PATH)" \ | ||
| ./bin/StatusDev.app/Contents/MacOS/nim_status_client $(ARGS) | ||
|
|
||
| run-windows: STATUS_RC_FILE = status-dev.rc | ||
| run-windows: compile_windows_resources nim_status_client | ||
| echo -e "\033[92mRunning:\033[39m bin/nim_status_client.exe" | ||
| PATH="$(DOTHERSIDE_LIBDIR)":"$(STATUSGO_LIBDIR)":"$(STATUSKEYCARDGO_LIBDIR)":"$(STATUSQ_INSTALL_PATH)/StatusQ":"$(PATH)" \ | ||
| PATH="$(DOTHERSIDE_LIBDIR)":"$(STATUSGO_LIBDIR)":"$(KEYCARD_LIBDIR)":"$(STATUSQ_INSTALL_PATH)/StatusQ":"$(PATH)" \ | ||
| ./bin/nim_status_client.exe $(ARGS) | ||
|
|
||
| NIM_TEST_FILES := $(wildcard test/nim/*.nim) | ||
|
|
@@ -908,11 +966,16 @@ endef | |
| export PATH := $(call qmkq,QT_INSTALL_BINS):$(call qmkq,QT_HOST_BINS):$(call qmkq,QT_HOST_LIBEXECS):$(PATH) | ||
| export QTDIR := $(call qmkq,QT_INSTALL_PREFIX) | ||
|
|
||
| #Force keycard support for mobile builds | ||
| ifeq ($(USE_STATUS_KEYCARD_QT),1) | ||
| MOBILE_FLAGS += "FLAG_KEYCARD_ENABLED=1" | ||
| endif | ||
|
|
||
| mobile-run: deps-common | ||
| echo -e "\033[92mRunning:\033[39m mobile app" | ||
| $(MAKE) -C mobile run | ||
| $(MAKE) -C mobile run DEBUG=1 $(MOBILE_FLAGS) | ||
|
|
||
| mobile-build: USE_SYSTEM_NIM=1 | ||
| mobile-build: USE_SYSTEM_NIM=1 $(MOBILE_FLAGS) | ||
| mobile-build: | deps-common | ||
| echo -e "\033[92mBuilding:\033[39m mobile app ($(or $(PACKAGE_TYPE),default))" | ||
| ifeq ($(PACKAGE_TYPE),aab) | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.