Revision control

Copy as Markdown

# qmake configuration for building with ohos-clang
MAKEFILE_GENERATOR = UNIX
QMAKE_PLATFORM = ohos
QMAKE_COMPILER = gcc clang llvm
CONFIG += ohos_install unversioned_soname unversioned_libname plugin_with_soname ohos_deployment
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/clang.conf)
load(device_config)
NATIVE_OHOS_SDK = $$(NATIVE_OHOS_SDK)
isEmpty(NATIVE_OHOS_SDK): NATIVE_OHOS_SDK = $$DEFAULT_OHOS_NDK_ROOT
!exists($$NATIVE_OHOS_SDK): error("You need to set the NATIVE_OHOS_SDK environment variable to point to your OHOS SDK native folder.")
OHOS_SDK_SYSROOT = $${NATIVE_OHOS_SDK}/sysroot
OH_UNI_PACKAGE_JSON=$$cat($${NATIVE_OHOS_SDK}/oh-uni-package.json, lines)
OHOS_SDK_NATIVE_VERSION = $$find(OH_UNI_PACKAGE_JSON, version)
OHOS_SDK_NATIVE_VERSION ~= s/.*\"version\": +\"(.+)\".*/\1/
VERSION_PARTS = $$split(OHOS_SDK_NATIVE_VERSION, ".")
DEFINES += \
__MUSL__=1 \
OHOS_STL=c++_shared \
OHOS_PLATFORM=OHOS \
OHOS_SDK_NATIVE_VERSION_STR="\"$${OHOS_SDK_NATIVE_VERSION}\"" \
OHOS_SDK_NATIVE_VERSION_MAJOR="$$member(VERSION_PARTS, 0)" \
OHOS_SDK_NATIVE_VERSION_MINOR="$$member(VERSION_PARTS, 1)" \
OHOS_SDK_NATIVE_VERSION_PATCH="$$member(VERSION_PARTS, 2)" \
OHOS_SDK_NATIVE_VERSION_REVISION="$$member(VERSION_PARTS, 3)"
CONFIG += c++17
OHOS_TARGET_ARCH = $$(OHOS_TARGET_ARCH)
isEmpty(OHOS_TARGET_ARCH): OHOS_TARGET_ARCH = $$DEFAULT_OHOS_TARGET_ARCH
equals(OHOS_TARGET_ARCH, arm64-v8a) {
OHOS_TARGET = aarch64-linux-ohos
} else: equals(OHOS_TARGET_ARCH, armeabi-v7a) {
OHOS_TARGET = armv7-linux-gnueabihf-ohos
} else: equals(OHOS_TARGET_ARCH, x86_64) {
OHOS_TARGET = x86_64-linux-ohos
} else: warning("Target architecture is not specified. Specify the target architecture using OHOS_TARGET_ARCH variable")
OHOS_TOOLCHAIN_COMMON_FLAGS = \
--sysroot=$${OHOS_SDK_SYSROOT} \
--target=$${OHOS_TARGET}
OHOS_C_CXX_COMMON_FLAGS = \
$$OHOS_TOOLCHAIN_COMMON_FLAGS \
-fdata-sections \
-ffunction-sections \
-funwind-tables \
-fstack-protector-strong \
-no-canonical-prefixes \
-fno-addrsig \
-Wa,--noexecstack \
-Wformat \
-Werror=format-security
OHOS_LINK_FLAGS = \
$$OHOS_TOOLCHAIN_COMMON_FLAGS \
-Wl,--gc-sections \
--rtlib=compiler-rt \
-fuse-ld=lld \
-lunwind
NDK_LLVM_PATH = $${NATIVE_OHOS_SDK}/llvm
QMAKE_CC = $${NDK_LLVM_PATH}/bin/clang
QMAKE_CXX = $${NDK_LLVM_PATH}/bin/clang++
QMAKE_OBJCOPY = $${NDK_LLVM_PATH}/bin/llvm-objcopy
QMAKE_AR = $${NDK_LLVM_PATH}/bin/llvm-ar cqs
QMAKE_NM = $${NDK_LLVM_PATH}/bin/llvm-nm -P
QMAKE_STRIP = $${NDK_LLVM_PATH}/bin/llvm-strip
QMAKE_RANLIB = $${NDK_LLVM_PATH}/bin/llvm-ranlib
QMAKE_CFLAGS += $$OHOS_C_CXX_COMMON_FLAGS -fPIC
QMAKE_CXXFLAGS += $$OHOS_C_CXX_COMMON_FLAGS -fPIC
QMAKE_CFLAGS_OPTIMIZE = -Oz
QMAKE_CFLAGS_OPTIMIZE_FULL = -Oz
QMAKE_LFLAGS_APP = -Wl,--build-id=sha1 -Wl,--no-undefined -Wl,-z,noexecstack -shared
QMAKE_LFLAGS_SHLIB = -Wl,--build-id=sha1 -Wl,--no-undefined -Wl,-z,noexecstack -shared
QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
QMAKE_LFLAGS_NOUNDEF = -Wl,--no-undefined
QMAKE_LFLAGS_RPATH = -Wl,-rpath=
QMAKE_LFLAGS_RPATHLINK = -Wl,-rpath-link=
equals(QMAKE_HOST.os, Windows) {
QMAKE_LINK_OBJECT_MAX = 10
QMAKE_LINK_OBJECT_SCRIPT = object_script
}
QMAKE_LIBS_X11 =
QMAKE_LIBS_THREAD =
QMAKE_INCDIR_POST =
QMAKE_INCDIR_X11 =
QMAKE_LIBDIR_X11 =
QMAKE_LINK_C = $$QMAKE_CC
QMAKE_LINK_C_SHLIB = $$QMAKE_CC
QMAKE_LINK = $$QMAKE_CXX
QMAKE_LINK_SHLIB = $$QMAKE_CXX
QMAKE_LFLAGS += $$OHOS_LINK_FLAGS
QMAKE_LIBS_OPENGL_ES3 = -lGLESv3
armeabi-v7a.sdk = armeabi-v7a
armeabi-v7a.target = armeabi-v7a
armeabi-v7a.dir_affix = armeabi-v7a
armeabi-v7a.CONFIG = armeabi-v7a
armeabi-v7a.deployment_identifier = armeabi-v7a
arm64-v8a.sdk = arm64-v8a
arm64-v8a.target = arm64-v8a
arm64-v8a.dir_affix = arm64-v8a
arm64-v8a.CONFIG = arm64-v8a
arm64-v8a.deployment_identifier = arm64-v8a
x86.sdk = x86
x86.target = x86
x86.dir_affix = x86
x86.CONFIG = x86
x86.deployment_identifier = x86
x86_64.sdk = x86_64
x86_64.target = x86_64
x86_64.dir_affix = x86_64
x86_64.CONFIG = x86_64
x86_64.deployment_identifier = x86_64
load(qt_config) # this loads all configuration from configure step