sleef: Build fails on Termux / aarch64

Hi, thank you for this library!

I was looking to see if I could use this library for a project, and wanted to check the performance differences on an aarch64 android device I own. For this, I’m using Termux, and encountered the following errors on make. I think it’s related to linking libm, but not sure where exactly the fix goes, or if there is a non-trivial amount of work required to make this work on Termux; will let you know if I find the fix.

See terminal output of `make`.
[  2%] Built target mkrename_gnuabi
[  3%] Built target sleefgnuabiadvsimddp
[  4%] Built target sleefgnuabiadvsimdsp
[  5%] Built target sleefgnuabi
[  6%] Built target addSuffix
[  7%] Built target mkrename
[  8%] Built target renamedspscalar.h_generated
[  9%] Built target mkdisp
[ 10%] Built target dispscalar.c_generated
[ 14%] Built target headers
[ 15%] Built target dispscalar_obj
[ 16%] Built target renamePURECFMA_SCALAR.h_generated
[ 18%] Built target sleefdetpurecfma_scalar
[ 20%] Built target sleefpurecfma_scalar
[ 22%] Built target sleefscalar
[ 22%] Built target renamePUREC_SCALAR.h_generated
[ 23%] Built target sleefdetpurec_scalar
[ 25%] Built target sleefpurec_scalar
[ 26%] Built target renameADVSIMDNOFMA.h_generated
[ 27%] Built target sleefadvsimdnofma
[ 28%] Built target mkalias
[ 28%] Built target alias_advsimd.h_generated
[ 28%] Built target renameADVSIMD.h_generated
[ 30%] Built target sleefadvsimd
[ 30%] Built target common
[ 32%] Built target sleefdetadvsimdnofma
[ 34%] Built target sleefdetadvsimd
[ 35%] Built target sleef
[ 36%] Built target mkmasked_gnuabi
[ 37%] Linking C executable ../../bin/tester
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/tester.c.o: in function `do_test':
/data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2335: undefined reference to `nextafter'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2335: undefined reference to `nextafter'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2343: undefined reference to `nextafter'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2343: undefined reference to `nextafter'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2351: undefined reference to `nextafter'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/tester.c.o:/data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2351: more undefined references to `nextafter' follow
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/tester.c.o: in function `do_test':
/data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2585: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2586: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2612: undefined reference to `nextafter'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2931: undefined reference to `nextafterf'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2931: undefined reference to `nextafterf'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2935: undefined reference to `nextafterf'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2935: undefined reference to `nextafterf'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2944: undefined reference to `nextafterf'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/tester.c.o:/data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2944: more undefined references to `nextafterf' follow
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/tester.c.o: in function `do_test':
/data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:(.text+0x36e40): undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:3663: undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:(.text+0x36f08): undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:3663: undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:3663: undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/tester.c.o:/data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:(.text+0x37624): more undefined references to `pow' follow
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/tester.c.o: in function `do_test':
/data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4177: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4179: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4187: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4189: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:(.text+0x48b9c): undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4199: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4201: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:(.text+0x48d08): undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4211: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4213: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:(.text+0x4e304): undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4462: undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:(.text+0x4e3d0): undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4462: undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4462: undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/tester.c.o:/data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:(.text+0x4eb04): more undefined references to `pow' follow
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/testerutil.c.o: in function `countULPdp':
/data/data/com.termux/files/home/sleef/src/libm-tester/testerutil.c:175: undefined reference to `frexp'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/testerutil.c:176: undefined reference to `ldexpl'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/testerutil.c:176: undefined reference to `fmaxl'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/testerutil.c.o: in function `countULP2dp':
/data/data/com.termux/files/home/sleef/src/libm-tester/testerutil.c:223: undefined reference to `frexp'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/testerutil.c:224: undefined reference to `ldexpl'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/testerutil.c:224: undefined reference to `fmaxl'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/testerutil.c.o: in function `countULPsp':
/data/data/com.termux/files/home/sleef/src/libm-tester/testerutil.c:256: undefined reference to `frexp'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/testerutil.c.o: in function `countULP2sp':
/data/data/com.termux/files/home/sleef/src/libm-tester/testerutil.c:283: undefined reference to `frexp'
clang-9: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/libm-tester/CMakeFiles/tester.dir/build.make:122: bin/tester] Error 1
make[1]: *** [CMakeFiles/Makefile2:1073: src/libm-tester/CMakeFiles/tester.dir/all] Error 2
make: *** [Makefile:161: all] Error 2
\```

</details>

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 17 (9 by maintainers)

Most upvoted comments

I don’t have a computer that runs Android.

sin scalar : 0.366 sin sleef : 0.175 sinh scalar : 0.367 sinh sleef : 0.116

on ODROID-N2

Hello,

Please check if specifying -DBUILD_TESTS=FALSE as a cmake option works.