aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Eilers <jan.eilers@arm.com>2020-10-29 15:25:48 +0000
committerJan Eilers <jan.eilers@arm.com>2020-11-09 15:51:08 +0000
commitc9bc80e1d93d27ad298133c7345627e6a946fb92 (patch)
treef748f0f2564220959dd6fc38310448c817a0d975
parent7b23785689486186f027110365cbe2a4bf6c831b (diff)
downloadarmnn-c9bc80e1d93d27ad298133c7345627e6a946fb92.tar.gz
IVGCVSW-5462 Link fmt statically
* Fmt didn't get installed properly. Each component of an interface library needs to be installed separately. * Changed fmt to be a static library Signed-off-by: Jan Eilers <jan.eilers@arm.com> Change-Id: Ic69bc9536ee01eed7b434b1ff53150581ba60e00
-rw-r--r--README.md5
-rw-r--r--tests/CMakeLists.txt3
-rw-r--r--third-party/fmt/CMakeLists.txt13
-rw-r--r--third-party/fmt/src/format.cc69
4 files changed, 76 insertions, 14 deletions
diff --git a/README.md b/README.md
index 3c6c959131..ad71249578 100644
--- a/README.md
+++ b/README.md
@@ -56,11 +56,12 @@ Third party tools used by Arm NN:
| Tool | License (SPDX ID) | Description | Version | Provenience
|----------------|-------------------|------------------------------------------------------------------|-------------|-------------------
-| half | MIT | IEEE 754 conformant 16-bit half-precision floating point library | 1.12.0 | http://half.sourceforge.net
-| stb | MIT | Image loader, resize and writer | 2.16 | https://github.com/nothings/stb
| cxxopts | MIT | A lightweight C++ option parser library | SHA 12e496da3d486b87fa9df43edea65232ed852510 | https://github.com/jarro2783/cxxopts
+| fmt | MIT | {fmt} is an open-source formatting library providing a fast and safe alternative to C stdio and C++ iostreams. | 7.0.1 | https://github.com/fmtlib/fmt
| ghc | MIT | A header-only single-file std::filesystem compatible helper library | 1.3.2 | https://github.com/gulrak/filesystem
+| half | MIT | IEEE 754 conformant 16-bit half-precision floating point library | 1.12.0 | http://half.sourceforge.net
| mapbox/variant | BSD | A header-only alternative to 'boost::variant' | 1.1.3 | https://github.com/mapbox/variant
+| stb | MIT | Image loader, resize and writer | 2.16 | https://github.com/nothings/stb
### Contributions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index da757c2c82..9d3b026687 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -16,9 +16,6 @@ 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
index 496ae1fbc6..9be10e8cbf 100644
--- a/third-party/fmt/CMakeLists.txt
+++ b/third-party/fmt/CMakeLists.txt
@@ -3,17 +3,12 @@
# 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}>)
+add_library(fmt STATIC src/format.cc)
+target_include_directories(fmt PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
install(
TARGETS fmt
EXPORT armnn-targets
- LIBRARY DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
- ARCHIVE DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
) \ No newline at end of file
diff --git a/third-party/fmt/src/format.cc b/third-party/fmt/src/format.cc
new file mode 100644
index 0000000000..a64a1f3893
--- /dev/null
+++ b/third-party/fmt/src/format.cc
@@ -0,0 +1,69 @@
+// 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