There is a bug with linking to
vtkpng after compiling for arm64-v8a with Android NDK 18b. I’m linking against vtk-8.2.0 arm64-v8a with another project that uses NEON and has flags specifying that. The linking error is:
undefined reference to `png_init_filter_functions_neon'
I suggest looking at how OpenCV is handling their 3rd party lib png: requirements:
list(APPEND lib_srcs arm/arm_init.c arm/filter_neon.S arm/filter_neon_intrinsics.c)
add_definitions(-DPNG_ARM_NEON_OPT=0) # NEON assembler is not supported
See repo here
Not sure the VTK way to go about changing
vtkpng to adopt some of these Android specific NEON changes. @ken-martin thoughts?
Just to get my problems sorted out I put
add_definitions(-DPNG_ARM_NEON_OPT=0) at the top
vtkpng/CMakeLists.txt. After doing that and recompiling VTK my linker error with the other project goes away.
We patch our PNG import to disable all optimization bits (our copies tend to be bare-bones and minimal for ease of porting the build system). We have
ThirdParty/png/vtkpng/pngpriv.h:#define PNG_ARM_NEON_OPT 0. Is there a reason this isn’t working for you? It does work on our Android dashboard AFAICT: https://open.cdash.org/buildSummary.php?buildid=5996639
Oh, I see the
8.2.0 now. It is certainly possible that such a thing is missing on the
It’s also not a build problem, it builds just fine on my machine as well. It only presents itself when being linked against by another Android project.
I’ll see about updating my Android example to show you.
I cannot build vtk on the jetson nano for the issue. VTK-8.2.0-release
Any way to repair it?
This was fixed on
master, but I don’t think it made it onto the 8.2 release branch. Here’s the diff you need: https://gitlab.kitware.com/vtk/vtk/-/merge_requests/5603/diffs