Files
status-app/mobile/scripts/EnvVariables.mk
T

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