From d1855e020d16fc1161bd0c21be7f22cf4e286a80 Mon Sep 17 00:00:00 2001 From: Herman Chen Date: Wed, 22 Oct 2025 09:51:00 +0800 Subject: [PATCH] fix[cmake]: Fix libm / libmvec compile error Signed-off-by: Herman Chen Change-Id: I431aa784db20494a4df89fae366ccd428dafa7d5 --- CMakeLists.txt | 30 +++++++++--------------------- mpp/CMakeLists.txt | 2 +- osal/CMakeLists.txt | 4 ++-- 3 files changed, 12 insertions(+), 24 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 50b2716d..702dd091 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -120,31 +120,10 @@ endif(UNIX) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") set(CLANG true) endif() -if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") - set(INTEL_CXX true) -endif() if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") set(GCC true) endif() -if(INTEL_CXX AND UNIX) - # treat icpc roughly like gcc - set(GCC true) - add_definitions(-Wall -Wextra -Wshadow) -elseif(CLANG) - # treat clang roughly like gcc - set(GCC true) - add_definitions(-Wall -Wextra -Wshadow -ffast-math) -elseif(CMAKE_COMPILER_IS_GNUCXX) - add_definitions(-Wall -Wextra -Wshadow -ffast-math) - check_cxx_compiler_flag(-Wno-narrowing GCC_HAS_NO_NARROWING) - check_cxx_compiler_flag(-mstackrealign GCC_HAS_STACK_REALIGN) - if (GCC_HAS_STACK_REALIGN) - add_definitions(-mstackrealign) - endif() - execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) -endif() - if(GCC) if(ARM) if(ARMEABI_V6) @@ -184,6 +163,15 @@ if(GCC) # save intermediate files # add_definitions(-save-temps) + # check library mvec + find_library(LMVEC_LIB mvec) + if(LMVEC_LIB) + set(LIBM mvec m) + else() + set(LIBM m) + add_definitions(-fno-builtin-pow) + endif() + # for libary linking set(BEGIN_WHOLE_ARCHIVE -Wl,--whole-archive) set(END_WHOLE_ARCHIVE -Wl,--no-whole-archive) diff --git a/mpp/CMakeLists.txt b/mpp/CMakeLists.txt index 4b43588a..8e9c07e0 100644 --- a/mpp/CMakeLists.txt +++ b/mpp/CMakeLists.txt @@ -63,7 +63,7 @@ endif() set_target_properties(${MPP_SHARED} PROPERTIES FOLDER "mpp") set_target_properties(${MPP_SHARED} PROPERTIES CLEAN_DIRECT_OUTPUT 1) target_link_libraries(${MPP_SHARED} mpp_codec mpp_hal mpp_vproc kmpp - ${BEGIN_WHOLE_ARCHIVE} mpp_base kmpp_base osal ${END_WHOLE_ARCHIVE} m) + ${BEGIN_WHOLE_ARCHIVE} mpp_base kmpp_base osal ${END_WHOLE_ARCHIVE} ${LIBM}) # build static library add_library(${MPP_STATIC} STATIC ${MPP_SRC}) diff --git a/osal/CMakeLists.txt b/osal/CMakeLists.txt index fa2b924f..ea225682 100644 --- a/osal/CMakeLists.txt +++ b/osal/CMakeLists.txt @@ -77,9 +77,9 @@ if(ANDROID) # in Android pthread is in libc, also need liblog # Android 14 requires libc++ not libstdc++ if("${ANDROID_STL}" STREQUAL "c++_static") - target_link_libraries(osal log m) + target_link_libraries(osal log ${LIBM}) else() - target_link_libraries(osal log stdc++ m) + target_link_libraries(osal log stdc++ ${LIBM}) endif() endif(ANDROID)