Skip to content

Commit

Permalink
Update vendored double-conversion to 3.2.1 (#570)
Browse files Browse the repository at this point in the history
Doing so allows for building on webassembly. Officially declareing support for WASM
however will have to wait until pyodide/pytest-pyodide#59 is
merged to facilitate testing WASM compatibility.
  • Loading branch information
joemarshall authored Nov 3, 2022
1 parent 13da58c commit 2907fde
Show file tree
Hide file tree
Showing 50 changed files with 4,820 additions and 2,133 deletions.
22 changes: 22 additions & 0 deletions deps/double-conversion/.gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.sconsign.dblite
*~
*.o
*.obj
msvc/Release/
Expand All @@ -7,3 +8,24 @@ msvc/Debug/
*.opensdf
*.sdf
*.user
*.a
*.so
*.so.*
*.dylib
/run_tests
Makefile
CMakeLists.txt.user
CMakeCache.txt
CMakeFiles
CMakeScripts
Testing
cmake_install.cmake
install_manifest.txt
compile_commands.json
CTestTestfile.cmake
_deps
*.cmake
*.kdev4
DartConfiguration.tcl
bazel-*
.cache
2 changes: 2 additions & 0 deletions deps/double-conversion/AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,5 @@ Mike Hommey <mhommey@mozilla.com>
Martin Olsson <mnemo@minimum.se>
Kent Williams <chaircrusher@gmail.com>
Elan Ruusamäe <glen@delfi.ee>
Colin Hirsch <github@colin-hirsch.net>
Zhenyi Peng <zhenyipeng@tencent.com>
14 changes: 10 additions & 4 deletions deps/double-conversion/BUILD
Original file line number Diff line number Diff line change
@@ -1,30 +1,36 @@
# Bazel (https://bazel.build/) BUILD file
# Bazel(http://bazel.io) BUILD file

load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")

licenses(["notice"])

exports_files(["LICENSE"])

cc_library(
name = "double-conversion",
srcs = [
"double-conversion/bignum.cc",
"double-conversion/bignum-dtoa.cc",
"double-conversion/cached-powers.cc",
"double-conversion/diy-fp.cc",
"double-conversion/double-conversion.cc",
"double-conversion/double-to-string.cc",
"double-conversion/fast-dtoa.cc",
"double-conversion/fixed-dtoa.cc",
"double-conversion/string-to-double.cc",
"double-conversion/strtod.cc",
"double-conversion/utils.h",
],
hdrs = [
"double-conversion/bignum.h",
"double-conversion/bignum-dtoa.h",
"double-conversion/cached-powers.h",
"double-conversion/diy-fp.h",
"double-conversion/double-conversion.h",
"double-conversion/double-to-string.h",
"double-conversion/fast-dtoa.h",
"double-conversion/fixed-dtoa.h",
"double-conversion/ieee.h",
"double-conversion/string-to-double.h",
"double-conversion/strtod.h",
"double-conversion/utils.h",
],
linkopts = [
"-lm",
Expand Down
173 changes: 116 additions & 57 deletions deps/double-conversion/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,27 +1,42 @@
cmake_minimum_required(VERSION 2.8.12)
project(double-conversion)
cmake_minimum_required(VERSION 3.0)
project(double-conversion VERSION 3.2.0)

include(GNUInstallDirs)
option(BUILD_SHARED_LIBS "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)" OFF)

# pick a version #
set(double-conversion_VERSION 2.0.1)
set(double-conversion_SOVERSION_MAJOR 1)
set(double-conversion_SOVERSION_MINOR 0)
set(double-conversion_SOVERSION_PATCH 0)
set(double-conversion_SOVERSION
${double-conversion_SOVERSION_MAJOR}.${double-conversion_SOVERSION_MINOR}.${double-conversion_SOVERSION_PATCH})

# set suffix for CMake files used for packaging
if(WIN32 AND NOT CYGWIN)
set(INSTALL_CMAKE_DIR CMake)
else()
set(INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/double-conversion)
if(BUILD_SHARED_LIBS AND MSVC)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
endif()

# Add src subdirectory
add_subdirectory(double-conversion)
set(headers
double-conversion/bignum.h
double-conversion/cached-powers.h
double-conversion/diy-fp.h
double-conversion/double-conversion.h
double-conversion/double-to-string.h
double-conversion/fast-dtoa.h
double-conversion/fixed-dtoa.h
double-conversion/ieee.h
double-conversion/string-to-double.h
double-conversion/strtod.h
double-conversion/utils.h)

add_library(double-conversion
double-conversion/bignum.cc
double-conversion/bignum-dtoa.cc
double-conversion/cached-powers.cc
double-conversion/double-to-string.cc
double-conversion/fast-dtoa.cc
double-conversion/fixed-dtoa.cc
double-conversion/string-to-double.cc
double-conversion/strtod.cc
${headers})
target_include_directories(
double-conversion PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)

# pick a version #
set_target_properties(double-conversion PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION 3)

#
# set up testing if requested
option(BUILD_TESTING "Build test programs" OFF)
if(BUILD_TESTING)
Expand All @@ -30,41 +45,85 @@ if(BUILD_TESTING)
add_subdirectory(test)
endif()

#
# mention the library target as export library
export(TARGETS double-conversion
FILE "${PROJECT_BINARY_DIR}/double-conversionLibraryDepends.cmake")

#
# set this build as an importable package
export(PACKAGE double-conversion)

#
# make a cmake file -- in this case, all that needs defining
# is double-conversion_INCLUDE_DIRS
configure_file(double-conversionBuildTreeSettings.cmake.in
"${PROJECT_BINARY_DIR}/double-conversionBuildTreeSettings.cmake"
@ONLY)

#
# sets up config to be used by CMake find_package
configure_file(double-conversionConfig.cmake.in
"${PROJECT_BINARY_DIR}/double-conversionConfig.cmake"
@ONLY)
#
# Export version # checked by find_package
configure_file(double-conversionConfigVersion.cmake.in
"${PROJECT_BINARY_DIR}/double-conversionConfigVersion.cmake"
@ONLY)
#
# install config files for find_package
install(FILES
"${PROJECT_BINARY_DIR}/double-conversionConfig.cmake"
"${PROJECT_BINARY_DIR}/double-conversionConfigVersion.cmake"
DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev)


#
# generates install cmake files to find libraries in installation.
install(EXPORT double-conversionLibraryDepends DESTINATION
"${INSTALL_CMAKE_DIR}" COMPONENT dev)
####
# Installation (https://github.com/forexample/package-example)

include(GNUInstallDirs)

# Layout. This works for all platforms:
# * <prefix>/lib/cmake/<PROJECT-NAME>
# * <prefix>/lib/
# * <prefix>/include/
set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")

set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")

# Configuration
set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
set(targets_export_name "${PROJECT_NAME}Targets")
set(namespace "${PROJECT_NAME}::")

# Include module with function 'write_basic_package_version_file'
include(CMakePackageConfigHelpers)

# Configure '<PROJECT-NAME>ConfigVersion.cmake'
# Note: PROJECT_VERSION is used as a VERSION
write_basic_package_version_file(
"${version_config}" COMPATIBILITY SameMajorVersion
)

# Configure '<PROJECT-NAME>Config.cmake'
# Use variables:
# * targets_export_name
# * PROJECT_NAME
configure_package_config_file(
"cmake/Config.cmake.in"
"${project_config}"
INSTALL_DESTINATION "${config_install_dir}"
)

# Targets:
# * <prefix>/lib/libdouble-conversion.a
# * header location after install: <prefix>/include/double-conversion/*.h
# * headers can be included by C++ code `#include <double-conversion/*.h>`
install(
TARGETS double-conversion
EXPORT "${targets_export_name}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
)

# Headers:
# * double-conversion/*.h -> <prefix>/include/double-conversion/*.h
install(
FILES ${headers}
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/double-conversion"
)

# Config
# * <prefix>/lib/cmake/double-conversion/double-conversionConfig.cmake
# * <prefix>/lib/cmake/double-conversion/double-conversionConfigVersion.cmake
install(
FILES "${project_config}" "${version_config}"
DESTINATION "${config_install_dir}"
)

# Config
# * <prefix>/lib/cmake/double-conversion/double-conversionTargets.cmake
install(
EXPORT "${targets_export_name}"
NAMESPACE "${namespace}"
DESTINATION "${config_install_dir}"
)

if (MSVC AND BUILD_SHARED_LIBS)
# Install companion PDB for Visual Studio
install(
FILES $<TARGET_PDB_FILE:double-conversion>
TYPE BIN
OPTIONAL
)
endif()
124 changes: 124 additions & 0 deletions deps/double-conversion/Changelog
Original file line number Diff line number Diff line change
@@ -1,3 +1,127 @@
2022-01-16:
Install Visual Studio debugger (pdb) files.

2022-01-10:
Fix quiet NANs on MIPS* and PA-RISC architectures.
Update version number.

2021-12-22:
Add support of Synopsys ARC64 architecture.
Reintroduce macros, if DOUBLE_CONVERSION_NON_PREFIXED_MACROS is set.

2021-12-04:
Update version number.

2021-10-04:
Consistently use semicolons after DOUBLE_CONVERSION_ASSERT.

2021-07-16:
Fix spelling.

2021-05-19:
Loongarch is a RISC-style command system architecture.
Add support for loongarch architecture.

2020-02-16:
Add support for quiet and signaling NaNs to ieee header.

2019-10-31:
Add support for xtensa architecture.
Add support for nios2 architecture.

2019-10-12:
Really add support for microblaze. A previous commit was lacking
the necessary line.

2019-09-02:
Add support for e2k architecture. Thanks to Michael Shigorin.

2019-08-01:
Add min exponent width option in double-to-string conversion.

2019-06-22:
Remove redundant parenthesis.

2019-06-11:
Changed all macros to use DOUBLE_CONVERSION_ as prefix.
Renamed ALLOW_CASE_INSENSIBILITY to ALLOW_CASE_INSENSITIVITY,
the old name is still available but officially deprecated.
Created and exposed new intermediate function StrtodTrimmed().

2019-05-25:
Fix `0x` for string->double conversion when Hex Floats are allowed.
Avoid integer overflow when exponents for hex floats were too big.
Update version number.

2019-04-22:
Fixed warning in gcc4.9. Thanks to Scott McCaskill
(https://github.com/usefulcat) for the patch.

2019-04-16:
Merged changes to install libraries in the correct place when
using 64-bit libraries.
Contributed by Jason Zaman <jasonzaman@gmail.com> and (independently)
Dan Church (https://github.com/h3xx)

2019-03-11:
Use relative includes in the library. This shouldn't have any visible effect
for consumers of the library.

Update version number.

2019-03-06:
Fix typo in test.
Update version number.

2019-03-03:
Fix separator characters when they they don't fit into 8 bits.
Update version number.

2019-02-16:
Check correctly for _MSC_VER.
Patch by Ben Boeckel

2019-01-17:
Allow the library to be compiled for Emscripten.
Patch by Tim Paine.

2018-09-15:
Update version numbers. This also updates the shared-library version number.

2018-09-09:
Fix bug where large hex literals would lose their minus sign.
Added support for separator characters (which adds a new optional
argument). Thus increasing the version number to 3.1.0
Added support for hexadecimal float literals.
Support for more architectures.

2017-12-06:
Renamed `DISALLOW_COPY_AND_ASSIGN` and `DISALLOW_IMPLICIT_CONSTRUCTORS`
macros to `DC_DISALLOW_COPY_AND_ASSIGN` and
`DC_DISALLOW_IMPLICIT_CONSTRUCTORS` to make it easier to integrate the
library with other libraries that have similar macros.

2017-08-05:
Tagged v3.0.0.
Due to the directory rename switching to a new version number.
The API for the library itself hasn't changed.

2017-03-04:
Avoid negative shift. Fixes #41.

2016-11-17:
Support RISC-V.


2016-09-10:
Add fPIC flag on x86_64 if the compiler supports it. Fixes #34.

2015 and 2016:
Lots of improvements to the build system.

2015:
Warning fixes.

2015-05-19:
Rename 'src' directory to 'double-conversion'.

Expand Down
2 changes: 1 addition & 1 deletion deps/double-conversion/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ all:
scons debug=1

test:
./run_tests --list | tr -d '<' | xargs ./run_tests
./run_tests

.PHONY: test all
Loading

0 comments on commit 2907fde

Please sign in to comment.