Files
status-app/mobile/scripts/Common.mk
Andrey Bocharnikov 85383de2ae feat(browser): platform download plumbing and the web view download seam
Extend the cross-platform web view seam with the download vocabulary the
Downloads feature builds on (ADR 0006):

- AbstractWebView: DownloadState gains DownloadPaused (WebEngine-shaped
  numbering, Paused = 5 matches MobileWebViewDownload), a host-side
  downloadUrl() re-issue used for Retry, a linkLongPressed(link, image,
  position) signal for mobile Backends, supportsPdfViewer, and a
  'retained' flag for Web Views kept alive after their tab closes.
  The downloadsStore / isDownloadView coupling is gone: adapters map
  Backend downloads into the seam and the UI never branches on Backend.
- WebViewAdapter / MobileWebViewAdapter / LazyWebViewAdapter implement
  the seam; the desktop path gains an injectable isBrowsableLocalUrlFn
  local-URL guard exception, and LazyWebViewAdapter forwards Retry
  through ensureLoaded().
- ProfileManager survives a WebEngine profile data-path collision.
- StatusQ C++: BrowserProfileUtils (QWebEnginePage::download re-issue,
  profile plumbing) and SystemUtilsInternal additions, iOS share-sheet
  support via NSItemProvider in ios_utils.mm, Android accept path in
  StatusQtActivity, mobilewebview pin bump, and Common.mk tracks
  CMakeLists.txt so the pin invalidates mobile builds.
2026-08-13 09:42:17 +04:00

95 lines
3.7 KiB
Makefile

SHELL:=/bin/bash
STATUS_DESKTOP := $(shell git rev-parse --show-toplevel)
OS?=android
QT_MAJOR?=6
# verbosity level
V := 0
ifeq ($(V), 0)
HANDLE_OUTPUT := >/dev/null 2>&1
endif
# compile macros
ifeq ($(USE_QML_SERVER),)
export APP_VARIANT := $(OS)/qt$(QT_MAJOR)
else
export APP_VARIANT := $(OS)/qt$(QT_MAJOR)/qmlserver-$(USE_QML_SERVER)
endif
# path macros
ROOT_DIR := $(STATUS_DESKTOP)/mobile
BIN_PATH := $(ROOT_DIR)/bin/$(APP_VARIANT)
LIB_PATH := $(ROOT_DIR)/lib/$(APP_VARIANT)
BUILD_PATH := $(ROOT_DIR)/build/$(APP_VARIANT)
SCRIPTS_PATH := $(ROOT_DIR)/scripts
export LIB_DIR=$(LIB_PATH)
WRAPPER_APP?=$(ROOT_DIR)/wrapperApp
STATUS_DESKTOP?=$(ROOT_DIR)/vendors/status-desktop
STATUSQ?=$(STATUS_DESKTOP)/ui/StatusQ
STATUS_GO?=$(STATUS_DESKTOP)/vendor/status-go
OPENSSL?=$(ROOT_DIR)/vendors/openssl
QRCODEGEN?=$(STATUS_DESKTOP)/vendor/QR-Code-generator/c
STATUS_KEYCARD_QT?=$(STATUS_DESKTOP)/vendor/status-keycard-qt
NIM_SDS_SOURCE_DIR ?= $(STATUS_DESKTOP)/vendor/nim-sds
# compile macros: pr -> StatusPR, release -> Status
ifeq ($(BUILD_VARIANT),pr)
TARGET_PREFIX := StatusPR
else
TARGET_PREFIX := Status
endif
# Default package type for Android builds
PACKAGE_TYPE ?= apk
# mobile app extension - always apk for Android (AAB built alongside when requested)
ifeq ($(OS),ios)
EXTENSION := app
else
EXTENSION := apk
endif
TARGET_NAME := $(TARGET_PREFIX).$(EXTENSION)
TARGET := $(BIN_PATH)/$(TARGET_NAME)
# src files & obj files
STATUS_DESKTOP_NIM_FILES := $(shell find $(STATUS_DESKTOP)/src -type f \( -iname '*.nim' -o -iname '*.nims' \))
STATUS_DESKTOP_UI_FILES := $(shell find $(STATUS_DESKTOP)/ui -type f \( -iname 'qmldir' -o -iname '*.qml' -o -iname '*.qrc' \) -not -iname 'resources.qrc' -not -path '$(STATUS_DESKTOP)/ui/StatusQ/*')
# Include CMakeLists.txt (mobilewebview pin) and prune build/ (generated sources).
STATUS_Q_FILES := $(shell find $(STATUSQ) \( -path '$(STATUSQ)/build' \) -prune -o -type f \( -iname '*.cpp' -o -iname '*.h' -o -iname '*.mm' -o -iname 'CMakeLists.txt' \) -print)
STATUS_Q_UI_FILES := $(shell find $(STATUSQ) -type f \( -iname '*.qml' -o -iname '*.qrc' \))
STATUS_GO_FILES := $(shell find $(STATUS_GO) -type f \( -iname '*.go' \))
OPENSSL_FILES := $(shell find $(OPENSSL) -type f \( -iname '*.c' -o -iname '*.h' \))
QRCODEGEN_FILES := $(shell find $(QRCODEGEN) -type f \( -iname '*.c' -o -iname '*.h' \))
STATUS_KEYCARD_QT_FILES := $(shell find $(STATUS_KEYCARD_QT) -type f \( -iname '*.cpp' -o -iname '*.h' \) 2>/dev/null || echo "")
WRAPPER_APP_FILES := $(shell find $(WRAPPER_APP) -type f)
STATUS_GO_STUB_GEN := $(STATUS_DESKTOP)/vendor/status-go/build/bin/statusgo_stub_exports.cpp
STATUS_GO_SERVICE_GEN := $(STATUS_DESKTOP)/vendor/status-go/build/bin/statusgo_service_dispatch.cpp
# script files
STATUS_Q_SCRIPT := $(SCRIPTS_PATH)/buildStatusQ.sh
STATUS_GO_SCRIPT := $(SCRIPTS_PATH)/buildStatusGo.sh
OPENSSL_SCRIPT := $(SCRIPTS_PATH)/buildOpenSSL.sh
QRCODEGEN_SCRIPT := $(SCRIPTS_PATH)/buildQRCodeGen.sh
STATUS_KEYCARD_QT_SCRIPT := $(SCRIPTS_PATH)/buildStatusKeycardQt.sh
NIM_STATUS_CLIENT_SCRIPT := $(SCRIPTS_PATH)/buildNimStatusClient.sh
APP_SCRIPT := $(SCRIPTS_PATH)/buildApp.sh
RUN_SCRIPT := $(SCRIPTS_PATH)/$(OS)/run.sh
# lib files
STATUS_GO_LIB := $(LIB_PATH)/libstatus$(LIB_EXT)
STATUS_Q_LIB := $(LIB_PATH)/libStatusQ$(LIB_SUFFIX)$(LIB_EXT)
OPENSSL_LIB := $(LIB_PATH)/libssl_3$(LIB_EXT)
QRCODEGEN_LIB := $(LIB_PATH)/libqrcodegen.a
STATUS_KEYCARD_QT_LIB := $(LIB_PATH)/libstatus-keycard-qt$(LIB_EXT)
NIM_STATUS_CLIENT_LIB := $(LIB_PATH)/libnim_status_client$(LIB_EXT)
STATUS_DESKTOP_RCC := $(STATUS_DESKTOP)/ui/resources.qrc
STATUS_GO_STUB_LIB := $(LIB_PATH)/libstatus_stub$(LIB_EXT)
STATUS_GO_SERVICE_LIB := $(LIB_PATH)/libstatus_service$(LIB_EXT)
ifeq ($(OS), ios)
LIB_ZXING := $(LIB_PATH)/libZXing$(LIB_SUFFIX)$(LIB_EXT)
endif