From 2472ab41e519afc916a463def2ea35085aaa03ca Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Sat, 16 Mar 2019 00:17:41 -0400
Subject: [PATCH 2/8] Unbundle blosc.
Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
---
setup.py | 54 +++++++++++-------------------------------------------
1 file changed, 11 insertions(+), 43 deletions(-)
diff --git a/setup.py b/setup.py
index 448031e..65b9f42 100644
--- a/setup.py
+++ b/setup.py
@@ -2,6 +2,7 @@
from __future__ import absolute_import, print_function, division
from glob import glob
import os
+import subprocess
from setuptools import setup, Extension
import cpuinfo
import sys
@@ -63,6 +64,12 @@ def error(*msg):
print('[numcodecs]', *msg, **kwargs)
+def pkgconfig(name):
+ cflags = os.fsdecode(subprocess.check_output(['pkg-config', '--cflags', name]))
+ libs = os.fsdecode(subprocess.check_output(['pkg-config', '--libs', name]))
+ return cflags.split(), libs.split()
+
+
def blosc_extension():
info('setting up Blosc extension')
@@ -70,47 +77,8 @@ def blosc_extension():
define_macros = []
# setup blosc sources
- blosc_sources = [f for f in glob('c-blosc/blosc/*.c')
- if 'avx2' not in f and 'sse2' not in f]
- include_dirs = [os.path.join('c-blosc', 'blosc')]
-
- # add internal complibs
- blosc_sources += glob('c-blosc/internal-complibs/lz4*/*.c')
- blosc_sources += glob('c-blosc/internal-complibs/snappy*/*.cc')
- blosc_sources += glob('c-blosc/internal-complibs/zlib*/*.c')
- blosc_sources += glob('c-blosc/internal-complibs/zstd*/common/*.c')
- blosc_sources += glob('c-blosc/internal-complibs/zstd*/compress/*.c')
- blosc_sources += glob('c-blosc/internal-complibs/zstd*/decompress/*.c')
- blosc_sources += glob('c-blosc/internal-complibs/zstd*/dictBuilder/*.c')
- include_dirs += [d for d in glob('c-blosc/internal-complibs/*')
- if os.path.isdir(d)]
- include_dirs += [d for d in glob('c-blosc/internal-complibs/*/*')
- if os.path.isdir(d)]
- define_macros += [('HAVE_LZ4', 1),
- ('HAVE_SNAPPY', 1),
- ('HAVE_ZLIB', 1),
- ('HAVE_ZSTD', 1)]
- # define_macros += [('CYTHON_TRACE', '1')]
-
- # SSE2
- if have_sse2 and not disable_sse2:
- info('compiling Blosc extension with SSE2 support')
- extra_compile_args.append('-DSHUFFLE_SSE2_ENABLED')
- blosc_sources += [f for f in glob('c-blosc/blosc/*.c') if 'sse2' in f]
- if os.name == 'nt':
- define_macros += [('__SSE2__', 1)]
- else:
- info('compiling Blosc extension without SSE2 support')
-
- # AVX2
- if have_avx2 and not disable_avx2:
- info('compiling Blosc extension with AVX2 support')
- extra_compile_args.append('-DSHUFFLE_AVX2_ENABLED')
- blosc_sources += [f for f in glob('c-blosc/blosc/*.c') if 'avx2' in f]
- if os.name == 'nt':
- define_macros += [('__AVX2__', 1)]
- else:
- info('compiling Blosc extension without AVX2 support')
+ blosc = pkgconfig('blosc')
+ extra_compile_args += blosc[0]
if have_cython:
sources = ['numcodecs/blosc.pyx']
@@ -120,10 +88,10 @@ def blosc_extension():
# define extension module
extensions = [
Extension('numcodecs.blosc',
- sources=sources + blosc_sources,
- include_dirs=include_dirs,
+ sources=sources,
define_macros=define_macros,
extra_compile_args=extra_compile_args,
+ extra_link_args=blosc[1],
),
]
--
2.20.1