Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 
 

281 Zeilen
6.6 KiB

  1. include_directories(../include)
  2. if(NOT OPENSSL_NO_ASM)
  3. if(UNIX)
  4. if (${ARCH} STREQUAL "aarch64")
  5. # The "armx" Perl scripts look for "64" in the style argument
  6. # in order to decide whether to generate 32- or 64-bit asm.
  7. if (APPLE)
  8. set(PERLASM_STYLE ios64)
  9. else()
  10. set(PERLASM_STYLE linux64)
  11. endif()
  12. elseif (${ARCH} STREQUAL "arm")
  13. if (APPLE)
  14. set(PERLASM_STYLE ios32)
  15. else()
  16. set(PERLASM_STYLE linux32)
  17. endif()
  18. elseif (${ARCH} STREQUAL "ppc64le")
  19. set(PERLASM_STYLE linux64le)
  20. else()
  21. if (${ARCH} STREQUAL "x86")
  22. set(PERLASM_FLAGS "-fPIC -DOPENSSL_IA32_SSE2")
  23. endif()
  24. if (APPLE)
  25. set(PERLASM_STYLE macosx)
  26. else()
  27. set(PERLASM_STYLE elf)
  28. endif()
  29. endif()
  30. set(ASM_EXT S)
  31. enable_language(ASM)
  32. set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -Wa,--noexecstack")
  33. # Clang's integerated assembler does not support debug symbols.
  34. if(NOT CMAKE_ASM_COMPILER_ID MATCHES "Clang")
  35. set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -Wa,-g")
  36. endif()
  37. # CMake does not add -isysroot and -arch flags to assembly.
  38. if (APPLE)
  39. if (CMAKE_OSX_SYSROOT)
  40. set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -isysroot \"${CMAKE_OSX_SYSROOT}\"")
  41. endif()
  42. foreach(arch ${CMAKE_OSX_ARCHITECTURES})
  43. set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -arch ${arch}")
  44. endforeach()
  45. endif()
  46. else()
  47. if (${ARCH} STREQUAL "x86_64")
  48. set(PERLASM_STYLE nasm)
  49. else()
  50. set(PERLASM_STYLE win32n)
  51. set(PERLASM_FLAGS "-DOPENSSL_IA32_SSE2")
  52. endif()
  53. set(CMAKE_ASM_NASM_FLAGS "-gcv8")
  54. # On Windows, we use the NASM output, specifically built with Yasm.
  55. set(ASM_EXT asm)
  56. enable_language(ASM_NASM)
  57. endif()
  58. endif()
  59. function(perlasm dest src)
  60. add_custom_command(
  61. OUTPUT ${dest}
  62. COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${src} ${PERLASM_STYLE} ${PERLASM_FLAGS} ${ARGN} ${dest}
  63. DEPENDS
  64. ${src}
  65. ${PROJECT_SOURCE_DIR}/crypto/perlasm/arm-xlate.pl
  66. ${PROJECT_SOURCE_DIR}/crypto/perlasm/ppc-xlate.pl
  67. ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86_64-xlate.pl
  68. ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86asm.pl
  69. ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86gas.pl
  70. ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86masm.pl
  71. ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86nasm.pl
  72. WORKING_DIRECTORY .
  73. )
  74. endfunction()
  75. # Level 0.1 - depends on nothing outside this set.
  76. add_subdirectory(stack)
  77. add_subdirectory(lhash)
  78. add_subdirectory(err)
  79. add_subdirectory(buf)
  80. add_subdirectory(base64)
  81. add_subdirectory(bytestring)
  82. add_subdirectory(pool)
  83. # Level 0.2 - depends on nothing but itself
  84. add_subdirectory(rc4)
  85. add_subdirectory(conf)
  86. add_subdirectory(chacha)
  87. add_subdirectory(poly1305)
  88. add_subdirectory(curve25519)
  89. # Level 1, depends only on 0.*
  90. add_subdirectory(digest_extra)
  91. add_subdirectory(cipher_extra)
  92. add_subdirectory(rand_extra)
  93. add_subdirectory(bio)
  94. add_subdirectory(bn_extra)
  95. add_subdirectory(obj)
  96. add_subdirectory(asn1)
  97. # Level 2
  98. add_subdirectory(engine)
  99. add_subdirectory(dh)
  100. add_subdirectory(dsa)
  101. add_subdirectory(rsa_extra)
  102. add_subdirectory(ec_extra)
  103. add_subdirectory(ecdh)
  104. add_subdirectory(ecdsa_extra)
  105. # Level 3
  106. add_subdirectory(cmac)
  107. add_subdirectory(evp)
  108. add_subdirectory(hkdf)
  109. add_subdirectory(pem)
  110. add_subdirectory(x509)
  111. add_subdirectory(x509v3)
  112. # Level 4
  113. add_subdirectory(pkcs7)
  114. add_subdirectory(pkcs8)
  115. # Test support code
  116. add_subdirectory(test)
  117. add_subdirectory(fipsmodule)
  118. add_library(
  119. crypto_base
  120. OBJECT
  121. cpu-aarch64-fuchsia.c
  122. cpu-aarch64-linux.c
  123. cpu-arm.c
  124. cpu-arm-linux.c
  125. cpu-intel.c
  126. cpu-ppc64le.c
  127. crypto.c
  128. ex_data.c
  129. mem.c
  130. refcount_c11.c
  131. refcount_lock.c
  132. thread.c
  133. thread_none.c
  134. thread_pthread.c
  135. thread_win.c
  136. )
  137. if(FIPS_DELOCATE)
  138. SET_SOURCE_FILES_PROPERTIES(fipsmodule/bcm.o PROPERTIES EXTERNAL_OBJECT true)
  139. SET_SOURCE_FILES_PROPERTIES(fipsmodule/bcm.o PROPERTIES GENERATED true)
  140. set(
  141. CRYPTO_FIPS_OBJECTS
  142. fipsmodule/bcm.o
  143. )
  144. endif()
  145. add_library(
  146. crypto
  147. $<TARGET_OBJECTS:crypto_base>
  148. $<TARGET_OBJECTS:stack>
  149. $<TARGET_OBJECTS:lhash>
  150. $<TARGET_OBJECTS:err>
  151. $<TARGET_OBJECTS:base64>
  152. $<TARGET_OBJECTS:bytestring>
  153. $<TARGET_OBJECTS:pool>
  154. $<TARGET_OBJECTS:fipsmodule>
  155. $<TARGET_OBJECTS:digest_extra>
  156. $<TARGET_OBJECTS:cipher_extra>
  157. $<TARGET_OBJECTS:rc4>
  158. $<TARGET_OBJECTS:conf>
  159. $<TARGET_OBJECTS:chacha>
  160. $<TARGET_OBJECTS:poly1305>
  161. $<TARGET_OBJECTS:curve25519>
  162. $<TARGET_OBJECTS:fiat>
  163. $<TARGET_OBJECTS:buf>
  164. $<TARGET_OBJECTS:bn_extra>
  165. $<TARGET_OBJECTS:bio>
  166. $<TARGET_OBJECTS:rand_extra>
  167. $<TARGET_OBJECTS:obj>
  168. $<TARGET_OBJECTS:asn1>
  169. $<TARGET_OBJECTS:engine>
  170. $<TARGET_OBJECTS:dh>
  171. $<TARGET_OBJECTS:dsa>
  172. $<TARGET_OBJECTS:rsa_extra>
  173. $<TARGET_OBJECTS:ec_extra>
  174. $<TARGET_OBJECTS:ecdh>
  175. $<TARGET_OBJECTS:ecdsa_extra>
  176. $<TARGET_OBJECTS:cmac>
  177. $<TARGET_OBJECTS:evp>
  178. $<TARGET_OBJECTS:hkdf>
  179. $<TARGET_OBJECTS:pem>
  180. $<TARGET_OBJECTS:x509>
  181. $<TARGET_OBJECTS:x509v3>
  182. $<TARGET_OBJECTS:pkcs7>
  183. $<TARGET_OBJECTS:pkcs8_lib>
  184. ${CRYPTO_FIPS_OBJECTS}
  185. )
  186. if(FIPS_DELOCATE)
  187. add_dependencies(crypto bcm_o_target)
  188. endif()
  189. SET_TARGET_PROPERTIES(crypto PROPERTIES LINKER_LANGUAGE C)
  190. if(NOT MSVC AND NOT ANDROID)
  191. target_link_libraries(crypto pthread)
  192. endif()
  193. # TODO(davidben): Convert the remaining tests to GTest.
  194. add_executable(
  195. crypto_test
  196. asn1/asn1_test.cc
  197. base64/base64_test.cc
  198. buf/buf_test.cc
  199. bio/bio_test.cc
  200. bytestring/bytestring_test.cc
  201. chacha/chacha_test.cc
  202. cipher_extra/aead_test.cc
  203. cipher_extra/cipher_test.cc
  204. cmac/cmac_test.cc
  205. compiler_test.cc
  206. constant_time_test.cc
  207. curve25519/ed25519_test.cc
  208. curve25519/spake25519_test.cc
  209. curve25519/x25519_test.cc
  210. ecdh/ecdh_test.cc
  211. dh/dh_test.cc
  212. digest_extra/digest_test.cc
  213. dsa/dsa_test.cc
  214. err/err_test.cc
  215. evp/evp_extra_test.cc
  216. evp/evp_test.cc
  217. evp/pbkdf_test.cc
  218. evp/scrypt_test.cc
  219. fipsmodule/aes/aes_test.cc
  220. fipsmodule/bn/bn_test.cc
  221. fipsmodule/ec/ec_test.cc
  222. fipsmodule/ec/p256-x86_64_test.cc
  223. fipsmodule/ecdsa/ecdsa_test.cc
  224. fipsmodule/modes/gcm_test.cc
  225. fipsmodule/rand/ctrdrbg_test.cc
  226. hkdf/hkdf_test.cc
  227. hmac_extra/hmac_test.cc
  228. lhash/lhash_test.cc
  229. obj/obj_test.cc
  230. pkcs7/pkcs7_test.cc
  231. pkcs8/pkcs8_test.cc
  232. pkcs8/pkcs12_test.cc
  233. poly1305/poly1305_test.cc
  234. pool/pool_test.cc
  235. refcount_test.cc
  236. rsa_extra/rsa_test.cc
  237. self_test.cc
  238. test/file_test_gtest.cc
  239. thread_test.cc
  240. x509/x509_test.cc
  241. x509v3/tab_test.cc
  242. x509v3/v3name_test.cc
  243. $<TARGET_OBJECTS:crypto_test_data>
  244. $<TARGET_OBJECTS:boringssl_gtest_main>
  245. $<TARGET_OBJECTS:test_support>
  246. )
  247. target_link_libraries(crypto_test crypto boringssl_gtest)
  248. if (WIN32)
  249. target_link_libraries(crypto_test ws2_32)
  250. endif()
  251. add_dependencies(all_tests crypto_test)