Skip to content

[BUG] NDK-r25 CMAKE_BUILD_TYPE=MinSizeRel(-Os) CMAKE_BUILD_TYPE=Release(null), NDK-r22b get MinSizeRel(-Os) Release(-O2) #1740

@DaydreamCoding

Description

@DaydreamCoding

Description

The NDK r25 compile with CMAKE_BUILD_TYPE=Release missing default compiler optimizations options.

R22b

  • MinSizeRel -Os -DNDEBUG -fPIE
  • Release -O2 -DNDEBUG -fPIE

R25, R24, R23c

  • MinSizeRel -Os -DNDEBUG -fPIE
  • Release -DNDEBUG -fPIE

Example: project https://github.com/DaydreamCoding/neon-intrinsics-test/tree/1c123bc9391eec4f9c8305d17f9d24e69d70f237

  • R22b CMAKE_BUILD_TYPE=Release
    export ANDROID_NDK=$ANDROID_NDK_R22b
    ./build/android_build_Release.sh
    cat build/libsample/build/android/arm64-v8a/test/CMakeFiles/test.dir/flags.make
    CXX_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -DNDEBUG -fPIE

  • R22b CMAKE_BUILD_TYPE=MinSizeRel
    export ANDROID_NDK=$ANDROID_NDK_R22b
    ./build/android_build_MinSizeRel.sh
    cat build/libsample/build/android/arm64-v8a/test/CMakeFiles/test.dir/flags.make
    CXX_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -Os -DNDEBUG -fPIE

  • R25 CMAKE_BUILD_TYPE=Release
    export ANDROID_NDK=$ANDROID_NDK_R25
    ./build/android_build_Release.sh
    cat build/libsample/build/android/arm64-v8a/test/CMakeFiles/test.dir/flags.make
    CXX_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DNDEBUG -fPIE

  • R25 CMAKE_BUILD_TYPE=MinSizeRel
    export ANDROID_NDK=$ANDROID_NDK_R25
    ./build/android_build_MinSizeRel.sh
    cat build/libsample/build/android/arm64-v8a/test/CMakeFiles/test.dir/flags.make
    CXX_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -Os -DNDEBUG -fPIE

This is very confusing behavior, R22b Release and MinSizeRel both have default compilation optimizations, R25 MinSizeRel does and Release does not

cmake --version
cmake version 3.23.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

Associated issue
#1693
#1607

Affected versions

r25

Canary version

No response

Host OS

Mac

Host OS version

macOS 12.4

Affected ABIs

arm64-v8a

Build system

CMake

Other build system

No response

minSdkVersion

21

Device API level

No response

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions