1 # Build wrapper for libmd (https://git.hadrons.org/git/libmd.git), which is 2 # autotools-only. Compiles the hash implementations directly; the 3 # autotools config.h is replaced by a minimal one (the sources only use 4 # HAVE_UNISTD_H). 5 # 6 # helper.c is an autotools template: it is compiled once per algorithm 7 # with hashinc -> <algo>.h and HASH -> <ALGO> substituted (the same sed 8 # expansions as src/Makefile.am), producing the one-shot <ALGO>Data() 9 # convenience functions. 10 cmake_minimum_required(VERSION 3.13) 11 project(libmd C) 12 13 if(NOT LIBMD_SRC_DIR) 14 message(FATAL_ERROR "LIBMD_SRC_DIR must point at the libmd sources") 15 endif() 16 17 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) 18 19 set(_libmd_hdrs md2 md4 md5 rmd160 sha1 sha2 sha2 sha2) 20 set(_libmd_names MD2 MD4 MD5 RMD160 SHA1 SHA256 SHA384 SHA512) 21 set(_libmd_outs md2hl md4hl md5hl rmd160hl sha1hl sha256hl sha384hl sha512hl) 22 23 list(LENGTH _libmd_hdrs _libmd_n) 24 math(EXPR _libmd_n "${_libmd_n} - 1") 25 foreach(i RANGE ${_libmd_n}) 26 list(GET _libmd_hdrs ${i} _hdr) 27 list(GET _libmd_names ${i} _name) 28 list(GET _libmd_outs ${i} _out) 29 set(_sed -e "s/hashinc/${_hdr}.h/g" -e "s/HASH/${_name}/g") 30 if(_name MATCHES "^SHA[0-9]+$" AND NOT _name STREQUAL "SHA1") 31 list(APPEND _sed -e "s/SHA[0-9][0-9][0-9]_CTX/SHA2_CTX/g") 32 endif() 33 execute_process( 34 COMMAND sed ${_sed} ${LIBMD_SRC_DIR}/src/helper.c 35 OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_out}.c 36 ) 37 list(APPEND _libmd_generated ${CMAKE_CURRENT_BINARY_DIR}/${_out}.c) 38 endforeach() 39 40 add_library(md STATIC 41 ${LIBMD_SRC_DIR}/src/md2.c 42 ${LIBMD_SRC_DIR}/src/md4.c 43 ${LIBMD_SRC_DIR}/src/md5.c 44 ${LIBMD_SRC_DIR}/src/rmd160.c 45 ${LIBMD_SRC_DIR}/src/sha1.c 46 ${LIBMD_SRC_DIR}/src/sha2.c 47 ${_libmd_generated} 48 ) 49 50 target_include_directories(md PUBLIC 51 ${CMAKE_CURRENT_BINARY_DIR} 52 ${LIBMD_SRC_DIR}/include 53 ) 54 55 install(TARGETS md ARCHIVE DESTINATION lib) 56 install(DIRECTORY ${LIBMD_SRC_DIR}/include/ DESTINATION include)
This page was automatically generated by LXR 0.3.1. • OpenWrt