Replace armeabi-v7a-hard in Android build
That ABI is no longer supported https://android.googlesource.com/platform/ndk/+/353e653824b79c43b948429870d0abeedebde386/docs/HardFloatAbi.md
This issue made my Android build fail. Though I'm not sure if it's reproducible consistently or if there is another setting that triggers this.
$ ./fips config android-make-debug
=== dependency: 'oryol':
dir '/home/kkim/fips-projects/oryol' exists
=== dependency: 'fips-unittestpp':
dir '/home/kkim/fips-projects/fips-unittestpp' exists
=== dependency: 'fips-remotery':
dir '/home/kkim/fips-projects/fips-remotery' exists
=== dependency: 'fips-glm':
dir '/home/kkim/fips-projects/fips-glm' exists
=== dependency: 'fips-glfw':
dir '/home/kkim/fips-projects/fips-glfw' exists
=== dependency: 'gliml':
dir '/home/kkim/fips-projects/gliml' exists
=== dependency: 'fips-zlib':
dir '/home/kkim/fips-projects/fips-zlib' exists
=== dependency: 'fips-vld':
dir '/home/kkim/fips-projects/fips-vld' exists
=== dependency: 'fips-libcurl':
dir '/home/kkim/fips-projects/fips-libcurl' exists
=== configuring: android-make-debug
=== generating: android-make-debug
Using Toolchain File: /home/kkim/fips-projects/fips/cmake-toolchains/android.toolchain.cmake
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=/home/kkim/fips-projects/fips/cmake-toolchains/android.toolchain.cmake -DFIPS_CONFIG=android-make-debug -DANDROID_API="android-19" -DANDROID_CPU="arm" -DFIPS_USE_CCACHE=OFF -DFIPS_AUTO_IMPORT=ON -B/home/kkim/fips-projects/fips-build/m19g/android-make-debug -H/home/kkim/fips-projects/m19g
-- The C compiler identification is GNU 4.8.0
-- The CXX compiler identification is GNU 4.8.0
-- Check for working C compiler: /home/kkim/fips-projects/fips-sdks/linux/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
-- Check for working C compiler: /home/kkim/fips-projects/fips-sdks/linux/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc -- broken
CMake Error at /usr/share/cmake-3.5/Modules/CMakeTestCCompiler.cmake:61 (message):
The C compiler
"/home/kkim/fips-projects/fips-sdks/linux/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc"
is not able to compile a simple test program.
It fails with the following output:
Change Dir: /home/kkim/fips-projects/fips-build/m19g/android-make-debug/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/make" "cmTC_847ba/fast"
/usr/bin/make -f CMakeFiles/cmTC_847ba.dir/build.make
CMakeFiles/cmTC_847ba.dir/build
make[1]: Entering directory
'/home/kkim/fips-projects/fips-build/m19g/android-make-debug/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_847ba.dir/testCCompiler.c.o
/home/kkim/fips-projects/fips-sdks/linux/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard -mthumb -mhard-float
-D_NDK_MATH_NO_SOFTFP=1
--sysroot=/home/kkim/fips-projects/fips-sdks/linux/android-ndk-r9d/platforms/android-19/arch-arm
-fPIC -fno-strict-aliasing -ffunction-sections -funwind-tables
-fstack-protector -no-canonical-prefixes -DANDROID -Wa,--noexecstack
-Wformat -Werror=format-security -Wall -Wno-multichar -Wextra
-Wno-unused-parameter -Wno-unknown-pragmas -Wno-ignored-qualifiers
-Wno-long-long
-I/home/kkim/fips-projects/fips-sdks/linux/android-ndk-r9d/android-19/arch-arm/usr/include
-O0 -fno-omit-frame-pointer -g -D_DEBUG_ -D_DEBUG -DFIPS_DEBUG=1 -o
CMakeFiles/cmTC_847ba.dir/testCCompiler.c.o -c
/home/kkim/fips-projects/fips-build/m19g/android-make-debug/CMakeFiles/CMakeTmp/testCCompiler.c
Linking C executable cmTC_847ba
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_847ba.dir/link.txt
--verbose=1
/home/kkim/fips-projects/fips-sdks/linux/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard -mthumb -mhard-float
-D_NDK_MATH_NO_SOFTFP=1
--sysroot=/home/kkim/fips-projects/fips-sdks/linux/android-ndk-r9d/platforms/android-19/arch-arm
-fPIC -fno-strict-aliasing -ffunction-sections -funwind-tables
-fstack-protector -no-canonical-prefixes -DANDROID -Wa,--noexecstack
-Wformat -Werror=format-security -Wall -Wno-multichar -Wextra
-Wno-unused-parameter -Wno-unknown-pragmas -Wno-ignored-qualifiers
-Wno-long-long
-I/home/kkim/fips-projects/fips-sdks/linux/android-ndk-r9d/android-19/arch-arm/usr/include
-O0 -fno-omit-frame-pointer -g -D_DEBUG_ -D_DEBUG -DFIPS_DEBUG=1
CMakeFiles/cmTC_847ba.dir/testCCompiler.c.o -o cmTC_847ba -rdynamic
-landroid -llog -lc -l -lgcc
/home/kkim/fips-projects/fips-sdks/linux/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld:
error: cannot find -l-lgcc
/home/kkim/fips-projects/fips-sdks/linux/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld:
error: CMakeFiles/cmTC_847ba.dir/testCCompiler.c.o uses VFP register
arguments, output does not
/home/kkim/fips-projects/fips-sdks/linux/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld:
error:
/home/kkim/fips-projects/fips-sdks/linux/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/armv7-a/thumb/hard/libgcc.a(unwind-arm.o)
uses VFP register arguments, output does not
/home/kkim/fips-projects/fips-sdks/linux/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld:
error:
/home/kkim/fips-projects/fips-sdks/linux/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/armv7-a/thumb/hard/libgcc.a(pr-support.o)
uses VFP register arguments, output does not
collect2: error: ld returned 1 exit status
CMakeFiles/cmTC_847ba.dir/build.make:97: recipe for target 'cmTC_847ba'
failed
make[1]: *** [cmTC_847ba] Error 1
make[1]: Leaving directory
'/home/kkim/fips-projects/fips-build/m19g/android-make-debug/CMakeFiles/CMakeTmp'
Makefile:126: recipe for target 'cmTC_847ba/fast' failed
make: *** [cmTC_847ba/fast] Error 2
CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt
-- Configuring incomplete, errors occurred!
See also "/home/kkim/fips-projects/fips-build/m19g/android-make-debug/CMakeFiles/CMakeOutput.log".
See also "/home/kkim/fips-projects/fips-build/m19g/android-make-debug/CMakeFiles/CMakeError.log".
[ERROR] Failed to generate 'android-make-debug' of project 'm19g'
Can you try the following in the Oryol directory?
> ./fips clean
> ./fips set config android-make-debug
> ./fips gen
> ./fips build
This worked for me last time I tested (after I merging the new shader-pipeline stuff). If this works it might be a problem of ./fips config android-make-debug. Even if it works it makes sense of course to remove the Hard Float ABI (just as the text you linked says, I misunderstood its purpose, and assumed that this is the only way to get floating point instructions).
Hmmm just tried and worked for oryol and also my test oryol app project, and it compiled successfully. I don't know what is the actual difference yet.
Just to make sure, can you also try this:
> ./fips clean all
> ./fips config android-make-debug
This works for me (on OSX), but I remember having seen those compiler-check errors in the past too (it's basically cmake checking if the compiler works, and I'm not sure what compiler options cmake uses for this test).
Oh, and what cmake version are you running? (I'm on 3.8.1).
./fips clean all ./fips config android-make-debug
After the above, I got the same compiler error. Now, even if I do the following, I get the same error.
./fips clean ./fips set config android-make-debug ./fips gen
The cmake version is 3.5.1.
I guess my previous successful compile with my temporary workaround #150 somehow affected the compilation before ./fips clean all
Hmm that's very strange, I cannot reproduce this. Here's what I did now:
- delete all Android SDK stuff from fips-sdks
- install new Android SDK with
./fips setup android - from the Oryol directory,
./fips clean all, and./fips config android-make-debug
No problems, may be it's the installed cmake version?
Here's the console output I'm getting:
~/p/oryol ❯❯❯ ./fips config android-make-debug
=== dependency: 'fips-unittestpp':
dir '/Users/floh/projects/fips-unittestpp' exists
=== dependency: 'fips-remotery':
dir '/Users/floh/projects/fips-remotery' exists
=== dependency: 'fips-glm':
dir '/Users/floh/projects/fips-glm' exists
=== dependency: 'fips-glfw':
dir '/Users/floh/projects/fips-glfw' exists
=== dependency: 'gliml':
dir '/Users/floh/projects/gliml' exists
=== dependency: 'fips-zlib':
dir '/Users/floh/projects/fips-zlib' exists
=== dependency: 'fips-vld':
dir '/Users/floh/projects/fips-vld' exists
=== dependency: 'fips-libcurl':
dir '/Users/floh/projects/fips-libcurl' exists
=== configuring: android-make-debug
=== generating: android-make-debug
Using Toolchain File: /Users/floh/projects/fips/cmake-toolchains/android.toolchain.cmake
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=/Users/floh/projects/fips/cmake-toolchains/android.toolchain.cmake -DFIPS_CONFIG=android-make-debug -DANDROID_API="android-19" -DANDROID_CPU="arm" -DFIPS_USE_CCACHE=OFF -DFIPS_AUTO_IMPORT=ON -B/Users/floh/projects/fips-build/oryol/android-make-debug -H/Users/floh/projects/oryol
-- The C compiler identification is GNU 4.8.0
-- The CXX compiler identification is GNU 4.8.0
-- Check for working C compiler: /Users/floh/projects/fips-sdks/osx/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc
-- Check for working C compiler: /Users/floh/projects/fips-sdks/osx/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Users/floh/projects/fips-sdks/osx/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++
-- Check for working CXX compiler: /Users/floh/projects/fips-sdks/osx/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
=== fips_setup(PROJECT oryol)
CMAKE_BUILD_TYPE: Debug
FIPS_ROOT_DIR: /Users/floh/projects/fips
FIPS_PROJECT_DIR: /Users/floh/projects/oryol
FIPS_BUILD_DIR: /Users/floh/projects/fips-build
FIPS_DEPLOY_DIR: /Users/floh/projects/fips-deploy
FIPS_AUTO_IMPORT: ON
Host system: OSX
CMAKE_CXX_COMPILER_ID: GNU
Detected C++ Compiler: GCC (FIPS_GCC)
FIPS_CONFIG: android-make-debug
FIPS_PROJECT_BUILD_DIR: /Users/floh/projects/fips-build/oryol/android-make-debug
FIPS_PROJECT_DEPLOY_DIR: /Users/floh/projects/fips-deploy/oryol/android-make-debug
FIPS_PLATFORM: ANDROID
FIPS_PLATFORM_NAME: android
=> create Android SDK project: Clear
=> create Android SDK project: Triangle
=> create Android SDK project: Quad
=> create Android SDK project: Shapes
=> create Android SDK project: PackedNormals
=> create Android SDK project: PrimitiveTypes
=> create Android SDK project: BlendTest
=> create Android SDK project: SeparateBuffers
=> create Android SDK project: SimpleRenderTarget
=> create Android SDK project: MultipleRenderTarget
=> create Android SDK project: RenderToCubeMap
=> create Android SDK project: InfiniteSpheres
=> create Android SDK project: TextureFloat
=> create Android SDK project: DrawCallPerf
=> create Android SDK project: Instancing
=> create Android SDK project: GPUParticles
=> create Android SDK project: FullscreenQuad
=> create Android SDK project: VertexTexture
=> create Android SDK project: VolumeTexture
=> create Android SDK project: ArrayTexture
=> create Android SDK project: DDSTextureLoading
=> create Android SDK project: DDSCubeMap
=> create Android SDK project: DebugText
=> create Android SDK project: TestInput
=> create Android SDK project: GamepadExplorer
=> create Android SDK project: NativeTexture
=> create Android SDK project: ResourceStress
=> create Android SDK project: CoreHello
=> create Android SDK project: Sensors
=> create Android SDK project: IOQueueSample
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/floh/projects/fips-build/oryol/android-make-debug