mimalloc icon indicating copy to clipboard operation
mimalloc copied to clipboard

build with cxx option fails on android

Open cthulhu-irl opened this issue 1 year ago • 2 comments

After configuring the build by cmake and with MI_USE_CXX=ON option, it fails to build for android with ndk 25.2 (clang 14.0.6) due to a template type deduction on a function call to std::atomic_compare_exchange_strong:

[2/39] Building CXX object CMakeFiles/mimalloc.dir/src/arena.c.o
FAILED: CMakeFiles/mimalloc.dir/src/arena.c.o
C:\devtools\Android\ndk\25.2.9519653\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=aarch64-none-linux-android21 --sysroot=C:/devtools/Android/ndk/25.2.9519653/toolchains/llvm/prebuilt/windows-x86_64/sysroot -DMI_MALLOC_OVERRIDE -DMI_SHARED_LIB -DMI_SHARED_LIB_EXPORT -Dmimalloc_EXPORTS -IC:/playpod/mimalloc/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security   -O3 -DNDEBUG  -fPIC -Wno-deprecated -Wall -Wextra -Wno-unknown-pragmas -fvisibility=hidden -Wpedantic -Wno-static-in-inline -ftls-model=initial-exec -fno-builtin-malloc -std=gnu++17 -MD -MT CMakeFiles/mimalloc.dir/src/arena.c.o -MF CMakeFiles\mimalloc.dir\src\arena.c.o.d -o CMakeFiles/mimalloc.dir/src/arena.c.o -c C:/playpod/mimalloc/src/arena.c
C:/playpod/mimalloc/src/arena.c:523:3: error: no matching function for call to 'atomic_compare_exchange_strong_explicit'
  mi_atomic_casi64_strong_acq_rel(&arena->purge_expire, &expire, 0);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/playpod/mimalloc/include/mimalloc/atomic.h:125:49: note: expanded from macro 'mi_atomic_casi64_strong_acq_rel'
#define mi_atomic_casi64_strong_acq_rel(p,e,d)  mi_atomic_cas_strong_acq_rel(p,e,d)
                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/playpod/mimalloc/include/mimalloc/atomic.h:65:50: note: expanded from macro 'mi_atomic_cas_strong_acq_rel'
#define mi_atomic_cas_strong_acq_rel(p,exp,des)  mi_atomic_cas_strong(p,exp,des,mi_memory_order(acq_rel),mi_memory_order(acquire))
                                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/playpod/mimalloc/include/mimalloc/atomic.h:54:3: note: expanded from macro 'mi_atomic_cas_strong'
  mi_atomic(compare_exchange_strong_explicit)(p,expected,desired,mem_success,mem_fail)
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/playpod/mimalloc/include/mimalloc/atomic.h:24:33: note: expanded from macro 'mi_atomic'
#define  mi_atomic(name)        std::atomic_##name
                                ^~~~~~~~~~~~~~~~~~
C:/devtools/Android/ndk/25.2.9519653/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1/atomic:2043:1: note: candidate template ignored: deduced conflicting types for parameter '_Tp' ('long' vs. 'int')
atomic_compare_exchange_strong_explicit(volatile atomic<_Tp>* __o,
^
C:/devtools/Android/ndk/25.2.9519653/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1/atomic:2054:1: note: candidate template ignored: deduced conflicting types for parameter '_Tp' ('long' vs. 'int')
atomic_compare_exchange_strong_explicit(atomic<_Tp>* __o, _Tp* __e,
^
C:/devtools/Android/ndk/25.2.9519653/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1/memory:5198:1: note: candidate template ignored: could not match 'shared_ptr' against 'atomic'
atomic_compare_exchange_strong_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v,
^
1 error generated.

cthulhu-irl avatar May 26 '23 14:05 cthulhu-irl