From 0cf0d076abc995c410cbd66ea81da2740b1a6700 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Olivier=20Ch=C3=A9ron?= Date: Sat, 14 Mar 2020 07:50:30 +0100 Subject: [PATCH] Add flag use_target_attributes --- cbits/aes/x86ni.h | 5 +++++ cryptonite.cabal | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/cbits/aes/x86ni.h b/cbits/aes/x86ni.h index c0ffd44..cd26ce4 100644 --- a/cbits/aes/x86ni.h +++ b/cbits/aes/x86ni.h @@ -40,8 +40,13 @@ #include #include +#ifdef WITH_TARGET_ATTRIBUTES #define TARGET_AESNI __attribute__((target("ssse3,aes"))) #define TARGET_AESNI_PCLMUL __attribute__((target("sse4.1,aes,pclmul"))) +#else +#define TARGET_AESNI +#define TARGET_AESNI_PCLMUL +#endif #ifdef IMPL_DEBUG TARGET_AESNI diff --git a/cryptonite.cabal b/cryptonite.cabal index d983581..2d386b0 100644 --- a/cryptonite.cabal +++ b/cryptonite.cabal @@ -103,6 +103,11 @@ Flag check_alignment Default: False Manual: True +Flag use_target_attributes + Description: use GCC / clang function attributes instead of global target options. + Default: False + Manual: True + Library Exposed-modules: Crypto.Cipher.AES Crypto.Cipher.AESGCMSIV @@ -337,8 +342,12 @@ Library if flag(support_aesni) && (os(linux) || os(freebsd) || os(osx)) && (arch(i386) || arch(x86_64)) CC-options: -DWITH_AESNI + if !flag(use_target_attributes) + CC-options: -mssse3 -maes if flag(support_pclmuldq) CC-options: -DWITH_PCLMUL + if !flag(use_target_attributes) + CC-options: -msse4.1 -mpclmul C-sources: cbits/aes/x86ni.c , cbits/aes/generic.c , cbits/aes/gf.c @@ -385,6 +394,8 @@ Library Build-depends: deepseq if flag(check_alignment) cc-options: -DWITH_ASSERT_ALIGNMENT + if flag(use_target_attributes) + cc-options: -DWITH_TARGET_ATTRIBUTES Test-Suite test-cryptonite type: exitcode-stdio-1.0