Also build a libgf-complete1-sse package, which contains the optimized version of the library.
parent
ba127b4a1d
commit
30528bf580
|
@ -1,3 +1,10 @@
|
||||||
|
gf-complete (1.0.2-3) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Also build a libgf-complete1-sse package, which contains the optimized
|
||||||
|
version of the library.
|
||||||
|
|
||||||
|
-- Thomas Goirand <zigo@debian.org> Fri, 18 Sep 2015 17:48:52 +0200
|
||||||
|
|
||||||
gf-complete (1.0.2-2) unstable; urgency=medium
|
gf-complete (1.0.2-2) unstable; urgency=medium
|
||||||
|
|
||||||
* Team upload.
|
* Team upload.
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include <cpuid.h>
|
||||||
|
|
||||||
|
static inline bool can_sse41(void){
|
||||||
|
int a, b, c, d;
|
||||||
|
__cpuid (1, a, b, c, d);
|
||||||
|
return c & bit_SSE4_1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char** argv){
|
||||||
|
return (int) can_sse41();
|
||||||
|
}
|
|
@ -37,6 +37,9 @@ Architecture: any
|
||||||
Depends: ${misc:Depends},
|
Depends: ${misc:Depends},
|
||||||
${shlibs:Depends},
|
${shlibs:Depends},
|
||||||
Multi-Arch: same
|
Multi-Arch: same
|
||||||
|
Breaks: libgf-complete1-sse
|
||||||
|
Replaces: libgf-complete1-sse
|
||||||
|
Provides: libgf-complete1-sse
|
||||||
Description: Galois Field Arithmetic - shared library
|
Description: Galois Field Arithmetic - shared library
|
||||||
Galois Field arithmetic forms the backbone of erasure-coded storage systems,
|
Galois Field arithmetic forms the backbone of erasure-coded storage systems,
|
||||||
most famously the Reed-Solomon erasure code. A Galois Field is defined over
|
most famously the Reed-Solomon erasure code. A Galois Field is defined over
|
||||||
|
@ -50,6 +53,28 @@ Description: Galois Field Arithmetic - shared library
|
||||||
.
|
.
|
||||||
This package contains the shared library.
|
This package contains the shared library.
|
||||||
|
|
||||||
|
Package: libgf-complete1-sse
|
||||||
|
Architecture: amd64
|
||||||
|
Depends: ${misc:Depends},
|
||||||
|
${shlibs:Depends},
|
||||||
|
Multi-Arch: same
|
||||||
|
Breaks: libgf-complete1
|
||||||
|
Replaces: libgf-complete1
|
||||||
|
Provides: libgf-complete1
|
||||||
|
Description: Galois Field Arithmetic - shared library with SSE support
|
||||||
|
Galois Field arithmetic forms the backbone of erasure-coded storage systems,
|
||||||
|
most famously the Reed-Solomon erasure code. A Galois Field is defined over
|
||||||
|
w-bit words and is termed GF(2w). As such, the elements of a Galois Field are
|
||||||
|
the integers 0, 1, . . ., 2^w − 1. Galois Field arithmetic defines addition
|
||||||
|
and multiplication over these closed sets of integers in such a way that they
|
||||||
|
work as you would hope they would work. Specifically, every number has a
|
||||||
|
unique multiplicative inverse. Moreover, there is a value, typically the value
|
||||||
|
2, which has the property that you can enumerate all of the non-zero elements
|
||||||
|
of the field by taking that value to successively higher powers.
|
||||||
|
.
|
||||||
|
This package contains the shared library, compiled with the SSE instructions
|
||||||
|
support for better optimization.
|
||||||
|
|
||||||
Package: gf-complete-tools
|
Package: gf-complete-tools
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Depends: libgf-complete1 (= ${binary:Version}),
|
Depends: libgf-complete1 (= ${binary:Version}),
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
libgf_complete.so.1 libgf-complete1 #MINVER#
|
||||||
|
MOA_Fill_Random_Region@Base 1.0.2
|
||||||
|
MOA_Random_128@Base 1.0.2
|
||||||
|
MOA_Random_32@Base 1.0.2
|
||||||
|
MOA_Random_64@Base 1.0.2
|
||||||
|
MOA_Random_W@Base 1.0.2
|
||||||
|
MOA_Seed@Base 1.0.2
|
||||||
|
_gf_errno@Base 1.0.2
|
||||||
|
bits@Base 1.0.2
|
||||||
|
bits_56@Base 1.0.2
|
||||||
|
create_gf_from_argv@Base 1.0.2
|
||||||
|
gf_alignment_error@Base 1.0.2
|
||||||
|
gf_bitmatrix_inverse@Base 1.0.2
|
||||||
|
gf_composite_get_default_poly@Base 1.0.2
|
||||||
|
gf_do_final_region_alignment@Base 1.0.2
|
||||||
|
gf_do_initial_region_alignment@Base 1.0.2
|
||||||
|
gf_error@Base 1.0.2
|
||||||
|
gf_error_check@Base 1.0.2
|
||||||
|
gf_free@Base 1.0.2
|
||||||
|
gf_general_add@Base 1.0.2
|
||||||
|
gf_general_are_equal@Base 1.0.2
|
||||||
|
gf_general_divide@Base 1.0.2
|
||||||
|
gf_general_do_region_check@Base 1.0.2
|
||||||
|
gf_general_do_region_multiply@Base 1.0.2
|
||||||
|
gf_general_do_single_timing_test@Base 1.0.2
|
||||||
|
gf_general_inverse@Base 1.0.2
|
||||||
|
gf_general_is_one@Base 1.0.2
|
||||||
|
gf_general_is_zero@Base 1.0.2
|
||||||
|
gf_general_multiply@Base 1.0.2
|
||||||
|
gf_general_s_to_val@Base 1.0.2
|
||||||
|
gf_general_set_one@Base 1.0.2
|
||||||
|
gf_general_set_random@Base 1.0.2
|
||||||
|
gf_general_set_two@Base 1.0.2
|
||||||
|
gf_general_set_up_single_timing_test@Base 1.0.2
|
||||||
|
gf_general_set_zero@Base 1.0.2
|
||||||
|
gf_general_val_to_s@Base 1.0.2
|
||||||
|
gf_init_easy@Base 1.0.2
|
||||||
|
gf_init_hard@Base 1.0.2
|
||||||
|
gf_multby_one@Base 1.0.2
|
||||||
|
gf_multby_zero@Base 1.0.2
|
||||||
|
gf_scratch_size@Base 1.0.2
|
||||||
|
gf_set_region_data@Base 1.0.2
|
||||||
|
gf_size@Base 1.0.2
|
||||||
|
gf_two_byte_region_table_multiply@Base 1.0.2
|
||||||
|
gf_w128_bytwo_b_multiply@Base 1.0.2
|
||||||
|
gf_w128_bytwo_b_multiply_region@Base 1.0.2
|
||||||
|
gf_w128_bytwo_p_multiply@Base 1.0.2
|
||||||
|
gf_w128_clm_multiply@Base 1.0.2
|
||||||
|
gf_w128_divide_from_inverse@Base 1.0.2
|
||||||
|
gf_w128_euclid@Base 1.0.2
|
||||||
|
gf_w128_extract_word@Base 1.0.2
|
||||||
|
gf_w128_group_multiply@Base 1.0.2
|
||||||
|
gf_w128_init@Base 1.0.2
|
||||||
|
gf_w128_inverse_from_divide@Base 1.0.2
|
||||||
|
gf_w128_scratch_size@Base 1.0.2
|
||||||
|
gf_w128_shift_multiply@Base 1.0.2
|
||||||
|
gf_w128_sse_bytwo_b_multiply@Base 1.0.2
|
||||||
|
gf_w128_sse_bytwo_p_multiply@Base 1.0.2
|
||||||
|
gf_w16_get_div_alog_table@Base 1.0.2
|
||||||
|
gf_w16_get_log_table@Base 1.0.2
|
||||||
|
gf_w16_get_mult_alog_table@Base 1.0.2
|
||||||
|
gf_w16_init@Base 1.0.2
|
||||||
|
gf_w16_scratch_size@Base 1.0.2
|
||||||
|
gf_w16_split_8_8_multiply@Base 1.0.2
|
||||||
|
gf_w32_init@Base 1.0.2
|
||||||
|
gf_w32_scratch_size@Base 1.0.2
|
||||||
|
gf_w4_get_div_table@Base 1.0.2
|
||||||
|
gf_w4_get_mult_table@Base 1.0.2
|
||||||
|
gf_w4_init@Base 1.0.2
|
||||||
|
gf_w4_scratch_size@Base 1.0.2
|
||||||
|
gf_w64_bytwo_p_sse_multiply_region@Base 1.0.2
|
||||||
|
gf_w64_clm_multiply_region@Base 1.0.2
|
||||||
|
gf_w64_init@Base 1.0.2
|
||||||
|
gf_w64_scratch_size@Base 1.0.2
|
||||||
|
gf_w64_split_16_64_lazy_multiply_region@Base 1.0.2
|
||||||
|
gf_w64_split_4_64_lazy_multiply_region@Base 1.0.2
|
||||||
|
gf_w64_split_8_64_lazy_multiply_region@Base 1.0.2
|
||||||
|
gf_w8_get_div_table@Base 1.0.2
|
||||||
|
gf_w8_get_mult_table@Base 1.0.2
|
||||||
|
gf_w8_init@Base 1.0.2
|
||||||
|
gf_w8_scratch_size@Base 1.0.2
|
||||||
|
gf_wgen_cauchy_region@Base 1.0.2
|
||||||
|
gf_wgen_extract_word@Base 1.0.2
|
||||||
|
gf_wgen_init@Base 1.0.2
|
||||||
|
gf_wgen_scratch_size@Base 1.0.2
|
|
@ -1 +0,0 @@
|
||||||
do-not-use-sse-ac-ext.patch
|
|
|
@ -1,5 +1,7 @@
|
||||||
#!/usr/bin/make -f
|
#!/usr/bin/make -f
|
||||||
|
|
||||||
|
include /usr/share/dpkg/architecture.mk
|
||||||
|
|
||||||
UPSTREAM_GIT ?= https://bitbucket.org/jimplank/gf-complete.git
|
UPSTREAM_GIT ?= https://bitbucket.org/jimplank/gf-complete.git
|
||||||
|
|
||||||
DEBVERS ?= $(shell dpkg-parsechangelog | sed -n -e 's/^Version: //p')
|
DEBVERS ?= $(shell dpkg-parsechangelog | sed -n -e 's/^Version: //p')
|
||||||
|
@ -11,8 +13,54 @@ GIT_TAG ?= $(shell echo '$(VERSION)' | sed -e 's/~/_/')
|
||||||
%:
|
%:
|
||||||
dh $@ --with autoreconf --parallel
|
dh $@ --with autoreconf --parallel
|
||||||
|
|
||||||
|
override_dh_autoreconf:
|
||||||
|
echo "Please don't do anything!"
|
||||||
|
|
||||||
|
override_dh_auto_configure:
|
||||||
|
echo "Please don't do anything!"
|
||||||
|
|
||||||
|
override_dh_auto_install:
|
||||||
|
ifeq ($(DEB_HOST_ARCH_CPU),amd64)
|
||||||
|
set -e ; set -x ; if ! [ -x debian/check_sse ] ; then \
|
||||||
|
gcc debian/check_sse.c -o debian/check_sse ; \
|
||||||
|
fi
|
||||||
|
set -e ; set -x ; if ./debian/check_sse ; then \
|
||||||
|
echo "No SSE support here..." ; \
|
||||||
|
else \
|
||||||
|
dh_autoreconf ; \
|
||||||
|
dh_auto_configure ; \
|
||||||
|
dh_auto_build ; \
|
||||||
|
dh_auto_install ; \
|
||||||
|
dh_autoreconf_clean ; \
|
||||||
|
mv debian/tmp debian/tmp-with-sse ; \
|
||||||
|
fi
|
||||||
|
endif
|
||||||
|
patch -p1 <debian/do-not-use-sse-ac-ext.patch
|
||||||
|
dh_autoreconf
|
||||||
|
dh_auto_configure
|
||||||
|
dh_auto_build
|
||||||
|
dh_auto_install
|
||||||
|
dh_autoreconf_clean
|
||||||
|
patch -p1 -R <debian/do-not-use-sse-ac-ext.patch
|
||||||
|
|
||||||
|
override_dh_auto_clean:
|
||||||
|
dh_auto_clean
|
||||||
|
rm -rf debian/tmp-with-sse debian/check_sse
|
||||||
|
|
||||||
override_dh_install:
|
override_dh_install:
|
||||||
dh_install
|
dh_install
|
||||||
|
ifeq ($(DEB_HOST_ARCH_CPU),amd64)
|
||||||
|
set -e ; set -x ; if ./debian/check_sse ; then \
|
||||||
|
echo "No SSE support here..." ; \
|
||||||
|
else \
|
||||||
|
mkdir -p $(CURDIR)/debian/libgf-complete1-sse/usr/lib ; \
|
||||||
|
mv $(CURDIR)/debian/tmp-with-sse/usr/lib/* $(CURDIR)/debian/libgf-complete1-sse/usr/lib ; \
|
||||||
|
rm $(CURDIR)/debian/libgf-complete1-sse/usr/lib/*/*.so ; \
|
||||||
|
rm $(CURDIR)/debian/libgf-complete1-sse/usr/lib/*/*.a ; \
|
||||||
|
rm $(CURDIR)/debian/libgf-complete1-sse/usr/lib/*/*.la ; \
|
||||||
|
fi
|
||||||
|
endif
|
||||||
|
|
||||||
# NOTE(jamespage): Don't ship example binaries, just the actual tools
|
# NOTE(jamespage): Don't ship example binaries, just the actual tools
|
||||||
rm -rf $(CURDIR)/debian/gf-complete-tools/usr/bin/gf_example*
|
rm -rf $(CURDIR)/debian/gf-complete-tools/usr/bin/gf_example*
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue