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 --- README.md | 5 +-- tests/CMakeLists.txt | 3 -- third-party/fmt/CMakeLists.txt | 13 +++----- third-party/fmt/src/format.cc | 69 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 76 insertions(+), 14 deletions(-) create mode 100644 third-party/fmt/src/format.cc 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 - $ - $) +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