summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author杨威 <[email protected]>2021-08-24 20:50:45 +0800
committer杨威 <[email protected]>2021-08-24 22:45:11 +0800
commit11a8502f93d6078321a44979a7b03a44281700d0 (patch)
tree763da2b8970e7ac09a862313f930dca8437b8efd
parenta80f7d02f17a01f3420aa58ada14bdfd807f8887 (diff)
Build:更新判断CPU架构逻辑,默认使用非native,x86使用corei7兼容模式,aarch64使用armv8,由于aarch64 gcc不支持native,如果开启native,降级为armv8Feature-4.4-support-amd-arm
-rw-r--r--CMakeLists.txt28
-rw-r--r--cmake/FindDPDK.cmake6
-rw-r--r--cmake/GetDPDKSupport.cmake8
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})