mirror of
https://github.com/status-im/status-app.git
synced 2026-08-27 15:11:20 +00:00
161 lines
4.0 KiB
Makefile
161 lines
4.0 KiB
Makefile
#OS: ios, android
|
|
QSPEC:=$(shell $(QMAKE) -query QMAKE_XSPEC)
|
|
ifeq ($(QSPEC),macx-ios-clang)
|
|
OS:=ios
|
|
else ifeq ($(QSPEC),macx-clang)
|
|
OS:=macx
|
|
else ifeq ($(QSPEC),win32-msvc)
|
|
OS:=win32
|
|
else ifeq ($(QSPEC),linux-g++)
|
|
OS:=linux
|
|
else ifeq ($(QSPEC),android-clang)
|
|
OS:=android
|
|
else
|
|
OS:=$(QSPEC)
|
|
endif
|
|
|
|
HOST_OS=$(shell uname -s | tr '[:upper:]' '[:lower:]')
|
|
#Architectures: arm64, arm, x86_64. x86_64 is default for simulator
|
|
ARCH?=$(shell uname -m)
|
|
# Detect Qt version from qmake
|
|
QT_MAJOR?=$(shell $(QMAKE) -query QT_VERSION | head -c 1 2>/dev/null)
|
|
QT_DIR?=$(shell $(QMAKE) -query QT_INSTALL_PREFIX)
|
|
MAKEFILE_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
|
|
|
|
ifneq ($(QT_MAJOR),6)
|
|
$(error Detected Qt major version $(QT_MAJOR), but version 6 is required.)
|
|
endif
|
|
|
|
ifeq ($(OS), ios)
|
|
# iOS
|
|
#SDKs: iphonesimulator, iphoneos
|
|
IPHONE_SDK?=iphonesimulator
|
|
IOS_TARGET?=17
|
|
|
|
ifeq ($(IPHONE_SDK), iphoneos)
|
|
ARCH=arm64
|
|
else
|
|
ARCH=x86_64
|
|
endif
|
|
else ifeq ($(OS), android)
|
|
# Android
|
|
ANDROID_API?=28
|
|
ANDROID_SDK_ROOT?=
|
|
ANDROID_NDK_ROOT?=
|
|
|
|
ifeq ($(ANDROID_SDK_ROOT),)
|
|
$(error "ANDROID_SDK_ROOT is not set. Please set ANDROID_SDK_ROOT to the path of your Android SDK.")
|
|
endif
|
|
|
|
ifeq ($(ANDROID_NDK_ROOT),)
|
|
$(error "ANDROID_NDK_ROOT is not set. Please set ANDROID_NDK_ROOT to the path of your Android NDK.")
|
|
endif
|
|
else
|
|
$(error "OS=$(OS). OS not supported by build system. Please update qmake to a supported version.")
|
|
endif
|
|
|
|
# Bundle identifier: pr -> app.status.mobile.pr, release -> app.status.mobile
|
|
BUILD_VARIANT ?= release
|
|
ifeq ($(BUILD_VARIANT),pr)
|
|
BUNDLE_IDENTIFIER ?= app.status.mobile.pr
|
|
else
|
|
BUNDLE_IDENTIFIER ?= app.status.mobile
|
|
endif
|
|
export BUNDLE_IDENTIFIER
|
|
export BUILD_VARIANT
|
|
|
|
# tool macros
|
|
CC := $(abspath $(MAKEFILE_DIR)/$(OS)/clangWrap.sh)
|
|
|
|
$(info Using CC=$(CC))
|
|
CXX := $(CC)
|
|
|
|
ifeq ($(DEBUG),1)
|
|
CXX_OPT_FLAGS := -g -O0
|
|
else
|
|
CXX_OPT_FLAGS := -O3
|
|
endif
|
|
|
|
export COMPILER
|
|
export CC
|
|
export CXX
|
|
export CXX_OPT_FLAGS
|
|
export ARCH
|
|
export OS
|
|
export HOST_OS
|
|
export QT_MAJOR
|
|
export QT_DIR
|
|
|
|
ifeq ($(OS), ios)
|
|
export SDK=$(IPHONE_SDK)
|
|
export IOS_TARGET
|
|
export CPATH=$(shell xcrun --sdk ${IPHONE_SDK} --show-sdk-path)/usr/include/
|
|
export SDKROOT=$(shell xcrun --sdk ${IPHONE_SDK} --show-sdk-path)
|
|
export LIBRARY_PATH:=${SDKROOT}/usr/lib:${LIBRARY_PATH}
|
|
export LIB_EXT := .a
|
|
else
|
|
export ANDROID_API
|
|
export AR=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${HOST_OS}-x86_64/bin/llvm-ar
|
|
export AS=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${HOST_OS}-x86_64/bin/llvm-as
|
|
export RANLIB=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${HOST_OS}-x86_64/bin/llvm-ranlib
|
|
export PATH:=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${HOST_OS}-x86_64/bin:${PATH}
|
|
|
|
ifeq ($(ARCH), arm64)
|
|
export ANDROID_ABI=arm64-v8a
|
|
else ifeq ($(ARCH), arm)
|
|
export ANDROID_ABI=armeabi-v7a
|
|
else
|
|
export ANDROID_ABI=x86_64
|
|
endif
|
|
export LIB_EXT := .so
|
|
|
|
export LDFLAGS := -Wl,-z,max-page-size=16384
|
|
export NIMFLAGS := --passL:"$(LDFLAGS)"
|
|
export CGO_LDFLAGS := $(LDFLAGS)
|
|
endif
|
|
|
|
|
|
# Verify tools are installed
|
|
QMAKE ?= $(shell which qmake)
|
|
ifeq ($(QMAKE),)
|
|
$(error qmake not found)
|
|
endif
|
|
$(info QMAKE: $(QMAKE))
|
|
|
|
RCC := $(shell $(QMAKE) -query QT_HOST_LIBEXECS)/rcc
|
|
ifeq ($(RCC),)
|
|
$(error rcc not found)
|
|
endif
|
|
$(info RCC: $(RCC))
|
|
|
|
ifeq ($(OS),android)
|
|
ANDROIDDEPLOYQT := $(shell which androiddeployqt)
|
|
ifeq ($(ANDROIDDEPLOYQT),)
|
|
$(error androiddeployqt not found)
|
|
endif
|
|
$(info ANDROIDDEPLOYQT: $(ANDROIDDEPLOYQT))
|
|
|
|
ifeq ($(ANDROID_NDK_ROOT),)
|
|
$(error ANDROID_NDK_ROOT not set)
|
|
endif
|
|
$(info NDK: $(ANDROID_NDK_ROOT))
|
|
|
|
ifeq ($(ANDROID_API),)
|
|
$(error ANDROID_API not set)
|
|
endif
|
|
$(info ANDROID_API: $(ANDROID_API))
|
|
endif
|
|
|
|
ifeq ($(OS),ios)
|
|
ifeq ($(IPHONE_SDK),)
|
|
$(error IPHONE_SDK not set)
|
|
endif
|
|
$(info IPHONE_SDK: $(IPHONE_SDK))
|
|
|
|
ifeq ($(IOS_TARGET),)
|
|
$(error IOS_TARGET not set)
|
|
endif
|
|
$(info IOS_TARGET: $(IOS_TARGET))
|
|
endif
|
|
# end of tool verification
|