From eabbb5eb368df3ff606a472bd96a4a4077a214d8 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sun, 3 Nov 2013 03:34:00 +0100 Subject: Improve build system for ciphers and MACs as well --- src/crypto/mac/CMakeLists.txt | 56 ++++++++++++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 16 deletions(-) (limited to 'src/crypto/mac/CMakeLists.txt') diff --git a/src/crypto/mac/CMakeLists.txt b/src/crypto/mac/CMakeLists.txt index 7f8664c..eb3c903 100644 --- a/src/crypto/mac/CMakeLists.txt +++ b/src/crypto/mac/CMakeLists.txt @@ -1,34 +1,58 @@ -set(MACS "") +add_library(macs STATIC "${CMAKE_CURRENT_BINARY_DIR}/macs.c") -if(WITH_MAC_GHASH) - list(APPEND MACS ghash) -endif(WITH_MAC_GHASH) +function(fastd_mac name) + string(REPLACE - _ name_ "${name}") + string(TOUPPER "${name_}" NAME) + + set(WITH_MAC_${NAME} TRUE CACHE BOOL "Include the ${name} MAC") + + if(WITH_MAC_${NAME}) + set_property(GLOBAL APPEND PROPERTY FASTD_MACS ${name}) + endif(WITH_MAC_${NAME}) +endfunction(fastd_mac) + + +macro(fastd_mac_impl mac name) + string(REPLACE - _ mac_ "${mac}") + string(TOUPPER "${mac_}" MAC) + + set_property(GLOBAL APPEND PROPERTY FASTD_MAC_${MAC}_IMPLS ${name}) + + fastd_module(mac "MAC implementation" "${mac} ${name}" ${ARGN}) +endmacro(fastd_mac_impl) + +macro(fastd_mac_impl_include_directories mac name) + fastd_module_include_directories(mac "${mac} ${name}" ${ARGN}) +endmacro(fastd_mac_impl_include_directories) + +macro(fastd_mac_impl_link_libraries mac name) + fastd_module_link_libraries(mac "${mac} ${name}" ${ARGN}) +endmacro(fastd_mac_impl_link_libraries) + + +add_subdirectory(ghash) -set(MAC_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/macs.c") set(MAC_DEFINITIONS "") set(MAC_IMPLS "") set(MAC_LIST "") +get_property(MACS GLOBAL PROPERTY FASTD_MACS) foreach(mac ${MACS}) - add_subdirectory(${mac}) - - list(APPEND MAC_SOURCES ${IMPL_SOURCES}) + string(REPLACE - _ mac_ "${mac}") + string(TOUPPER "${mac_}" MAC) - set(MAC_LIST "${MAC_LIST}\n{\"${MAC_NAME}\", mac_${mac}_impls},") - set(MAC_IMPLS "${MAC_IMPLS}\nstatic const fastd_mac_t *const mac_${mac}_impls[] = {") + set(MAC_LIST "${MAC_LIST}\n{\"${mac}\", mac_${mac_}_impls},") + set(MAC_IMPLS "${MAC_IMPLS}\nstatic const fastd_mac_t *const mac_${mac_}_impls[] = {") + get_property(IMPLS GLOBAL PROPERTY FASTD_MAC_${MAC}_IMPLS) foreach(impl ${IMPLS}) - set(MAC_DEFINITIONS "${MAC_DEFINITIONS}\nextern const fastd_mac_t fastd_mac_${mac}_${impl};") - set(MAC_IMPLS "${MAC_IMPLS}&fastd_mac_${mac}_${impl}, ") + set(MAC_DEFINITIONS "${MAC_DEFINITIONS}\nextern const fastd_mac_t fastd_mac_${mac_}_${impl};") + set(MAC_IMPLS "${MAC_IMPLS}&fastd_mac_${mac_}_${impl}, ") endforeach(impl) set(MAC_IMPLS "${MAC_IMPLS}NULL};") endforeach(mac) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/macs.c.in ${CMAKE_CURRENT_BINARY_DIR}/macs.c) - - -set(MAC_SOURCES "${MAC_SOURCES}" PARENT_SCOPE) -- cgit v1.2.3