diff options
| author | 杨威 <[email protected]> | 2021-08-24 20:50:45 +0800 |
|---|---|---|
| committer | 杨威 <[email protected]> | 2021-08-24 22:45:11 +0800 |
| commit | 11a8502f93d6078321a44979a7b03a44281700d0 (patch) | |
| tree | 763da2b8970e7ac09a862313f930dca8437b8efd | |
| parent | a80f7d02f17a01f3420aa58ada14bdfd807f8887 (diff) | |
Build:更新判断CPU架构逻辑,默认使用非native,x86使用corei7兼容模式,aarch64使用armv8,由于aarch64 gcc不支持native,如果开启native,降级为armv8Feature-4.4-support-amd-arm
| -rw-r--r-- | CMakeLists.txt | 28 | ||||
| -rw-r--r-- | cmake/FindDPDK.cmake | 6 | ||||
| -rw-r--r-- | cmake/GetDPDKSupport.cmake | 8 |
3 files changed, 14 insertions, 28 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 8309f1d..076c21e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,28 +19,22 @@ set(CMAKE_C_FLAGS "-std=gnu99") set(CMAKE_CXX_FLAGS "-std=gnu++11" ) #CPU_ARCH -set(CPU_ARCH "corei7-avx" CACHE STRING - " set cpu arch chosen by the user, using corei7-avx as default") -set_property(CACHE CPU_ARCH PROPERTY STRINGS native corei7-avx) -message(STATUS "CPU_ARCH='${CPU_ARCH}'") - -if(CPU_ARCH MATCHES "native") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native" ) -elseif(CPU_ARCH MATCHES "corei7-avx") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=corei7-avx") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=corei7-avx" ) +option(ENABLE_NATIVE_CPU_ARCH "Enable Native CPU arch" FALSE) +if(ENABLE_NATIVE_CPU_ARCH) + set(CPU_ARCH "native") +else() + set(CPU_ARCH "corei7-avx") endif() - if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64" ) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64 -march=${CPU_ARCH}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64 -march=${CPU_ARCH}") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsigned-char") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsigned-char") + set(CPU_ARCH "armv8-a") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=${CPU_ARCH} -fsigned-char") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${CPU_ARCH} -fsigned-char") endif() - +message(STATUS "CPU_ARCH: ${CPU_ARCH}") if(ENABLE_WARNING_ALL) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fPIC") diff --git a/cmake/FindDPDK.cmake b/cmake/FindDPDK.cmake index 1793d75..89bbd9d 100644 --- a/cmake/FindDPDK.cmake +++ b/cmake/FindDPDK.cmake @@ -22,11 +22,7 @@ include(FindPackageHandleStandardArgs) find_package_handle_standard_args(DPDK DEFAULT_MSG DPDK_ROOT_DIR DPDK_INCLUDE_DIR DPDK_LIBRARY) if(NOT RTE_MARCH) - if(CPU_ARCH MATCHES "native") - set(RTE_MARCH "native") - elseif(CPU_ARCH MATCHES "corei7-avx") - set(RTE_MARCH "corei7-avx") - endif() + set(RTE_MARCH ${CPU_ARCH}) endif() # DPDK CPU Flags diff --git a/cmake/GetDPDKSupport.cmake b/cmake/GetDPDKSupport.cmake index 655547b..35169f1 100644 --- a/cmake/GetDPDKSupport.cmake +++ b/cmake/GetDPDKSupport.cmake @@ -9,11 +9,7 @@ set(DPDK_RTE_SDK $ENV{RTE_SDK}) set(DPDK_RTE_TARGET $ENV{RTE_TARGET})
# DPDK CPU Flags
-if(CPU_ARCH MATCHES "native")
- set(DPDK_MACHINE_FLAGS "-march=native")
-elseif(CPU_ARCH MATCHES "corei7-avx")
- set(DPDK_MACHINE_FLAGS "-march=corei7-avx")
-endif()
+set(DPDK_MACHINE_FLAGS "-march=${CPU_ARCH}")
exec_program(${CMAKE_C_COMPILER} ARGS "${DPDK_MACHINE_FLAGS} -dM -E - < /dev/null" OUTPUT_VARIABLE DPDK_AUTOFLAGS)
@@ -112,4 +108,4 @@ set(DPDK_LIBRARY_LINK set(DPDK_C_PREDEFINED ${DPDK_ARCH_FLAGS} ${DPDK_MACHINE_FLAGS} ${DPDK_FORCE_INCLUDE})
set(DPDK_CXX_PREDEFINED ${DPDK_ARCH_FLAGS} ${DPDK_MACHINE_FLAGS} ${DPDK_FORCE_INCLUDE})
set(DPDK_INCLUDE_DIR "${DPDK_RTE_SDK}/${DPDK_RTE_TARGET}/include")
-set(DPDK_LIBRARY ${DPDK_LIBRARY_PATH} ${DPDK_LIBRARY_LINK})
\ No newline at end of file +set(DPDK_LIBRARY ${DPDK_LIBRARY_PATH} ${DPDK_LIBRARY_LINK})
|
