From c527fd1f14c27855a37f2e8ac5346ce8d940ced2 Mon Sep 17 00:00:00 2001 From: Tudor Florea Date: Thu, 16 Oct 2014 03:05:19 +0200 Subject: initial commit for Enea Linux 4.0-140929 Migrated from the internal git server on the daisy-enea-point-release branch Signed-off-by: Tudor Florea --- .../cmake/cmake-native_2.8.12.2.bb | 17 +++++++ meta/recipes-devtools/cmake/cmake.inc | 51 +++++++++++++++++++ .../cmake/cmake/aarch64-cmake.patch | 37 ++++++++++++++ .../cmake/cmake/aarch64-kwsys.patch | 40 +++++++++++++++ .../cmake/cmake/cmake-2.8.11.2-FindFreetype.patch | 47 ++++++++++++++++++ .../cmake/cmake/cmlibarchive-disable-ext2fs.patch | 26 ++++++++++ .../cmake/cmake/dont-run-cross-binaries.patch | 23 +++++++++ .../cmake/cmake/qt4-fail-silent.patch | 55 ++++++++++++++++++++ .../cmake/cmake/support-oe-qt4-tools-names.patch | 58 ++++++++++++++++++++++ meta/recipes-devtools/cmake/cmake_2.8.12.2.bb | 38 ++++++++++++++ 10 files changed, 392 insertions(+) create mode 100644 meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb create mode 100644 meta/recipes-devtools/cmake/cmake.inc create mode 100644 meta/recipes-devtools/cmake/cmake/aarch64-cmake.patch create mode 100644 meta/recipes-devtools/cmake/cmake/aarch64-kwsys.patch create mode 100644 meta/recipes-devtools/cmake/cmake/cmake-2.8.11.2-FindFreetype.patch create mode 100644 meta/recipes-devtools/cmake/cmake/cmlibarchive-disable-ext2fs.patch create mode 100644 meta/recipes-devtools/cmake/cmake/dont-run-cross-binaries.patch create mode 100644 meta/recipes-devtools/cmake/cmake/qt4-fail-silent.patch create mode 100644 meta/recipes-devtools/cmake/cmake/support-oe-qt4-tools-names.patch create mode 100644 meta/recipes-devtools/cmake/cmake_2.8.12.2.bb (limited to 'meta/recipes-devtools/cmake') diff --git a/meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb b/meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb new file mode 100644 index 0000000000..638c074d6a --- /dev/null +++ b/meta/recipes-devtools/cmake/cmake-native_2.8.12.2.bb @@ -0,0 +1,17 @@ +require cmake.inc +inherit native + +# Using cmake's internal libarchive, so some dependencies are needed +DEPENDS += "bzip2-native zlib-native" + +SRC_URI += "\ + file://cmlibarchive-disable-ext2fs.patch \ +" + +SRC_URI[md5sum] = "17c6513483d23590cbce6957ec6d1e66" +SRC_URI[sha256sum] = "8c6574e9afabcb9fc66f463bb1f2f051958d86c85c37fccf067eb1a44a120e5e" + +# Disable ccmake since we don't depend on ncurses +CMAKE_EXTRACONF = "\ + -DBUILD_CursesDialog=0 \ +" diff --git a/meta/recipes-devtools/cmake/cmake.inc b/meta/recipes-devtools/cmake/cmake.inc new file mode 100644 index 0000000000..8592a23046 --- /dev/null +++ b/meta/recipes-devtools/cmake/cmake.inc @@ -0,0 +1,51 @@ +# Copyright (C) 2005, Koninklijke Philips Electronics NV. All Rights Reserved +# Released under the MIT license (see packages/COPYING) + +SUMMARY = "Cross-platform, open-source make system" +HOMEPAGE = "http://www.cmake.org/" +BUGTRACKER = "http://public.kitware.com/Bug/my_view_page.php" +SECTION = "console/utils" +LICENSE = "BSD" +LIC_FILES_CHKSUM = "file://Copyright.txt;md5=bb2fa3a08736b842556f6171bb9e8ae1 \ + file://Source/cmake.h;beginline=1;endline=10;md5=341736dae83c9e344b53eeb1bc7d7bc2" + +CMAKE_MAJOR_VERSION = "${@'.'.join(d.getVar('PV',1).split('.')[0:2])}" + +SRC_URI = "http://www.cmake.org/files/v${CMAKE_MAJOR_VERSION}/cmake-${PV}.tar.gz \ + file://support-oe-qt4-tools-names.patch \ + file://aarch64-cmake.patch \ + file://aarch64-kwsys.patch \ + file://qt4-fail-silent.patch \ + file://cmake-2.8.11.2-FindFreetype.patch \ + " + +inherit autotools-brokensep + +# Ugly hack to work around undefined OE_QMAKE_PATH_EXTERNAL_HOST_BINS variable +# and possibly missing qmake binary (qtbase-native can be removed from sysroot +# e.g. in order to upgrade it, even when there is target qtbase) + +# Fixes errors like this in cmake(-native).do_configure: +#| -- Performing Test run_pic_test - Success +#| CMake Error at tmp-eglibc/sysroots/qemuarm/usr/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:27 (message): +#| The imported target "Qt5::Core" references the file +#| +#| "/qmake" +#| +#| but this file does not exist. Possible reasons include: + +do_configure_prepend() { + sed -i 's/^find_package(Qt5Core QUIET)$/#find_package(Qt5Core QUIET)/g' ${S}/Tests/RunCMake/CMakeLists.txt + sed -i 's/^find_package(Qt5Core REQUIRED)/#find_package(Qt5Core REQUIRED)/g' ${S}/Tests/RunCMake/IncompatibleQt/IncompatibleQt.cmake + sed -i 's/^ find_package(Qt5Widgets REQUIRED)/# find_package(Qt5Widgets REQUIRED)/g' ${S}/Tests/QtAutomoc/CMakeLists.txt + sed -i 's/^find_package(Qt5Core REQUIRED)/#find_package(Qt5Core REQUIRED)/g' ${S}/Tests/Qt4And5Automoc/CMakeLists.txt + sed -i 's/^ find_package(Qt5Widgets QUIET NO_MODULE)/# find_package(Qt5Widgets QUIET NO_MODULE)/g' ${S}/Tests/CMakeLists.txt + sed -i 's/^find_package(Qt5Widgets QUIET)/#find_package(Qt5Widgets QUIET)/g' ${S}/Source/QtDialog/CMakeLists.txt +} + +# Extra flags to pass to cmake invoked by bootstrap +CMAKE_EXTRACONF = "" + +do_configure () { + ./configure --prefix=${prefix} -- ${CMAKE_EXTRACONF} +} diff --git a/meta/recipes-devtools/cmake/cmake/aarch64-cmake.patch b/meta/recipes-devtools/cmake/cmake/aarch64-cmake.patch new file mode 100644 index 0000000000..3e26d58267 --- /dev/null +++ b/meta/recipes-devtools/cmake/cmake/aarch64-cmake.patch @@ -0,0 +1,37 @@ +From: Riku Voipio +Date: Fri, 21 Dec 2012 11:20:02 +0000 (+0200) +Subject: KWIML: Teach ABI.h about Aarch64 +X-Git-Url: http://cmake.org/gitweb?p=cmake.git;a=commitdiff_plain;h=34916522 + +KWIML: Teach ABI.h about Aarch64 + +The __aarch64__ defines Aarch64, while __AARCH64EB__ defines bigendian +and __AARCH64EL__ little endian. Only little endian tested, no big +endian toolchain exists yet. + +Signed-off-by: Riku Voipio + +Hand edited by: Marcin Juszkiewicz to get it applied in OE + +Upstream-Status: Backport +--- + +diff --git a/ABI.h.in b/ABI.h.in +index f93ddba..7f4772a 100644 +--- a/Utilities/KWIML/ABI.h.in ++++ b/Utilities/KWIML/ABI.h.in +@@ -418,6 +418,14 @@ suppression macro @KWIML@_ABI_NO_VERIFY was defined. + #elif defined(__vax__) + # define @KWIML@_ABI_ENDIAN_ID @KWIML@_ABI_ENDIAN_ID_BIG + ++/* Aarch64 */ ++#elif defined(__aarch64__) ++# if !defined(__AARCH64EB__) ++# define @KWIML@_ABI_ENDIAN_ID @KWIML@_ABI_ENDIAN_ID_LITTLE ++# else ++# define @KWIML@_ABI_ENDIAN_ID @KWIML@_ABI_ENDIAN_ID_BIG ++# endif ++ + /* Unknown CPU */ + #elif !defined(@KWIML@_ABI_NO_ERROR_ENDIAN) + # error "Byte order of target CPU unknown." diff --git a/meta/recipes-devtools/cmake/cmake/aarch64-kwsys.patch b/meta/recipes-devtools/cmake/cmake/aarch64-kwsys.patch new file mode 100644 index 0000000000..2b68eae6c2 --- /dev/null +++ b/meta/recipes-devtools/cmake/cmake/aarch64-kwsys.patch @@ -0,0 +1,40 @@ +From: KWSys Robot +Date: Fri, 21 Dec 2012 13:29:37 +0000 (-0500) +Subject: KWSys 2012-12-21 (8ce09af5) +X-Git-Url: http://cmake.org/gitweb?p=cmake.git;a=commitdiff_plain;h=567e7d94 + +KWSys 2012-12-21 (8ce09af5) + +Extract upstream KWSys using the following shell commands. + +$ git archive --prefix=upstream-kwsys/ 8ce09af5 | tar x +$ git shortlog --no-merges --abbrev=8 --format='%h %s' 933eb822..8ce09af5 +Riku Voipio (1): + 8ce09af5 CPU: Add Aarch64 support + +Change-Id: I4bd0a97abaa0f958e2679afe2d4ad4bcc37434a0 + +Hand edited by: Marcin Juszkiewicz to get it applied in OE + +Upstream-Status: Backport +--- + +diff --git a/CPU.h.in b/CPU.h.in +index ecd29d1..2e1a584 100644 +--- a/Source/kwsys/CPU.h.in ++++ b/Source/kwsys/CPU.h.in +@@ -98,6 +98,14 @@ + #elif defined(__SYSC_ZARCH__) + # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG + ++/* Aarch64 */ ++#elif defined(__aarch64__) ++# if !defined(__AARCH64EB__) ++# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_LITTLE ++# else ++# define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID @KWSYS_NAMESPACE@_CPU_ENDIAN_ID_BIG ++# endif ++ + /* Unknown CPU */ + #else + # define @KWSYS_NAMESPACE@_CPU_ENDIAN_ID 0 diff --git a/meta/recipes-devtools/cmake/cmake/cmake-2.8.11.2-FindFreetype.patch b/meta/recipes-devtools/cmake/cmake/cmake-2.8.11.2-FindFreetype.patch new file mode 100644 index 0000000000..1b523c057b --- /dev/null +++ b/meta/recipes-devtools/cmake/cmake/cmake-2.8.11.2-FindFreetype.patch @@ -0,0 +1,47 @@ +From: Julian Ospald +Date: Sun Dec 8 13:38:06 UTC 2013 +Subject: fix check for freetype-2.5.1 + +Upstream-Status: Submitted http://www.cmake.org/Bug/view.php?id=14601 + +Signed-off-by: Martin Jansa + +--- old/Modules/FindFreetype.cmake ++++ new/Modules/FindFreetype.cmake +@@ -64,6 +64,19 @@ + PATH_SUFFIXES include/freetype2 include + ) + ++if(NOT FREETYPE_INCLUDE_DIR_freetype2) ++ find_path(FREETYPE_INCLUDE_DIR_freetype2 config/ftheader.h ++ HINTS ++ ENV FREETYPE_DIR ++ PATHS ++ /usr/X11R6 ++ /usr/local/X11R6 ++ /usr/local/X11 ++ /usr/freeware ++ PATH_SUFFIXES include/freetype2 include ++ ) ++endif() ++ + find_library(FREETYPE_LIBRARY + NAMES freetype libfreetype freetype219 + HINTS +@@ -82,8 +95,14 @@ + endif() + set(FREETYPE_LIBRARIES "${FREETYPE_LIBRARY}") + +-if(FREETYPE_INCLUDE_DIR_freetype2 AND EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}/freetype/freetype.h") +- file(STRINGS "${FREETYPE_INCLUDE_DIR_freetype2}/freetype/freetype.h" freetype_version_str ++if(EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}/freetype/freetype.h") ++ set(FREETYPE_H "${FREETYPE_INCLUDE_DIR_freetype2}/freetype/freetype.h") ++elseif(EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}/freetype.h") ++ set(FREETYPE_H "${FREETYPE_INCLUDE_DIR_freetype2}/freetype.h") ++endif() ++ ++if(FREETYPE_INCLUDE_DIR_freetype2 AND FREETYPE_H) ++ file(STRINGS "${FREETYPE_H}" freetype_version_str + REGEX "^#[\t ]*define[\t ]+FREETYPE_(MAJOR|MINOR|PATCH)[\t ]+[0-9]+$") + + unset(FREETYPE_VERSION_STRING) diff --git a/meta/recipes-devtools/cmake/cmake/cmlibarchive-disable-ext2fs.patch b/meta/recipes-devtools/cmake/cmake/cmlibarchive-disable-ext2fs.patch new file mode 100644 index 0000000000..bf3671259e --- /dev/null +++ b/meta/recipes-devtools/cmake/cmake/cmlibarchive-disable-ext2fs.patch @@ -0,0 +1,26 @@ +Disable use of ext2fs/ext2_fs.h by cmake's internal libarchive copy + +We don't want to add a dependency on e2fsprogs-native for cmake-native, +and we don't use CPack so just disable this functionality. + +Upstream-Status: Inappropriate [config] + +Signed-off-by: Paul Eggleton + +--- a/Utilities/cmlibarchive/CMakeLists.txt ++++ b/Utilities/cmlibarchive/CMakeLists.txt +@@ -237,12 +237,8 @@ LA_CHECK_INCLUDE_FILE("copyfile.h" HAVE_COPYFILE_H) + LA_CHECK_INCLUDE_FILE("direct.h" HAVE_DIRECT_H) + LA_CHECK_INCLUDE_FILE("dlfcn.h" HAVE_DLFCN_H) + LA_CHECK_INCLUDE_FILE("errno.h" HAVE_ERRNO_H) +-LA_CHECK_INCLUDE_FILE("ext2fs/ext2_fs.h" HAVE_EXT2FS_EXT2_FS_H) +- +-CHECK_C_SOURCE_COMPILES("#include +-#include +-int main(void) { return EXT2_IOC_GETFLAGS; }" HAVE_WORKING_EXT2_IOC_GETFLAGS) +- ++SET(HAVE_EXT2FS_EXT2_FS_H 0) ++SET(HAVE_WORKING_EXT2_IOC_GETFLAGS 0) + LA_CHECK_INCLUDE_FILE("fcntl.h" HAVE_FCNTL_H) + LA_CHECK_INCLUDE_FILE("grp.h" HAVE_GRP_H) + LA_CHECK_INCLUDE_FILE("inttypes.h" HAVE_INTTYPES_H) diff --git a/meta/recipes-devtools/cmake/cmake/dont-run-cross-binaries.patch b/meta/recipes-devtools/cmake/cmake/dont-run-cross-binaries.patch new file mode 100644 index 0000000000..0c059f12ed --- /dev/null +++ b/meta/recipes-devtools/cmake/cmake/dont-run-cross-binaries.patch @@ -0,0 +1,23 @@ +cmake: don't run cross-binaries on host machine + +When doing the cross build we obviously cannot run those binaries on +host since they can be binary incompatible. + +Upstream-Status: Inappropriate [embedded specific] + +Signed-off-by: Otavio Salvador + +Index: cmake-2.8.10.1/CMakeLists.txt +=================================================================== +--- cmake-2.8.10.1.orig/CMakeLists.txt ++++ cmake-2.8.10.1/CMakeLists.txt +@@ -588,7 +588,8 @@ mark_as_advanced(CMAKE_STRICT) + + # build the remaining subdirectories + add_subdirectory(Source) +-add_subdirectory(Utilities) ++# Come on! Running the cross-binaries on host is not a good idea. ++#add_subdirectory(Utilities) + add_subdirectory(Tests) + + if(BUILD_TESTING) diff --git a/meta/recipes-devtools/cmake/cmake/qt4-fail-silent.patch b/meta/recipes-devtools/cmake/cmake/qt4-fail-silent.patch new file mode 100644 index 0000000000..fd39f3f9e7 --- /dev/null +++ b/meta/recipes-devtools/cmake/cmake/qt4-fail-silent.patch @@ -0,0 +1,55 @@ +Fail silently if system Qt installation is broken + +Fixes a regression in behaviour from 2.8.10 to 2.8.11 resulting in the +following error if the system Qt installation is broken: + +CMake Error at Modules/FindQt4.cmake:1028 (set_property): + set_property could not find TARGET Qt4::QtCore. Perhaps it has not yet + been created. +Call Stack (most recent call first): + Tests/RunCMake/CMakeLists.txt:79 (find_package) + +Upstream-Status: Pending + +Signed-off-by: Paul Eggleton + +--- cmake-2.8.11/Modules/FindQt4.cmake 2013-07-04 10:20:42.092848274 +0100 ++++ cmake-2.8.11/Modules/FindQt4.cmake 2013-07-04 10:52:15.693380555 +0100 +@@ -1025,21 +1025,22 @@ + set(_configs) + endmacro() + +- +- # Set QT_xyz_LIBRARY variable and add +- # library include path to QT_INCLUDES +- _QT4_ADJUST_LIB_VARS(QtCore) +- set_property(TARGET Qt4::QtCore APPEND PROPERTY +- INTERFACE_INCLUDE_DIRECTORIES +- "${QT_MKSPECS_DIR}/default" +- ${QT_INCLUDE_DIR} +- ) +- set_property(TARGET Qt4::QtCore PROPERTY +- INTERFACE_QT_MAJOR_VERSION 4 +- ) +- set_property(TARGET Qt4::QtCore APPEND PROPERTY +- COMPATIBLE_INTERFACE_STRING QT_MAJOR_VERSION +- ) ++ if(QT_QTCORE_FOUND) ++ # Set QT_xyz_LIBRARY variable and add ++ # library include path to QT_INCLUDES ++ _QT4_ADJUST_LIB_VARS(QtCore) ++ set_property(TARGET Qt4::QtCore APPEND PROPERTY ++ INTERFACE_INCLUDE_DIRECTORIES ++ "${QT_MKSPECS_DIR}/default" ++ ${QT_INCLUDE_DIR} ++ ) ++ set_property(TARGET Qt4::QtCore PROPERTY ++ INTERFACE_QT_MAJOR_VERSION 4 ++ ) ++ set_property(TARGET Qt4::QtCore APPEND PROPERTY ++ COMPATIBLE_INTERFACE_STRING QT_MAJOR_VERSION ++ ) ++ endif() + + foreach(QT_MODULE ${QT_MODULES}) + _QT4_ADJUST_LIB_VARS(${QT_MODULE}) diff --git a/meta/recipes-devtools/cmake/cmake/support-oe-qt4-tools-names.patch b/meta/recipes-devtools/cmake/cmake/support-oe-qt4-tools-names.patch new file mode 100644 index 0000000000..0e311f70e3 --- /dev/null +++ b/meta/recipes-devtools/cmake/cmake/support-oe-qt4-tools-names.patch @@ -0,0 +1,58 @@ +cmake: support OpenEmbedded Qt4 tool binary names + +The FindQt4 module looks for Qt4 binaries to be able to gather the +paths used for compilation and also to be using during other processes +(translation update, translation binary generating and like) however +OpenEmbedded has renamed those to allow old QMake to be used in +parallel with the current one. This patch adds support for the +OpenEmbedded specific binary names. + +Upstream-Status: Inappropriate [embedded specific] + +Signed-off-by: Otavio Salvador + +Index: cmake-2.8.11/Modules/FindQt4.cmake +=================================================================== +--- cmake-2.8.11.orig/Modules/FindQt4.cmake ++++ cmake-2.8.11/Modules/FindQt4.cmake +@@ -569,7 +569,7 @@ endfunction() + + set(QT4_INSTALLED_VERSION_TOO_OLD FALSE) + +-set(_QT4_QMAKE_NAMES qmake qmake4 qmake-qt4 qmake-mac) ++set(_QT4_QMAKE_NAMES qmake qmake2 qmake4 qmake-qt4 qmake-mac) + _qt4_find_qmake("${_QT4_QMAKE_NAMES}" QT_QMAKE_EXECUTABLE QTVERSION) + + if (QT_QMAKE_EXECUTABLE AND QTVERSION) +@@ -1157,19 +1157,19 @@ if (QT_QMAKE_EXECUTABLE AND QTVERSION) + ) + + find_program(QT_RCC_EXECUTABLE +- NAMES rcc ++ NAMES rcc4 rcc + PATHS ${QT_BINARY_DIR} + NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH + ) + + find_program(QT_DBUSCPP2XML_EXECUTABLE +- NAMES qdbuscpp2xml ++ NAMES qdbuscpp2xml4 qdbuscpp2xml + PATHS ${QT_BINARY_DIR} + NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH + ) + + find_program(QT_DBUSXML2CPP_EXECUTABLE +- NAMES qdbusxml2cpp ++ NAMES qdbusxml2cp4 qdbusxml2cpp + PATHS ${QT_BINARY_DIR} + NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH + ) +@@ -1187,7 +1187,7 @@ if (QT_QMAKE_EXECUTABLE AND QTVERSION) + ) + + find_program(QT_QCOLLECTIONGENERATOR_EXECUTABLE +- NAMES qcollectiongenerator-qt4 qcollectiongenerator ++ NAMES qcollectiongenerator-qt4 qcollectiongenerator qcollectiongenerator4 + PATHS ${QT_BINARY_DIR} + NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH + ) diff --git a/meta/recipes-devtools/cmake/cmake_2.8.12.2.bb b/meta/recipes-devtools/cmake/cmake_2.8.12.2.bb new file mode 100644 index 0000000000..30ae61ed8a --- /dev/null +++ b/meta/recipes-devtools/cmake/cmake_2.8.12.2.bb @@ -0,0 +1,38 @@ +require cmake.inc + +inherit cmake + +DEPENDS += "curl expat zlib libarchive" + +SRC_URI += "file://dont-run-cross-binaries.patch" + +SRC_URI[md5sum] = "17c6513483d23590cbce6957ec6d1e66" +SRC_URI[sha256sum] = "8c6574e9afabcb9fc66f463bb1f2f051958d86c85c37fccf067eb1a44a120e5e" + +# Strip ${prefix} from ${docdir}, set result into docdir_stripped +python () { + prefix=d.getVar("prefix", True) + docdir=d.getVar("docdir", True) + + if not docdir.startswith(prefix): + raise bb.build.FuncFailed('docdir must contain prefix as its prefix') + + docdir_stripped = docdir[len(prefix):] + if len(docdir_stripped) > 0 and docdir_stripped[0] == '/': + docdir_stripped = docdir_stripped[1:] + + d.setVar("docdir_stripped", docdir_stripped) +} + +EXTRA_OECMAKE=" \ + -DCMAKE_DOC_DIR=${docdir_stripped}/cmake-${CMAKE_MAJOR_VERSION} \ + -DCMAKE_USE_SYSTEM_LIBRARIES=1 \ + -DKWSYS_CHAR_IS_SIGNED=1 \ + -DBUILD_CursesDialog=0 \ + ${@base_contains('DISTRO_FEATURES', 'largefile', '-DKWSYS_LFS_WORKS=1', '-DKWSYS_LFS_DISABLE=1', d)} \ +" + +FILES_${PN} += "${datadir}/cmake-${CMAKE_MAJOR_VERSION}" +FILES_${PN}-doc += "${docdir}/cmake-${CMAKE_MAJOR_VERSION}" + +BBCLASSEXTEND = "nativesdk" -- cgit v1.2.3-54-g00ecf