diff options
Diffstat (limited to 'src/plugins/crypto_native/CMakeLists.txt')
-rw-r--r-- | src/plugins/crypto_native/CMakeLists.txt | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/src/plugins/crypto_native/CMakeLists.txt b/src/plugins/crypto_native/CMakeLists.txt index cd701ec7d55..9fc3e7d4090 100644 --- a/src/plugins/crypto_native/CMakeLists.txt +++ b/src/plugins/crypto_native/CMakeLists.txt @@ -11,27 +11,37 @@ # See the License for the specific language governing permissions and # limitations under the License. -if(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*") - return() +if(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*") + list(APPEND VARIANTS "sse42\;-march=silvermont") + list(APPEND VARIANTS "avx2\;-march=core-avx2") + if(compiler_flag_march_skylake_avx512) + list(APPEND VARIANTS "avx512\;-march=skylake-avx512") + endif() + if(compiler_flag_march_icelake_client) + list(APPEND VARIANTS "vaesni\;-march=icelake-client") + endif() + set (COMPILE_FILES aes_cbc.c aes_gcm.c) + set (COMPILE_OPTS -Wall -fno-common -maes) endif() -add_vpp_plugin(crypto_native SOURCES main.c) - -list(APPEND VARIANTS "sse42\;-march=silvermont") -list(APPEND VARIANTS "avx2\;-march=core-avx2") -if(compiler_flag_march_skylake_avx512) - list(APPEND VARIANTS "avx512\;-march=skylake-avx512") +if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)") + list(APPEND VARIANTS "armv8\;-march=native") + set (COMPILE_FILES aes_cbc.c) + set (COMPILE_OPTS -Wall -fno-common) endif() -if(compiler_flag_march_icelake_client) - list(APPEND VARIANTS "vaesni\;-march=icelake-client") + +if (NOT VARIANTS) + return() endif() +add_vpp_plugin(crypto_native SOURCES main.c) + foreach(VARIANT ${VARIANTS}) list(GET VARIANT 0 v) list(GET VARIANT 1 f) set(l crypto_native_${v}) - add_library(${l} OBJECT aes_cbc.c aes_gcm.c) + add_library(${l} OBJECT ${COMPILE_FILES}) set_target_properties(${l} PROPERTIES POSITION_INDEPENDENT_CODE ON) - target_compile_options(${l} PUBLIC ${f} -Wall -fno-common -maes) + target_compile_options(${l} PUBLIC ${f} ${COMPILE_OPTS}) target_sources(crypto_native_plugin PRIVATE $<TARGET_OBJECTS:${l}>) endforeach() |