Closed MCredstoner2004 closed 2 years ago
Thanks for the report!
I think the solution should be as simple as checking for either the mingw specific macro MINGW32 or for windows altogether with _WIN32.
Hmm, checking for __MINGW32__
is probably too weak, since the problem will probably also occur when compiling with MSVC, correct?
On the other hand, I know that https://gitlab.mpcdf.mpg.de/mtr/ducc compiles fine with MSVC, even though I have the same macros in src/ducc0/infra/aligned_array.h
. Strange...
Rather than adding more guesswork to the code, would it be an acceptable solution for you if I introduced a macro called POCKETFFT_USE_PORTABLE_ALLOC
that switches to the portable version unconditionally?
Hmm, checking for
__MINGW32__
is probably too weak, since the problem will probably also occur when compiling with MSVC, correct?On the other hand, I know that https://gitlab.mpcdf.mpg.de/mtr/ducc compiles fine with MSVC, even though I have the same macros in
src/ducc0/infra/aligned_array.h
. Strange...
Ah, that's because MSVC doesn't define the correct macros, at least according to this so checking for MinGW should be enough
Rather than adding more guesswork to the code, would it be an acceptable solution for you if I introduced a macro called
POCKETFFT_USE_PORTABLE_ALLOC
that switches to the portable version unconditionally?
However, this is also acceptable and I could add the neccessary logic during the configure step
Ah, that's because MSVC doesn't define the correct macros, at least according to this so checking for MinGW should be enough
Oh wow, thanks for pointing that out! (I never have direct contact with the compiler, I just see whether CI succeeds or fails, so I never made detailed experiments.)
In this case I think it's fine to try the MINGW version.
So we should replace
#if __cplusplus >= 201703L
with
#if (__cplusplus >= 201703L) && (!defined(__MINGW32__))
correct?
I'm working on a project that uses C++20 features and uses this library, I primarily develop under linux but like testing windows support from time to time. When trying to crosscompile for windows using x86_64-w64-mingw32, I get the following error (even when compiling the example):
After looking into it, this seems to be due to the fact that windows doesn't support said function, despite it being part of the C++17 standard (as detailed here). So simply checking for
__cplusplus >= 201703L
isn't enough for guaranteeing the existence of said function. I also tested manually forcing the use of the portable version of the function and both the example and my project worked flawlessly under windows. I think the solution should be as simple as checking for either the mingw specific macro__MINGW32__
or for windows altogether with_WIN32
.