aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Eilers <jan.eilers@arm.com>2020-09-25 08:36:44 +0100
committerTeresaARM <teresa.charlinreyes@arm.com>2020-09-29 21:46:41 +0000
commitba3ef18cb6117c49fcdbf177dce5991d6d679cbc (patch)
treecede43ef02deb3271b0da7172b410d29052999b6
parent64f787515e8da3cfec089b62e265c4a90543e2f2 (diff)
downloadarmnn-ba3ef18cb6117c49fcdbf177dce5991d6d679cbc.tar.gz
IVGCVSW-5295 Change fmt to be a header-only interface library
* Fix non-virtual-dtor warnings in fmt * Fix wrong fmt include in TfParser * Make fmt work in nn-driver * Make fmt a header-only interface library * Link fmt where necessary Signed-off-by: Jan Eilers <jan.eilers@arm.com> Change-Id: I9db7cd9a133a81262cbf79f04fb419ab97b88ea8
-rw-r--r--Android.mk3
-rw-r--r--CMakeLists.txt8
-rwxr-xr-xsrc/armnnTfParser/TfParser.cpp2
-rw-r--r--tests/CMakeLists.txt3
-rw-r--r--third-party/fmt/CMakeLists.txt19
-rw-r--r--third-party/fmt/core.h2
-rw-r--r--third-party/fmt/src/format.cc69
7 files changed, 30 insertions, 76 deletions
diff --git a/Android.mk b/Android.mk
index 2d3aa96d9c..f767b20d68 100644
--- a/Android.mk
+++ b/Android.mk
@@ -249,7 +249,8 @@ LOCAL_CFLAGS := \
-std=$(CPP_VERSION) \
-fexceptions \
-Wno-unused-parameter \
- -frtti
+ -frtti \
+ -DFMT_HEADER_ONLY
# 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)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 48405327c2..c935e6b52d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -541,10 +541,6 @@ list(APPEND armnn_sources
src/profiling/backends/BackendProfiling.cpp
src/profiling/backends/BackendProfiling.hpp
third-party/cxxopts/cxxopts.hpp
- third-party/fmt/core.h
- third-party/fmt/format.h
- third-party/fmt/format-inl.h
- third-party/fmt/src/format.cc
third-party/ghc/filesystem.hpp
third-party/half/half.hpp
)
@@ -587,6 +583,10 @@ if ("${CMAKE_SYSTEM_NAME}" STREQUAL Windows)
target_link_libraries(armnn Ws2_32.lib)
endif()
+# Link fmt third-party library
+add_subdirectory(third-party/fmt)
+target_link_libraries(armnn fmt)
+
if(BUILD_CAFFE_PARSER)
install(TARGETS armnnCaffeParser
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
diff --git a/src/armnnTfParser/TfParser.cpp b/src/armnnTfParser/TfParser.cpp
index 8046a5521c..6cf1df1b07 100755
--- a/src/armnnTfParser/TfParser.cpp
+++ b/src/armnnTfParser/TfParser.cpp
@@ -24,7 +24,7 @@
#include <tensorflow/core/framework/graph.pb.h>
#include <boost/format.hpp>
-#include <fmt/core.h>
+#include <fmt/format.h>
#include <numeric>
using namespace armnnUtils;
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 5bbec11158..b3496b42ee 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -16,6 +16,9 @@ target_include_directories(inferenceTest PRIVATE ../src/armnnUtils)
target_include_directories(inferenceTest PRIVATE ../src/backends)
target_include_directories(inferenceTest PRIVATE ../third-party/stb)
+# Link fmt third-party library
+target_link_libraries(inferenceTest fmt)
+
if(BUILD_CAFFE_PARSER)
macro(CaffeParserTest testName sources)
add_executable_ex(${testName} ${sources})
diff --git a/third-party/fmt/CMakeLists.txt b/third-party/fmt/CMakeLists.txt
new file mode 100644
index 0000000000..496ae1fbc6
--- /dev/null
+++ b/third-party/fmt/CMakeLists.txt
@@ -0,0 +1,19 @@
+#
+# Copyright © 2020 Arm Ltd. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
+add_library(fmt INTERFACE)
+
+target_compile_definitions(fmt INTERFACE FMT_HEADER_ONLY=1)
+
+target_include_directories(fmt SYSTEM INTERFACE
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
+
+install(
+ TARGETS fmt
+ EXPORT armnn-targets
+ LIBRARY DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+) \ No newline at end of file
diff --git a/third-party/fmt/core.h b/third-party/fmt/core.h
index 32923ee4b4..338e0c708c 100644
--- a/third-party/fmt/core.h
+++ b/third-party/fmt/core.h
@@ -668,7 +668,7 @@ template <typename T> class buffer {
size_(sz),
capacity_(cap) {}
- ~buffer() = default;
+ virtual ~buffer() = default;
/** Sets the buffer data and capacity. */
void set(T* buf_data, size_t buf_capacity) FMT_NOEXCEPT {
diff --git a/third-party/fmt/src/format.cc b/third-party/fmt/src/format.cc
deleted file mode 100644
index a64a1f3893..0000000000
--- a/third-party/fmt/src/format.cc
+++ /dev/null
@@ -1,69 +0,0 @@
-// Formatting library for C++
-//
-// Copyright (c) 2012 - 2016, Victor Zverovich
-// All rights reserved.
-//
-// For the license information refer to format.h.
-
-#include "fmt/format-inl.h"
-
-FMT_BEGIN_NAMESPACE
-namespace detail {
-
-template <typename T>
-int format_float(char* buf, std::size_t size, const char* format, int precision,
- T value) {
-#ifdef FMT_FUZZ
- if (precision > 100000)
- throw std::runtime_error(
- "fuzz mode - avoid large allocation inside snprintf");
-#endif
- // Suppress the warning about nonliteral format string.
- int (*snprintf_ptr)(char*, size_t, const char*, ...) = FMT_SNPRINTF;
- return precision < 0 ? snprintf_ptr(buf, size, format, value)
- : snprintf_ptr(buf, size, format, precision, value);
-}
-} // namespace detail
-
-template struct FMT_INSTANTIATION_DEF_API detail::basic_data<void>;
-
-// Workaround a bug in MSVC2013 that prevents instantiation of format_float.
-int (*instantiate_format_float)(double, int, detail::float_specs,
- detail::buffer<char>&) = detail::format_float;
-
-#ifndef FMT_STATIC_THOUSANDS_SEPARATOR
-template FMT_API detail::locale_ref::locale_ref(const std::locale& loc);
-template FMT_API std::locale detail::locale_ref::get<std::locale>() const;
-#endif
-
-// Explicit instantiations for char.
-
-template FMT_API std::string detail::grouping_impl<char>(locale_ref);
-template FMT_API char detail::thousands_sep_impl(locale_ref);
-template FMT_API char detail::decimal_point_impl(locale_ref);
-
-template FMT_API void detail::buffer<char>::append(const char*, const char*);
-
-template FMT_API FMT_BUFFER_CONTEXT(char)::iterator detail::vformat_to(
- detail::buffer<char>&, string_view,
- basic_format_args<FMT_BUFFER_CONTEXT(char)>);
-
-template FMT_API int detail::snprintf_float(double, int, detail::float_specs,
- detail::buffer<char>&);
-template FMT_API int detail::snprintf_float(long double, int,
- detail::float_specs,
- detail::buffer<char>&);
-template FMT_API int detail::format_float(double, int, detail::float_specs,
- detail::buffer<char>&);
-template FMT_API int detail::format_float(long double, int, detail::float_specs,
- detail::buffer<char>&);
-
-// Explicit instantiations for wchar_t.
-
-template FMT_API std::string detail::grouping_impl<wchar_t>(locale_ref);
-template FMT_API wchar_t detail::thousands_sep_impl(locale_ref);
-template FMT_API wchar_t detail::decimal_point_impl(locale_ref);
-
-template FMT_API void detail::buffer<wchar_t>::append(const wchar_t*,
- const wchar_t*);
-FMT_END_NAMESPACE