Move version definition to its own file
authorGuillaume Gardet <guillaume.gardet@arm.com>
Tue, 15 Oct 2019 06:47:26 +0000 (08:47 +0200)
committerMatteo Martincigh <matteo.martincigh@arm.com>
Thu, 17 Oct 2019 12:46:03 +0000 (13:46 +0100)
 * Move the ArmNN version to a separate ArmnnVersion.txt file
 * Updated makefiles accordingly

!referencetests:206978
!android-nn-driver:2110

Signed-off-by: Guillaume Gardet <guillaume.gardet@arm.com>
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
Change-Id: Ib1a34d38b5f4c7490108ea91d930cf5417d1ca94

Android.mk
ArmnnVersion.txt [new file with mode: 0644]
CMakeLists.txt
cmake/ArmnnVersion.cmake [new file with mode: 0644]
include/armnn/Version.hpp

index 93402ff..b2a4233 100644 (file)
@@ -6,7 +6,6 @@
 LOCAL_PATH := $(call my-dir)
 
 # Configure these paths if you move the source or Khronos headers
-#
 OPENCL_HEADER_PATH := $(LOCAL_PATH)/../clframework/include
 NN_HEADER_PATH := $(LOCAL_PATH)/../../../../frameworks/ml/nn/runtime/include
 ARMNN_HEADER_PATH := $(LOCAL_PATH)/include
@@ -24,6 +23,11 @@ ARMNN_BACKEND_MAKEFILE_LOCAL_PATHS := $(wildcard $(LOCAL_PATH)/src/backends/*/ba
 ARMNN_BACKEND_MAKEFILE_PATHS := $(subst $(LOCAL_PATH),,$(ARMNN_BACKEND_MAKEFILE_LOCAL_PATHS))
 ARMNN_BACKEND_MAKEFILE_DIRS := $(subst /backend.mk,,$(ARMNN_BACKEND_MAKEFILE_PATHS))
 
+# Get ArmNN's version from file
+get_version_number = $(shell sed -n 's/.*$1  *\([0-9*]\)/\1/p' $(LOCAL_PATH)/ArmnnVersion.txt)
+ARMNN_VERSION := 20$(call get_version_number,ARMNN_MAJOR_VERSION)$(call get_version_number,ARMNN_MINOR_VERSION)$(call get_version_number,ARMNN_PATCH_VERSION)
+$(info armnn ARMNN_VERSION: $(ARMNN_VERSION))
+
 ##############
 # libarmnn.a #
 ##############
@@ -207,7 +211,9 @@ LOCAL_CFLAGS := \
         -std=$(CPP_VERSION) \
         -fexceptions \
         -Wno-unused-parameter \
-        -frtti
+        -frtti \
+        -DARMNN_VERSION_FROM_FILE=$(ARMNN_VERSION)
+
 # The variable to enable/disable the CL backend (ARMNN_COMPUTE_CL_ENABLED) is declared in android-nn-driver/Android.mk
 ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
 LOCAL_CFLAGS += \
@@ -280,7 +286,9 @@ LOCAL_CFLAGS := \
         -std=$(CPP_VERSION) \
         -fexceptions \
         -frtti \
-        -isystem vendor/arm/android-nn-driver/boost_1_64_0
+        -isystem vendor/arm/android-nn-driver/boost_1_64_0 \
+        -DARMNN_VERSION_FROM_FILE=$(ARMNN_VERSION)
+
 # The variable to enable/disable the CL backend (ARMNN_COMPUTE_CL_ENABLED) is declared in android-nn-driver/Android.mk
 ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
 LOCAL_CFLAGS += \
diff --git a/ArmnnVersion.txt b/ArmnnVersion.txt
new file mode 100644 (file)
index 0000000..82f0311
--- /dev/null
@@ -0,0 +1,9 @@
+#
+# Copyright © 2019 Arm Ltd. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
+# ArmNN version number components
+ARMNN_MAJOR_VERSION 19
+ARMNN_MINOR_VERSION 08
+ARMNN_PATCH_VERSION 00
index 499f721..e1af11e 100644 (file)
@@ -7,6 +7,7 @@ project(armnn)
 
 set(additional_cmake_files)
 list(APPEND additional_cmake_files
+    cmake/ArmnnVersion.cmake
     cmake/Utils.cmake
     cmake/GlobalConfig.cmake
     cmake/AddDllCopyCommands.cmake)
diff --git a/cmake/ArmnnVersion.cmake b/cmake/ArmnnVersion.cmake
new file mode 100644 (file)
index 0000000..239b2cc
--- /dev/null
@@ -0,0 +1,25 @@
+#
+# Copyright © 2019 Arm Ltd. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
+# Read the ArmNN version components from file
+file(READ ${CMAKE_CURRENT_LIST_DIR}/../ArmnnVersion.txt armnnVersion)
+
+# Parse the ArmNN version components
+string(REGEX MATCH "ARMNN_MAJOR_VERSION ([0-9]*)" _ ${armnnVersion})
+set(ARMNN_MAJOR_VERSION ${CMAKE_MATCH_1})
+string(REGEX MATCH "ARMNN_MINOR_VERSION ([0-9]*)" _ ${armnnVersion})
+set(ARMNN_MINOR_VERSION ${CMAKE_MATCH_1})
+string(REGEX MATCH "ARMNN_PATCH_VERSION ([0-9]*)" _ ${armnnVersion})
+set(ARMNN_PATCH_VERSION ${CMAKE_MATCH_1})
+
+# Put together the ArmNN version (YYYYMMPP)
+set(ARMNN_VERSION "20${ARMNN_MAJOR_VERSION}${ARMNN_MINOR_VERSION}${ARMNN_PATCH_VERSION}")
+
+# Pass the ArmNN version to the build
+if(${CMAKE_VERSION} VERSION_LESS "3.12.0")
+    add_definitions(-DARMNN_VERSION_FROM_FILE=${ARMNN_VERSION})
+else()
+    add_compile_definitions(ARMNN_VERSION_FROM_FILE=${ARMNN_VERSION})
+endif()
index 9d73cd5..150d98b 100644 (file)
@@ -2,11 +2,23 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
+
 #pragma once
 
+#if !defined(ARMNN_VERSION_FROM_FILE)
+#error "A valid version of ArmNN must be provided at compile time"
+#endif
+
+#define STRINGIFY_VALUE(s) STRINGIFY_MACRO(s)
+#define STRINGIFY_MACRO(s) #s
+
 // YYYYMMPP
 // where:
 //   YYYY = 4-digit year number
 //   MM   = 2-digit month number
 //   PP   = 2-digit patch number
-#define ARMNN_VERSION "20190800"
+// Defined in ArmnnVersion.txt
+#define ARMNN_VERSION STRINGIFY_VALUE(ARMNN_VERSION_FROM_FILE)
+
+// Check that the provided ArmNN version is valid
+static_assert(sizeof(ARMNN_VERSION) == 9, "Invalid ArmNN version, a valid version should have exactly 8 digits");