diff --git a/cmake/ConfigOptions.cmake b/cmake/ConfigOptions.cmake index 0f63c742c..c922d2f78 100644 --- a/cmake/ConfigOptions.cmake +++ b/cmake/ConfigOptions.cmake @@ -17,10 +17,18 @@ else() option(WITH_SSE2 "Enable SSE2 optimization." OFF) endif() -if((TARGET_ARCH MATCHES "ARM") AND (NOT DEFINED WITH_NEON)) - option(WITH_NEON "Enable NEON optimization." ON) -else() - option(WITH_NEON "Enable NEON optimization." OFF) +if(TARGET_ARCH MATCHES "ARM") + if (NOT DEFINED WITH_NEON) + option(WITH_NEON "Enable NEON optimization." ON) + else() + option(WITH_NEON "Enable NEON optimization." OFF) + endif() + if (NOT DEFINED ARM_FP_ABI) + set(ARM_FP_ABI "softfp" CACHE STRING "Floating point ABI to use on arm") + else() + set(ARM_FP_ABI ${ARM_FP_API} CACHE STRING "Floating point ABI to use on arm") + endif() + mark_as_advanced(ARM_FP_ABI) endif() option(WITH_JPEG "Use JPEG decoding." OFF) diff --git a/libfreerdp/codec/CMakeLists.txt b/libfreerdp/codec/CMakeLists.txt index 3e7717977..f3a64f20d 100644 --- a/libfreerdp/codec/CMakeLists.txt +++ b/libfreerdp/codec/CMakeLists.txt @@ -76,7 +76,7 @@ if(WITH_NEON) ${ANDROID_CPU_FEATURES_PATH}/cpu-features.h) endif() set(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${${MODULE_PREFIX}_NEON_SRCS}) - set_source_files_properties(${${MODULE_PREFIX}_NEON_SRCS} PROPERTIES COMPILE_FLAGS "-mfpu=neon -mfloat-abi=softfp -Wno-unused-variable") + set_source_files_properties(${${MODULE_PREFIX}_NEON_SRCS} PROPERTIES COMPILE_FLAGS "-mfpu=neon -mfloat-abi=${ARM_FP_ABI} -Wno-unused-variable") endif() if(WITH_JPEG) diff --git a/libfreerdp/primitives/CMakeLists.txt b/libfreerdp/primitives/CMakeLists.txt index 4cbae2717..01dce882b 100644 --- a/libfreerdp/primitives/CMakeLists.txt +++ b/libfreerdp/primitives/CMakeLists.txt @@ -49,7 +49,7 @@ if(WITH_SSE2) endif() elseif(WITH_NEON) if(CMAKE_COMPILER_IS_GNUCC) - set(OPTIMIZATION "${OPTIMIZATION} -mfpu=neon -mfloat-abi=softfp") + set(OPTIMIZATION "${OPTIMIZATION} -mfpu=neon -mfloat-abi=${ARM_FP_ABI}") endif() # TODO: Add MSVC equivalent endif() diff --git a/libfreerdp/primitives/test/CMakeLists.txt b/libfreerdp/primitives/test/CMakeLists.txt index 49e1f2d3a..a39ab86bd 100644 --- a/libfreerdp/primitives/test/CMakeLists.txt +++ b/libfreerdp/primitives/test/CMakeLists.txt @@ -85,7 +85,7 @@ if(WITH_SSE2) endif() elseif(WITH_NEON) if(CMAKE_COMPILER_IS_GNUCC) - set(OPTIMZATION "${OPTFLAGS} -mfpu=neon -mfloat-abi=softfp -O2") + set(OPTIMZATION "${OPTFLAGS} -mfpu=neon -mfloat-abi=${ARM_FP_ABI} -O2") endif() # TODO: Add MSVC equivalent endif()