summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt15
-rw-r--r--cmake/FindDPDK.cmake6
-rw-r--r--cmake/GetDPDKSupport.cmake9
3 files changed, 24 insertions, 6 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fee5006..a704dfc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,11 +10,20 @@ include(Version)
# EXTRA Flags
# GNU99 and C++11 Support
-set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -std=gnu99 -m64 -march=native")
-set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -std=gnu++11 -m64 -march=native" )
+set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -std=gnu99")
+set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} -std=gnu++11" )
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXX_FLAGS}")
+if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64 -march=native")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64 -march=native" )
+elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a -fsigned-char")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8-a -fsigned-char")
+endif()
+
+
# Default Install Destination Directory
set(CMAKE_INSTALL_PREFIX /opt/mrzcpd)
add_definitions(-fPIC -Wall)
@@ -60,4 +69,4 @@ message(STATUS "Packet I/O Middleware based on DPDK(Marsio), Version: ${MARSIO_V
# packed
include(Package)
-include(InstallDPDK) \ No newline at end of file
+include(InstallDPDK)
diff --git a/cmake/FindDPDK.cmake b/cmake/FindDPDK.cmake
index 6b037c6..16ed254 100644
--- a/cmake/FindDPDK.cmake
+++ b/cmake/FindDPDK.cmake
@@ -26,7 +26,11 @@ find_package_handle_standard_args(DPDK DEFAULT_MSG
DPDK_ROOT_DIR DPDK_INCLUDE_DIR DPDK_LIBRARY)
if(NOT RTE_MARCH)
- set(RTE_MARCH "native")
+ if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64")
+ set(RTE_MARCH "armv8-a")
+ else()
+ set(RTE_MARCH "native")
+ endif()
endif()
# DPDK CPU Flags
diff --git a/cmake/GetDPDKSupport.cmake b/cmake/GetDPDKSupport.cmake
index 719d75d..a18d208 100644
--- a/cmake/GetDPDKSupport.cmake
+++ b/cmake/GetDPDKSupport.cmake
@@ -9,7 +9,12 @@ set(DPDK_RTE_SDK $ENV{RTE_SDK})
set(DPDK_RTE_TARGET $ENV{RTE_TARGET})
# DPDK CPU Flags
-set(DPDK_MACHINE_FLAGS "-march=native")
+if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64")
+ set(DPDK_MACHINE_FLAGS "-march=armv8-a")
+else()
+ set(DPDK_MACHINE_FLAGS "-march=native")
+endif()
+
exec_program(${CMAKE_C_COMPILER} ARGS "${DPDK_MACHINE_FLAGS} -dM -E - < /dev/null" OUTPUT_VARIABLE DPDK_AUTOFLAGS)
if(DPDK_AUTOFLAGS MATCHES "__SSE__")
@@ -107,4 +112,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})