• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/ucode/cmake/deps/libmd/CMakeLists.txt

  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