Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 
 

194 rindas
3.7 KiB

  1. include_directories(. ../include)
  2. if(APPLE)
  3. set(PERLASM_STYLE macosx)
  4. set(ASM_EXT S)
  5. enable_language(ASM)
  6. elseif(UNIX)
  7. if (${ARCH} STREQUAL "aarch64")
  8. # The "armx" Perl scripts look for "64" in the style argument
  9. # in order to decide whether to generate 32- or 64-bit asm.
  10. set(PERLASM_STYLE linux64)
  11. else()
  12. set(PERLASM_STYLE elf)
  13. endif()
  14. set(ASM_EXT S)
  15. enable_language(ASM)
  16. else()
  17. if (CMAKE_CL_64)
  18. message("Using nasm")
  19. set(PERLASM_STYLE nasm)
  20. else()
  21. message("Using win32n")
  22. set(PERLASM_STYLE win32n)
  23. endif()
  24. # On Windows, we use the NASM output, specifically built with Yasm.
  25. set(ASM_EXT asm)
  26. enable_language(ASM_NASM)
  27. endif()
  28. function(perlasm dest src)
  29. add_custom_command(
  30. OUTPUT ${dest}
  31. COMMAND perl ${CMAKE_CURRENT_SOURCE_DIR}/${src} ${PERLASM_STYLE} ${ARGN} > ${dest}
  32. DEPENDS
  33. ${src}
  34. ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86_64-xlate.pl
  35. ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86asm.pl
  36. ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86gas.pl
  37. ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86masm.pl
  38. ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86nasm.pl
  39. WORKING_DIRECTORY .
  40. )
  41. endfunction()
  42. if (${ARCH} STREQUAL "x86_64")
  43. set(
  44. CRYPTO_ARCH_SOURCES
  45. cpu-x86_64-asm.${ASM_EXT}
  46. cpu-intel.c
  47. )
  48. endif()
  49. if (${ARCH} STREQUAL "x86")
  50. set(
  51. CRYPTO_ARCH_SOURCES
  52. cpu-x86-asm.${ASM_EXT}
  53. cpu-intel.c
  54. )
  55. endif()
  56. if (${ARCH} STREQUAL "arm")
  57. set(
  58. CRYPTO_ARCH_SOURCES
  59. cpu-arm.c
  60. )
  61. endif()
  62. if (${ARCH} STREQUAL "aarch64")
  63. set(
  64. CRYPTO_ARCH_SOURCES
  65. cpu-arm.c
  66. )
  67. endif()
  68. # Level 0.1 - depends on nothing outside this set.
  69. add_subdirectory(stack)
  70. add_subdirectory(lhash)
  71. add_subdirectory(err)
  72. add_subdirectory(buf)
  73. add_subdirectory(base64)
  74. add_subdirectory(bytestring)
  75. # Level 0.2 - depends on nothing but itself
  76. add_subdirectory(sha)
  77. add_subdirectory(md4)
  78. add_subdirectory(md5)
  79. add_subdirectory(modes)
  80. add_subdirectory(aes)
  81. add_subdirectory(des)
  82. add_subdirectory(rc4)
  83. add_subdirectory(conf)
  84. add_subdirectory(chacha)
  85. add_subdirectory(poly1305)
  86. # Level 1, depends only on 0.*
  87. add_subdirectory(digest)
  88. add_subdirectory(cipher)
  89. add_subdirectory(rand)
  90. add_subdirectory(bio)
  91. add_subdirectory(bn)
  92. add_subdirectory(obj)
  93. add_subdirectory(asn1)
  94. # Level 2
  95. add_subdirectory(engine)
  96. add_subdirectory(dh)
  97. add_subdirectory(dsa)
  98. add_subdirectory(rsa)
  99. add_subdirectory(ec)
  100. add_subdirectory(ecdh)
  101. add_subdirectory(ecdsa)
  102. add_subdirectory(hmac)
  103. # Level 3
  104. add_subdirectory(evp)
  105. add_subdirectory(hkdf)
  106. add_subdirectory(pem)
  107. add_subdirectory(x509)
  108. add_subdirectory(x509v3)
  109. # Level 4
  110. add_subdirectory(pkcs8)
  111. add_library(
  112. crypto
  113. STATIC
  114. crypto.c
  115. crypto_error.c
  116. mem.c
  117. thread.c
  118. ex_data.c
  119. ex_data_impl.c
  120. time_support.c
  121. directory_posix.c
  122. directory_win.c
  123. ${CRYPTO_ARCH_SOURCES}
  124. $<TARGET_OBJECTS:stack>
  125. $<TARGET_OBJECTS:lhash>
  126. $<TARGET_OBJECTS:err>
  127. $<TARGET_OBJECTS:base64>
  128. $<TARGET_OBJECTS:bytestring>
  129. $<TARGET_OBJECTS:sha>
  130. $<TARGET_OBJECTS:md4>
  131. $<TARGET_OBJECTS:md5>
  132. $<TARGET_OBJECTS:digest>
  133. $<TARGET_OBJECTS:cipher>
  134. $<TARGET_OBJECTS:modes>
  135. $<TARGET_OBJECTS:aes>
  136. $<TARGET_OBJECTS:des>
  137. $<TARGET_OBJECTS:rc4>
  138. $<TARGET_OBJECTS:conf>
  139. $<TARGET_OBJECTS:chacha>
  140. $<TARGET_OBJECTS:poly1305>
  141. $<TARGET_OBJECTS:buf>
  142. $<TARGET_OBJECTS:bn>
  143. $<TARGET_OBJECTS:bio>
  144. $<TARGET_OBJECTS:rand>
  145. $<TARGET_OBJECTS:obj>
  146. $<TARGET_OBJECTS:asn1>
  147. $<TARGET_OBJECTS:engine>
  148. $<TARGET_OBJECTS:dh>
  149. $<TARGET_OBJECTS:dsa>
  150. $<TARGET_OBJECTS:rsa>
  151. $<TARGET_OBJECTS:ec>
  152. $<TARGET_OBJECTS:ecdh>
  153. $<TARGET_OBJECTS:ecdsa>
  154. $<TARGET_OBJECTS:hmac>
  155. $<TARGET_OBJECTS:evp>
  156. $<TARGET_OBJECTS:hkdf>
  157. $<TARGET_OBJECTS:pem>
  158. $<TARGET_OBJECTS:x509>
  159. $<TARGET_OBJECTS:x509v3>
  160. $<TARGET_OBJECTS:pkcs8>
  161. )
  162. add_executable(
  163. constant_time_test
  164. constant_time_test.c
  165. )
  166. target_link_libraries(constant_time_test crypto)
  167. perlasm(cpu-x86_64-asm.${ASM_EXT} cpu-x86_64-asm.pl)
  168. perlasm(cpu-x86-asm.${ASM_EXT} cpu-x86-asm.pl)