+import os
+
double_conversion_sources = ['src/' + x for x in SConscript('src/SConscript')]
double_conversion_test_sources = ['test/cctest/' + x for x in SConscript('test/cctest/SConscript')]
test = double_conversion_sources + double_conversion_test_sources
print(test)
+
+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='#/src')
debug = ARGUMENTS.get('debug', 0)
optimize = ARGUMENTS.get('optimize', 0)
env.Replace(CXX = ARGUMENTS.get('CXX', 'g++'))
+CCFLAGS = ['-fPIC']
if int(debug):
- env.Append(CCFLAGS = '-g -Wall -Werror')
+ CCFLAGS.append(ARGUMENTS.get('CXXFLAGS', '-g -Wall -Werror'))
if int(optimize):
- env.Append(CCFLAGS = ARGUMENTS.get('CXXFLAGS', '-O3'))
+ CCFLAGS.append(ARGUMENTS.get('CXXFLAGS', '-O3'))
+
+env.Append(CCFLAGS = " ".join(CCFLAGS))
+
print double_conversion_sources
print double_conversion_test_sources
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)
-env.StaticLibrary(library_name + '_pic', double_conversion_shared_objects)
+static_lib_pic = env.StaticLibrary(library_name + '_pic', double_conversion_shared_objects)
+shared_lib = env.SharedLibrary(library_name, double_conversion_sources)
+
env.Program('run_tests', double_conversion_test_sources, LIBS=[static_lib])
+
+env.Install(libdir, shared_lib)
+env.Install(libdir, static_lib)
+env.Install(libdir, static_lib_pic)
+
+env.Alias('install', libdir)
+#
+# TODO
+# - versioning in shared lib
+
+# Conditional build:
+%bcond_without static_libs # don't build static libraries
+
Summary: Library providing binary-decimal and decimal-binary routines for IEEE doubles
Name: double-conversion
Version: 1.1.1
%build
%scons \
- optimize=1 \
CXX="%{__cxx}"
CXXFLAGS="%{__cxx}"
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT{%{_libdir},%{_includedir}/%{name}}
-cp -p libdouble_conversion.a libdouble_conversion_pic.a $RPM_BUILD_ROOT%{_libdir}
+%scons install \
+ DESTDIR=$RPM_BUILD_ROOT \
cp -p src/double-conversion.h $RPM_BUILD_ROOT%{_includedir}/%{name}
cp -p src/bignum.h $RPM_BUILD_ROOT%{_includedir}/%{name}
%clean
%{__rm} -rf $RPM_BUILD_ROOT
+%post -p /sbin/ldconfig
+%postun -p /sbin/ldconfig
+
%files
%defattr(644,root,root,755)
%doc LICENSE README AUTHORS
+%{_libdir}/libdouble_conversion.so
%files devel
%defattr(644,root,root,755)
+%{_includedir}/%{name}
+
+%if %{with static_libs}
+%files static
+%defattr(644,root,root,755)
%{_libdir}/libdouble_conversion.a
%{_libdir}/libdouble_conversion_pic.a
-%{_includedir}/%{name}
+%endif