From c9bc80e1d93d27ad298133c7345627e6a946fb92 Mon Sep 17 00:00:00 2001 From: Jan Eilers Date: Thu, 29 Oct 2020 15:25:48 +0000 Subject: 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 Change-Id: Ic69bc9536ee01eed7b434b1ff53150581ba60e00 --- third-party/fmt/CMakeLists.txt | 13 +++----- third-party/fmt/src/format.cc | 69 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 9 deletions(-) create mode 100644 third-party/fmt/src/format.cc (limited to 'third-party') 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 - $ - $) +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 +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; + +// Workaround a bug in MSVC2013 that prevents instantiation of format_float. +int (*instantiate_format_float)(double, int, detail::float_specs, + detail::buffer&) = 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() const; +#endif + +// Explicit instantiations for char. + +template FMT_API std::string detail::grouping_impl(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::append(const char*, const char*); + +template FMT_API FMT_BUFFER_CONTEXT(char)::iterator detail::vformat_to( + detail::buffer&, string_view, + basic_format_args); + +template FMT_API int detail::snprintf_float(double, int, detail::float_specs, + detail::buffer&); +template FMT_API int detail::snprintf_float(long double, int, + detail::float_specs, + detail::buffer&); +template FMT_API int detail::format_float(double, int, detail::float_specs, + detail::buffer&); +template FMT_API int detail::format_float(long double, int, detail::float_specs, + detail::buffer&); + +// Explicit instantiations for wchar_t. + +template FMT_API std::string detail::grouping_impl(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::append(const wchar_t*, + const wchar_t*); +FMT_END_NAMESPACE -- cgit v1.2.1