mirror of
https://github.com/status-im/status-app.git
synced 2026-08-27 15:11:20 +00:00
92 lines
3.3 KiB
Bash
Executable File
92 lines
3.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -ef pipefail
|
|
|
|
BASEDIR=$(dirname "$0")
|
|
|
|
# Load common config variables
|
|
source "${BASEDIR}/commonCmakeConfig.sh"
|
|
|
|
STATUS_KEYCARD_QT=${STATUS_KEYCARD_QT:="../vendors/status-desktop"}
|
|
KEYCARD_QT=${KEYCARD_QT:=""}
|
|
LIB_DIR=${LIB_DIR}
|
|
LIB_EXT=${LIB_EXT:=".a"}
|
|
|
|
BUILD_DIR=${BUILD_DIR:="${STATUS_KEYCARD_QT}/build/${OS}/${ARCH}"}
|
|
BUILD_SHARED_LIBS=ON
|
|
|
|
if [[ "${LIB_EXT}" == ".a" ]]; then
|
|
BUILD_SHARED_LIBS=OFF
|
|
fi
|
|
|
|
echo "Building status-keycard-qt for ${ARCH} using compiler: ${CC}"
|
|
echo "BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}"
|
|
|
|
printf 'COMMON_CMAKE_CONFIG: %s\n' "${COMMON_CMAKE_CONFIG[@]}"
|
|
|
|
# Set OpenSSL paths (REQUIRED for key derivation in session_manager.cpp)
|
|
MOBILE_ROOT="$(cd "${BASEDIR}/.." && pwd)"
|
|
if [[ "$OS" == "android" ]]; then
|
|
OPENSSL_BUILD_DIR="${MOBILE_ROOT}/build/${OS}/qt6/openssl-${OS}-${ARCH}"
|
|
elif [[ "$OS" == "ios" ]]; then
|
|
# iOS OpenSSL is built per-architecture
|
|
OPENSSL_BUILD_DIR="${MOBILE_ROOT}/build/${OS}/qt6/openssl-${OS}-${ARCH}"
|
|
else
|
|
OPENSSL_BUILD_DIR="${MOBILE_ROOT}/build/${OS}/openssl-${OS}-${ARCH}"
|
|
fi
|
|
OPENSSL_BUILD_INCLUDE_DIR="${OPENSSL_BUILD_DIR}/include"
|
|
OPENSSL_SOURCE_INCLUDE_DIR="${MOBILE_ROOT}/vendors/openssl/include"
|
|
OPENSSL_CRYPTO_LIBRARY="${LIB_DIR}/libcrypto_3${LIB_EXT}"
|
|
|
|
echo "OpenSSL paths:"
|
|
echo " Build include dir: ${OPENSSL_BUILD_INCLUDE_DIR}"
|
|
echo " Source include dir: ${OPENSSL_SOURCE_INCLUDE_DIR}"
|
|
echo " Crypto library: ${OPENSSL_CRYPTO_LIBRARY}"
|
|
|
|
# Configure with CMake
|
|
# Use local keycard-qt for faster development builds (FetchContent will use this)
|
|
# If KEYCARD_QT path doesn't exist, FetchContent will clone from GitHub
|
|
if [[ -d "${KEYCARD_QT}" ]]; then
|
|
echo "Using local keycard-qt from: ${KEYCARD_QT}"
|
|
KEYCARD_QT_SOURCE_DIR_ARG="-DKEYCARD_QT_SOURCE_DIR=${KEYCARD_QT}"
|
|
else
|
|
echo "Local keycard-qt not found, will fetch from GitHub"
|
|
KEYCARD_QT_SOURCE_DIR_ARG=""
|
|
fi
|
|
|
|
cmake -S "${STATUS_KEYCARD_QT}" -B "${BUILD_DIR}" \
|
|
"${COMMON_CMAKE_CONFIG[@]}" \
|
|
-DBUILD_TESTING=OFF \
|
|
-DBUILD_EXAMPLES=OFF \
|
|
-DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} \
|
|
${KEYCARD_QT_SOURCE_DIR_ARG} \
|
|
-DOPENSSL_BUILD_INCLUDE_DIR="${OPENSSL_BUILD_INCLUDE_DIR}" \
|
|
-DOPENSSL_SOURCE_INCLUDE_DIR="${OPENSSL_SOURCE_INCLUDE_DIR}" \
|
|
-DOPENSSL_CRYPTO_LIBRARY="${OPENSSL_CRYPTO_LIBRARY}"
|
|
|
|
# Build the library
|
|
make -C "${BUILD_DIR}" status-keycard-qt -j "$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4)"
|
|
|
|
# Create lib directory
|
|
mkdir -p "${LIB_DIR}"
|
|
|
|
# Find and copy the built library
|
|
# Note: keycard-qt is built as a static library and linked into libstatus-keycard-qt,
|
|
# so we only need to copy one library file
|
|
STATUS_KEYCARD_QT_LIB=$(find "${BUILD_DIR}" -name "libstatus-keycard-qt${LIB_EXT}" -o -name "libstatus-keycard-qt.dylib" | grep -v "\.so\." | head -n 1)
|
|
|
|
if [[ -z "${STATUS_KEYCARD_QT_LIB}" ]]; then
|
|
# Try alternative patterns for static library
|
|
STATUS_KEYCARD_QT_LIB=$(find "${BUILD_DIR}" -name "libstatus-keycard-qt.a" | head -n 1)
|
|
fi
|
|
|
|
if [[ -z "${STATUS_KEYCARD_QT_LIB}" ]]; then
|
|
echo "Error: Could not find status-keycard-qt library in ${BUILD_DIR}"
|
|
echo "Build directory contents:"
|
|
find "${BUILD_DIR}" -name "*.so" -o -name "*.a" -o -name "*.dylib" | head -20
|
|
exit 1
|
|
fi
|
|
|
|
cp "${STATUS_KEYCARD_QT_LIB}" "${LIB_DIR}/libstatus-keycard-qt${LIB_EXT}"
|
|
echo "Copied ${STATUS_KEYCARD_QT_LIB} to ${LIB_DIR}/libstatus-keycard-qt${LIB_EXT}"
|
|
|