1
0
Fork 0
mirror of https://github.com/ultrajson/ultrajson.git synced 2024-05-23 21:36:24 +02:00
ultrajson/deps/double-conversion/SConstruct
Joakim Hamren eb7d894f22 Integrated google's double-conversion lib
To fix issues with floating-point precision we've made use of Google's
double-conversion lib to handle conversions of doubles to and from strings.

In addition to fixing our precision problems this will improve double
encoding by 4-5x. Decoding is however slightly slower according to the
benchmarks - but accurate at least.

This change removes the double_precision encoding option and the
precise_float decoding option.
2017-02-14 12:20:04 +01:00

47 lines
1.6 KiB
Python

# vim:ft=python
import os
double_conversion_sources = ['double-conversion/' + x for x in SConscript('double-conversion/SConscript')]
double_conversion_test_sources = ['test/cctest/' + x for x in SConscript('test/cctest/SConscript')]
DESTDIR = ARGUMENTS.get('DESTDIR', '')
prefix = ARGUMENTS.get('prefix', '/usr/local')
lib = ARGUMENTS.get('libsuffix', 'lib')
libdir = os.path.join(DESTDIR + prefix, lib)
env = Environment(CPPPATH='#', LIBS=['m', 'stdc++'],
CXXFLAGS=ARGUMENTS.get('CXXFLAGS', ''))
debug = ARGUMENTS.get('debug', 0)
optimize = ARGUMENTS.get('optimize', 0)
env.Replace(CXX = ARGUMENTS.get('CXX', 'g++'))
# for shared lib, requires scons 2.3.0
env['SHLIBVERSION'] = '1.0.0'
CCFLAGS = []
if int(debug):
CCFLAGS.append(ARGUMENTS.get('CXXFLAGS', '-g -Wall -Wshadow -Werror'))
if int(optimize):
CCFLAGS.append(ARGUMENTS.get('CXXFLAGS', '-O3'))
env.Append(CCFLAGS = " ".join(CCFLAGS))
double_conversion_shared_objects = [
env.SharedObject(src) for src in double_conversion_sources]
double_conversion_static_objects = [
env.StaticObject(src) for src in double_conversion_sources]
library_name = 'double-conversion'
static_lib = env.StaticLibrary(library_name, double_conversion_static_objects)
static_lib_pic = env.StaticLibrary(library_name + '_pic', double_conversion_shared_objects)
shared_lib = env.SharedLibrary(library_name, double_conversion_shared_objects)
env.Program('run_tests', double_conversion_test_sources, LIBS=[static_lib])
env.InstallVersionedLib(libdir, shared_lib)
env.Install(libdir, static_lib)
env.Install(libdir, static_lib_pic)
env.Alias('install', libdir)