1include_directories(. ../include) 2 3if(APPLE) 4 set(PERLASM_STYLE macosx) 5 set(ASM_EXT S) 6 enable_language(ASM) 7elseif(UNIX) 8 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) 69add_subdirectory(base64) 70add_subdirectory(bytestring) 71 72# Level 0.2 - depends on nothing but itself 73add_subdirectory(sha) 74add_subdirectory(md4) 75add_subdirectory(md5) 76add_subdirectory(modes) 77add_subdirectory(aes) 78add_subdirectory(des) 79add_subdirectory(rc4) 80add_subdirectory(conf) 81add_subdirectory(chacha) 82add_subdirectory(poly1305) 83 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 116 crypto.c 117 crypto_error.c 118 mem.c 119 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> 131 $<TARGET_OBJECTS:base64> 132 $<TARGET_OBJECTS:bytestring> 133 $<TARGET_OBJECTS:sha> 134 $<TARGET_OBJECTS:md4> 135 $<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> 143 $<TARGET_OBJECTS:chacha> 144 $<TARGET_OBJECTS:poly1305> 145 $<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) 168