From 4d87ca943d8ad3abafebd0c48a88db6425a31a5b Mon Sep 17 00:00:00 2001 From: "Bell, Peter (peterbell10@live.co.uk)" Date: Fri, 9 Aug 2019 09:11:10 +0200 Subject: [PATCH] Fix windows build --- pocketfft_hdronly.h | 21 ++++++++++++--------- setup.py | 3 +++ 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/pocketfft_hdronly.h b/pocketfft_hdronly.h index 6c549de..87c3186 100644 --- a/pocketfft_hdronly.h +++ b/pocketfft_hdronly.h @@ -2990,8 +2990,10 @@ class rev_iter size_t remaining() const { return rem; } }; -#ifndef POCKETFFT_NO_VECTORS template struct VTYPE {}; +template using vtype_t = typename VTYPE::type; + +#ifndef POCKETFFT_NO_VECTORS template<> struct VTYPE { using type = float __attribute__ ((vector_size (VLEN::val*sizeof(float)))); @@ -3004,8 +3006,6 @@ template<> struct VTYPE { using type = long double __attribute__ ((vector_size (VLEN::val*sizeof(long double)))); }; - -template using vtype_t = typename VTYPE::type; #endif template arr alloc_tmp(const shape_t &shape, @@ -3095,13 +3095,14 @@ POCKETFFT_NOINLINE void general_nd(const cndarr &in, ndarr &out, for (size_t iax=0; iax::val; size_t len=in.shape(axes[iax]); if ((!plan) || (len!=plan->length())) plan = get_plan(len); - threading::thread_map(util::thread_count(nthreads, in.shape(), axes[iax], vlen), + threading::thread_map( + util::thread_count(nthreads, in.shape(), axes[iax], VLEN::val), [&] { + constexpr auto vlen = VLEN::val; auto storage = alloc_tmp(in.shape(), len, sizeof(T)); const auto &tin(iax==0? in : out); multi_iter it(tin, out, axes[iax]); @@ -3204,10 +3205,11 @@ template POCKETFFT_NOINLINE void general_r2c( size_t nthreads) { auto plan = get_plan>(in.shape(axis)); - constexpr auto vlen = VLEN::val; size_t len=in.shape(axis); - threading::thread_map(util::thread_count(nthreads, in.shape(), axis, vlen), + threading::thread_map( + util::thread_count(nthreads, in.shape(), axis, VLEN::val), [&] { + constexpr auto vlen = VLEN::val; auto storage = alloc_tmp(in.shape(), len, sizeof(T)); multi_iter it(in, out, axis); #ifndef POCKETFFT_NO_VECTORS @@ -3258,10 +3260,11 @@ template POCKETFFT_NOINLINE void general_c2r( size_t nthreads) { auto plan = get_plan>(out.shape(axis)); - constexpr auto vlen = VLEN::val; size_t len=out.shape(axis); - threading::thread_map(util::thread_count(nthreads, in.shape(), axis, vlen), + threading::thread_map( + util::thread_count(nthreads, in.shape(), axis, VLEN::val), [&] { + constexpr auto vlen = VLEN::val; auto storage = alloc_tmp(out.shape(), len, sizeof(T)); multi_iter it(in, out, axis); #ifndef POCKETFFT_NO_VECTORS diff --git a/setup.py b/setup.py index e85518b..cd8c797 100644 --- a/setup.py +++ b/setup.py @@ -23,6 +23,9 @@ if sys.platform == 'darwin': vars = distutils.sysconfig.get_config_vars() vars['LDSHARED'] = vars['LDSHARED'].replace('-bundle', '') python_module_link_args += ['-bundle'] +elif sys.platform == 'win32': + define_macros = [] + extra_compile_args = ['/Ox', '/EHsc'] else: extra_compile_args += ['-Wfatal-errors', '-Wfloat-conversion', '-Wsign-conversion', '-Wconversion' ,'-W', '-Wall', '-Wstrict-aliasing=2', '-Wwrite-strings', '-Wredundant-decls', '-Woverloaded-virtual', '-Wcast-qual', '-Wcast-align', '-Wpointer-arith'] python_module_link_args += ['-march=native', '-Wl,-rpath,$ORIGIN'] -- GitLab