blob: 5d656ecc53b06c6e8c44213939957998d04c7afa [file] [log] [blame]
Adam Langley95c29f32014-06-20 12:00:00 -07001include_directories(. ../include)
2
Adam Langley30eda1d2014-06-24 11:15:12 -07003if(APPLE)
4 set(PERLASM_STYLE macosx)
5 set(ASM_EXT S)
6 enable_language(ASM)
Adam Langleyded93582014-07-31 15:23:51 -07007elseif(UNIX)
Adam Langley95c29f32014-06-20 12:00:00 -07008 set(PERLASM_STYLE elf)
9 set(ASM_EXT S)
10 enable_language(ASM)
11else()
12 if (CMAKE_CL_64)
13 message("Using masm")
14 set(PERLASM_STYLE masm)
15 else()
16 message("Using win32n")
17 set(PERLASM_STYLE win32n)
18 endif()
19 set(ASM_EXT asm)
20 enable_language(ASM_MASM)
21endif()
22
23function(perlasm dest src)
24 add_custom_command(
25 OUTPUT ${dest}
26 COMMAND perl ${CMAKE_CURRENT_SOURCE_DIR}/${src} ${PERLASM_STYLE} ${ARGN} > ${dest}
27 DEPENDS
28 ${src}
29 ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86_64-xlate.pl
30 ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86gas.pl
31 ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86asm.pl
32 ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86asm.pl
33 WORKING_DIRECTORY .
34 )
35endfunction()
36
37if (${ARCH} STREQUAL "x86_64")
38 set(
39 CRYPTO_ARCH_SOURCES
40
41 cpu-x86_64-asm.${ASM_EXT}
42 cpu-intel.c
43 )
44endif()
45
46if (${ARCH} STREQUAL "x86")
47 set(
48 CRYPTO_ARCH_SOURCES
49
50 cpu-x86-asm.${ASM_EXT}
51 cpu-intel.c
52 )
53endif()
54
55if (${ARCH} STREQUAL "arm")
56 set(
57 CRYPTO_ARCH_SOURCES
58
59 cpu-x86-asm.${ASM_EXT}
60 cpu-arm.c
61 )
62endif()
63
64# Level 0.1 - depends on nothing outside this set.
65add_subdirectory(stack)
66add_subdirectory(lhash)
67add_subdirectory(err)
68add_subdirectory(buf)
Adam Langley95c29f32014-06-20 12:00:00 -070069add_subdirectory(base64)
70add_subdirectory(bytestring)
71
72# Level 0.2 - depends on nothing but itself
73add_subdirectory(sha)
Adam Langleyc9eb7ea2014-08-22 11:06:14 -070074add_subdirectory(md4)
Adam Langley95c29f32014-06-20 12:00:00 -070075add_subdirectory(md5)
76add_subdirectory(modes)
77add_subdirectory(aes)
78add_subdirectory(des)
79add_subdirectory(rc4)
80add_subdirectory(conf)
Adam Langleyde0b2022014-06-20 12:00:00 -070081add_subdirectory(chacha)
82add_subdirectory(poly1305)
Adam Langley95c29f32014-06-20 12:00:00 -070083
84# Level 1, depends only on 0.*
85add_subdirectory(digest)
86add_subdirectory(cipher)
87add_subdirectory(rand)
88add_subdirectory(bio)
89add_subdirectory(bn)
90add_subdirectory(obj)
91add_subdirectory(asn1)
92
93# Level 2
94add_subdirectory(engine)
95add_subdirectory(dh)
96add_subdirectory(dsa)
97add_subdirectory(rsa)
98add_subdirectory(ec)
99add_subdirectory(ecdh)
100add_subdirectory(ecdsa)
101add_subdirectory(hmac)
102
103# Level 3
104add_subdirectory(evp)
105add_subdirectory(pem)
106add_subdirectory(x509)
107add_subdirectory(x509v3)
108
109# Level 4
110add_subdirectory(pkcs8)
111
112add_library(
113 crypto
114 STATIC
115
David Benjamina70c75c2014-09-11 19:11:15 -0400116 crypto.c
Adam Langley95c29f32014-06-20 12:00:00 -0700117 crypto_error.c
118 mem.c
Adam Langley95c29f32014-06-20 12:00:00 -0700119 thread.c
120 ex_data.c
121 ex_data_impl.c
122 time_support.c
123 directory_posix.c
124 directory_win.c
125
126 ${CRYPTO_ARCH_SOURCES}
127
128 $<TARGET_OBJECTS:stack>
129 $<TARGET_OBJECTS:lhash>
130 $<TARGET_OBJECTS:err>
Adam Langley95c29f32014-06-20 12:00:00 -0700131 $<TARGET_OBJECTS:base64>
132 $<TARGET_OBJECTS:bytestring>
133 $<TARGET_OBJECTS:sha>
Adam Langleyc9eb7ea2014-08-22 11:06:14 -0700134 $<TARGET_OBJECTS:md4>
Adam Langley95c29f32014-06-20 12:00:00 -0700135 $<TARGET_OBJECTS:md5>
136 $<TARGET_OBJECTS:digest>
137 $<TARGET_OBJECTS:cipher>
138 $<TARGET_OBJECTS:modes>
139 $<TARGET_OBJECTS:aes>
140 $<TARGET_OBJECTS:des>
141 $<TARGET_OBJECTS:rc4>
142 $<TARGET_OBJECTS:conf>
Adam Langleyde0b2022014-06-20 12:00:00 -0700143 $<TARGET_OBJECTS:chacha>
144 $<TARGET_OBJECTS:poly1305>
Adam Langley95c29f32014-06-20 12:00:00 -0700145 $<TARGET_OBJECTS:buf>
146 $<TARGET_OBJECTS:bn>
147 $<TARGET_OBJECTS:bio>
148 $<TARGET_OBJECTS:rand>
149 $<TARGET_OBJECTS:obj>
150 $<TARGET_OBJECTS:asn1>
151 $<TARGET_OBJECTS:engine>
152 $<TARGET_OBJECTS:dh>
153 $<TARGET_OBJECTS:dsa>
154 $<TARGET_OBJECTS:rsa>
155 $<TARGET_OBJECTS:ec>
156 $<TARGET_OBJECTS:ecdh>
157 $<TARGET_OBJECTS:ecdsa>
158 $<TARGET_OBJECTS:hmac>
159 $<TARGET_OBJECTS:evp>
160 $<TARGET_OBJECTS:pem>
161 $<TARGET_OBJECTS:x509>
162 $<TARGET_OBJECTS:x509v3>
163 $<TARGET_OBJECTS:pkcs8>
164)
165
166perlasm(cpu-x86_64-asm.${ASM_EXT} cpu-x86_64-asm.pl)
167perlasm(cpu-x86-asm.${ASM_EXT} cpu-x86-asm.pl)