blob: 20a38dc65796f2987566286a0d42e6ca2f9ab898 [file] [log] [blame]
Kenny Rootb8494592015-09-25 02:29:14 +00001include_directories(../include)
Adam Langleyd9e397b2015-01-22 14:27:53 -08002
3if(APPLE)
4 if (${ARCH} STREQUAL "x86")
Adam Langleye9ada862015-05-11 17:20:37 -07005 set(PERLASM_FLAGS "-fPIC -DOPENSSL_IA32_SSE2")
Adam Langleyd9e397b2015-01-22 14:27:53 -08006 endif()
7 set(PERLASM_STYLE macosx)
8 set(ASM_EXT S)
9 enable_language(ASM)
10elseif(UNIX)
11 if (${ARCH} STREQUAL "aarch64")
12 # The "armx" Perl scripts look for "64" in the style argument
13 # in order to decide whether to generate 32- or 64-bit asm.
14 set(PERLASM_STYLE linux64)
Adam Langleye9ada862015-05-11 17:20:37 -070015 elseif (${ARCH} STREQUAL "arm")
16 set(PERLASM_STYLE linux32)
Adam Langleyd9e397b2015-01-22 14:27:53 -080017 elseif (${ARCH} STREQUAL "x86")
Adam Langleye9ada862015-05-11 17:20:37 -070018 set(PERLASM_FLAGS "-fPIC -DOPENSSL_IA32_SSE2")
Adam Langleyd9e397b2015-01-22 14:27:53 -080019 set(PERLASM_STYLE elf)
Steven Valdezbb1ceac2016-10-07 10:34:51 -040020 elseif (${ARCH} STREQUAL "ppc64le")
21 set(PERLASM_STYLE ppc64le)
Adam Langleyd9e397b2015-01-22 14:27:53 -080022 else()
23 set(PERLASM_STYLE elf)
24 endif()
25 set(ASM_EXT S)
26 enable_language(ASM)
David Benjamin4969cc92016-04-22 15:02:23 -040027 set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -Wa,--noexecstack")
Adam Langleyd9e397b2015-01-22 14:27:53 -080028else()
29 if (CMAKE_CL_64)
30 message("Using nasm")
31 set(PERLASM_STYLE nasm)
32 else()
33 message("Using win32n")
34 set(PERLASM_STYLE win32n)
Adam Langleye9ada862015-05-11 17:20:37 -070035 set(PERLASM_FLAGS "-DOPENSSL_IA32_SSE2")
Adam Langleyd9e397b2015-01-22 14:27:53 -080036 endif()
37
38 # On Windows, we use the NASM output, specifically built with Yasm.
39 set(ASM_EXT asm)
40 enable_language(ASM_NASM)
41endif()
42
43function(perlasm dest src)
44 add_custom_command(
45 OUTPUT ${dest}
David Benjaminc895d6b2016-08-11 13:26:41 -040046 COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${src} ${PERLASM_STYLE} ${PERLASM_FLAGS} ${ARGN} ${dest}
Adam Langleyd9e397b2015-01-22 14:27:53 -080047 DEPENDS
48 ${src}
Adam Langleye9ada862015-05-11 17:20:37 -070049 ${PROJECT_SOURCE_DIR}/crypto/perlasm/arm-xlate.pl
Steven Valdezbb1ceac2016-10-07 10:34:51 -040050 ${PROJECT_SOURCE_DIR}/crypto/perlasm/ppc-xlate.pl
Adam Langleyd9e397b2015-01-22 14:27:53 -080051 ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86_64-xlate.pl
52 ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86asm.pl
53 ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86gas.pl
54 ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86masm.pl
55 ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86nasm.pl
56 WORKING_DIRECTORY .
57 )
58endfunction()
59
Adam Langleyd9e397b2015-01-22 14:27:53 -080060# Level 0.1 - depends on nothing outside this set.
61add_subdirectory(stack)
62add_subdirectory(lhash)
63add_subdirectory(err)
64add_subdirectory(buf)
65add_subdirectory(base64)
66add_subdirectory(bytestring)
Steven Valdez909b19f2016-11-21 15:35:44 -050067add_subdirectory(pool)
Adam Langleyd9e397b2015-01-22 14:27:53 -080068
69# Level 0.2 - depends on nothing but itself
70add_subdirectory(sha)
71add_subdirectory(md4)
72add_subdirectory(md5)
73add_subdirectory(modes)
74add_subdirectory(aes)
75add_subdirectory(des)
76add_subdirectory(rc4)
77add_subdirectory(conf)
78add_subdirectory(chacha)
79add_subdirectory(poly1305)
Adam Langley4139edb2016-01-13 15:00:54 -080080add_subdirectory(curve25519)
David Benjamin4969cc92016-04-22 15:02:23 -040081add_subdirectory(newhope)
Adam Langleyd9e397b2015-01-22 14:27:53 -080082
83# Level 1, depends only on 0.*
84add_subdirectory(digest)
85add_subdirectory(cipher)
86add_subdirectory(rand)
87add_subdirectory(bio)
88add_subdirectory(bn)
89add_subdirectory(obj)
90add_subdirectory(asn1)
91
92# Level 2
93add_subdirectory(engine)
94add_subdirectory(dh)
95add_subdirectory(dsa)
96add_subdirectory(rsa)
97add_subdirectory(ec)
98add_subdirectory(ecdh)
99add_subdirectory(ecdsa)
100add_subdirectory(hmac)
101
102# Level 3
Adam Langleye9ada862015-05-11 17:20:37 -0700103add_subdirectory(cmac)
Adam Langleyd9e397b2015-01-22 14:27:53 -0800104add_subdirectory(evp)
105add_subdirectory(hkdf)
106add_subdirectory(pem)
107add_subdirectory(x509)
108add_subdirectory(x509v3)
109
110# Level 4
111add_subdirectory(pkcs8)
112
Adam Langleye9ada862015-05-11 17:20:37 -0700113# Test support code
114add_subdirectory(test)
115
Adam Langleyd9e397b2015-01-22 14:27:53 -0800116add_library(
117 crypto
118
David Benjamin4969cc92016-04-22 15:02:23 -0400119 cpu-aarch64-linux.c
120 cpu-arm.c
121 cpu-arm-linux.c
122 cpu-intel.c
Steven Valdezbb1ceac2016-10-07 10:34:51 -0400123 cpu-ppc64le.c
Adam Langleyd9e397b2015-01-22 14:27:53 -0800124 crypto.c
Adam Langleyf4e42722015-06-04 17:45:09 -0700125 ex_data.c
Adam Langleyd9e397b2015-01-22 14:27:53 -0800126 mem.c
Adam Langleyf4e42722015-06-04 17:45:09 -0700127 refcount_c11.c
128 refcount_lock.c
Adam Langleyd9e397b2015-01-22 14:27:53 -0800129 thread.c
Adam Langleye9ada862015-05-11 17:20:37 -0700130 thread_none.c
131 thread_pthread.c
132 thread_win.c
Adam Langleyd9e397b2015-01-22 14:27:53 -0800133 time_support.c
Adam Langleyd9e397b2015-01-22 14:27:53 -0800134
Adam Langleyd9e397b2015-01-22 14:27:53 -0800135 $<TARGET_OBJECTS:stack>
136 $<TARGET_OBJECTS:lhash>
137 $<TARGET_OBJECTS:err>
138 $<TARGET_OBJECTS:base64>
139 $<TARGET_OBJECTS:bytestring>
Steven Valdez909b19f2016-11-21 15:35:44 -0500140 $<TARGET_OBJECTS:pool>
Adam Langleyd9e397b2015-01-22 14:27:53 -0800141 $<TARGET_OBJECTS:sha>
142 $<TARGET_OBJECTS:md4>
143 $<TARGET_OBJECTS:md5>
144 $<TARGET_OBJECTS:digest>
145 $<TARGET_OBJECTS:cipher>
146 $<TARGET_OBJECTS:modes>
147 $<TARGET_OBJECTS:aes>
148 $<TARGET_OBJECTS:des>
149 $<TARGET_OBJECTS:rc4>
150 $<TARGET_OBJECTS:conf>
151 $<TARGET_OBJECTS:chacha>
152 $<TARGET_OBJECTS:poly1305>
Adam Langley4139edb2016-01-13 15:00:54 -0800153 $<TARGET_OBJECTS:curve25519>
Adam Langleyd9e397b2015-01-22 14:27:53 -0800154 $<TARGET_OBJECTS:buf>
155 $<TARGET_OBJECTS:bn>
156 $<TARGET_OBJECTS:bio>
157 $<TARGET_OBJECTS:rand>
158 $<TARGET_OBJECTS:obj>
159 $<TARGET_OBJECTS:asn1>
160 $<TARGET_OBJECTS:engine>
161 $<TARGET_OBJECTS:dh>
162 $<TARGET_OBJECTS:dsa>
163 $<TARGET_OBJECTS:rsa>
164 $<TARGET_OBJECTS:ec>
165 $<TARGET_OBJECTS:ecdh>
166 $<TARGET_OBJECTS:ecdsa>
167 $<TARGET_OBJECTS:hmac>
Adam Langleye9ada862015-05-11 17:20:37 -0700168 $<TARGET_OBJECTS:cmac>
Adam Langleyd9e397b2015-01-22 14:27:53 -0800169 $<TARGET_OBJECTS:evp>
170 $<TARGET_OBJECTS:hkdf>
171 $<TARGET_OBJECTS:pem>
172 $<TARGET_OBJECTS:x509>
173 $<TARGET_OBJECTS:x509v3>
David Benjamin4969cc92016-04-22 15:02:23 -0400174 $<TARGET_OBJECTS:pkcs8_lib>
175 $<TARGET_OBJECTS:newhope>
Adam Langleyd9e397b2015-01-22 14:27:53 -0800176)
177
Adam Langleye9ada862015-05-11 17:20:37 -0700178if(NOT MSVC AND NOT ANDROID)
179 target_link_libraries(crypto pthread)
180endif()
181
Adam Langleyd9e397b2015-01-22 14:27:53 -0800182add_executable(
183 constant_time_test
184
185 constant_time_test.c
Adam Langleyf4e42722015-06-04 17:45:09 -0700186
187 $<TARGET_OBJECTS:test_support>
Adam Langleyd9e397b2015-01-22 14:27:53 -0800188)
189
190target_link_libraries(constant_time_test crypto)
Kenny Roote99801b2015-11-06 15:31:15 -0800191add_dependencies(all_tests constant_time_test)
Adam Langleyd9e397b2015-01-22 14:27:53 -0800192
Adam Langleye9ada862015-05-11 17:20:37 -0700193add_executable(
194 thread_test
195
196 thread_test.c
Adam Langleyf4e42722015-06-04 17:45:09 -0700197
198 $<TARGET_OBJECTS:test_support>
Adam Langleye9ada862015-05-11 17:20:37 -0700199)
200
201target_link_libraries(thread_test crypto)
Kenny Roote99801b2015-11-06 15:31:15 -0800202add_dependencies(all_tests thread_test)
Adam Langleye9ada862015-05-11 17:20:37 -0700203
Adam Langleyf4e42722015-06-04 17:45:09 -0700204add_executable(
205 refcount_test
206
207 refcount_test.c
208)
209
210target_link_libraries(refcount_test crypto)
Kenny Roote99801b2015-11-06 15:31:15 -0800211add_dependencies(all_tests refcount_test)