You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CMakeLists.txt 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. INCLUDE(FindArch.cmake)
  2. INCLUDE(AsmOp.cmake)
  3. TARGET_ARCHITECTURE(ARCH)
  4. SET(CHACHASRC chacha20/ref.c)
  5. # For now we support only x86_64 architecture with optimizations
  6. IF(${ARCH} STREQUAL "x86_64")
  7. ENABLE_LANGUAGE(ASM)
  8. ASM_OP(HAVE_AVX2 "vpaddq %ymm0, %ymm0, %ymm0" "avx2")
  9. ASM_OP(HAVE_AVX "vpaddq %xmm0, %xmm0, %xmm0" "avx")
  10. ASM_OP(HAVE_SSE2 "pmuludq %xmm0, %xmm0" "sse2")
  11. ASM_OP(HAVE_SLASHMACRO "
  12. .macro TEST1 op
  13. \\op %eax, %eax
  14. .endm
  15. TEST1 xorl
  16. " "slash macro convention")
  17. ASM_OP(HAVE_DOLLARMACRO "
  18. .macro TEST1 op
  19. $0 %eax, %eax
  20. .endm
  21. TEST1 xorl
  22. " "dollar macro convention")
  23. CONFIGURE_FILE(platform_config.h.in platform_config.h)
  24. INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}")
  25. ENDIF()
  26. IF(HAVE_AVX2)
  27. SET(CHACHASRC ${CHACHASRC} chacha20/avx2.S)
  28. ENDIF(HAVE_AVX2)
  29. IF(HAVE_AVX)
  30. SET(CHACHASRC ${CHACHASRC} chacha20/avx.S)
  31. ENDIF(HAVE_AVX)
  32. IF(HAVE_SSE2)
  33. SET(CHACHASRC ${CHACHASRC} chacha20/sse2.S)
  34. ENDIF(HAVE_SSE2)
  35. SET(LIBCRYPTOBOXSRC cryptobox.c)
  36. ADD_LIBRARY(rspamd-cryptobox ${LINK_TYPE} ${LIBCRYPTOBOXSRC} ${CHACHASRC})
  37. IF(NOT DEBIAN_BUILD)
  38. SET_TARGET_PROPERTIES(rspamd-cryptobox PROPERTIES VERSION ${RSPAMD_VERSION})
  39. ENDIF(NOT DEBIAN_BUILD)
  40. SET_TARGET_PROPERTIES(rspamd-cryptobox PROPERTIES LINKER_LANGUAGE C COMPILE_FLAGS "-DRSPAMD_LIB")
  41. IF(CMAKE_COMPILER_IS_GNUCC)
  42. SET_TARGET_PROPERTIES(rspamd-cryptobox PROPERTIES COMPILE_FLAGS "-DRSPAMD_LIB -fno-strict-aliasing")
  43. ENDIF(CMAKE_COMPILER_IS_GNUCC)
  44. TARGET_LINK_LIBRARIES(rspamd-cryptobox ottery)
  45. IF(NO_SHARED MATCHES "OFF")
  46. INSTALL(TARGETS rspamd-cryptobox
  47. LIBRARY DESTINATION ${LIBDIR}
  48. PUBLIC_HEADER DESTINATION ${INCLUDEDIR})
  49. ENDIF(NO_SHARED MATCHES "OFF")