aboutsummaryrefslogtreecommitdiff
path: root/third-party
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 /third-party
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
Diffstat (limited to 'third-party')
-rw-r--r--third-party/fmt/CMakeLists.txt13
-rw-r--r--third-party/fmt/src/format.cc69
2 files changed, 73 insertions, 9 deletions
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