@ -30,38 +30,41 @@ check_PROGRAMS = \
# Basic includes
AM_CFLAGS = -I$( top_srcdir) /src -I$( top_srcdir) /lib -I$( top_srcdir) /tinycrypt/lib/include -I$( top_srcdir) /tinycrypt/lib/source
# TinyCrypt object files (in .objs directory)
# TinyCrypt source files
TINYCRYPT_SRCDIR = $( top_srcdir) /tinycrypt/lib/source
# TinyCrypt object files (with utun- prefix as built by automake)
TINYCRYPT_OBJS = \
$( TINYCRYPT_OBJDIR) /aes_encrypt.o \
$( TINYCRYPT_OBJDIR) /aes_decrypt.o \
$( TINYCRYPT_OBJDIR) /ccm_mode.o \
$( TINYCRYPT_OBJDIR) /cmac_mode.o \
$( TINYCRYPT_OBJDIR) /ctr_mode.o \
$( TINYCRYPT_OBJDIR) /ecc.o \
$( TINYCRYPT_OBJDIR) /ecc_dh.o \
$( TINYCRYPT_OBJDIR) /ecc_dsa.o \
$( TINYCRYPT_OBJDIR) /sha256.o \
$( TINYCRYPT_OBJDIR) /ecc_platform_specific.o \
$( TINYCRYPT_OBJDIR) /utils.o
$( TINYCRYPT_OBJDIR) /utun- aes_encrypt.o \
$( TINYCRYPT_OBJDIR) /utun- aes_decrypt.o \
$( TINYCRYPT_OBJDIR) /utun- ccm_mode.o \
$( TINYCRYPT_OBJDIR) /utun- cmac_mode.o \
$( TINYCRYPT_OBJDIR) /utun- ctr_mode.o \
$( TINYCRYPT_OBJDIR) /utun- ecc.o \
$( TINYCRYPT_OBJDIR) /utun- ecc_dh.o \
$( TINYCRYPT_OBJDIR) /utun- ecc_dsa.o \
$( TINYCRYPT_OBJDIR) /utun- sha256.o \
$( TINYCRYPT_OBJDIR) /utun- ecc_platform_specific.o \
$( TINYCRYPT_OBJDIR) /utun-ut ils.o
# Secure channel and CRC objects
SECURE_CHANNEL_OBJS = $( SRC_OBJDIR) /secure_channel.o $( SRC_OBJDIR) /crc32.o
SECURE_CHANNEL_OBJS = $( SRC_OBJDIR) /utun- secure_channel.o $( SRC_OBJDIR) /utun- crc32.o
# ETCP core objects
ETCP_CORE_OBJS = \
$( SRC_OBJDIR) /etcp.o \
$( SRC_OBJDIR) /etcp_connections.o \
$( SRC_OBJDIR) /etcp_loadbalancer.o \
$( SRC_OBJDIR) /pkt_normalizer.o
$( SRC_OBJDIR) /utun- etcp.o \
$( SRC_OBJDIR) /utun- etcp_connections.o \
$( SRC_OBJDIR) /utun- etcp_loadbalancer.o \
$( SRC_OBJDIR) /utun- pkt_normalizer.o
# Full ETCP objects
ETCP_FULL_OBJS = \
$( SRC_OBJDIR) /config_parser.o \
$( SRC_OBJDIR) /config_updater.o \
$( SRC_OBJDIR) /route_lib.o \
$( SRC_OBJDIR) /routing.o \
$( SRC_OBJDIR) /tun_if.o \
$( SRC_OBJDIR) /utun_instance.o \
$( SRC_OBJDIR) /utun- config_parser.o \
$( SRC_OBJDIR) /utun- config_updater.o \
$( SRC_OBJDIR) /utun- route_lib.o \
$( SRC_OBJDIR) /utun- routing.o \
$( SRC_OBJDIR) /utun- tun_if.o \
$( SRC_OBJDIR) /utun-utun _instance.o \
$( ETCP_CORE_OBJS)
# Common libraries
@ -70,13 +73,41 @@ COMMON_LIBS = $(top_builddir)/lib/libuasync.a -lpthread
# Crypto libraries (conditional)
i f U S E _ O P E N S S L
CRYPTO_LIBS = -lcrypto
TINYCRYPT_BUILT =
e l s e
CRYPTO_LIBS = $( TINYCRYPT_OBJS)
TINYCRYPT_BUILT = tinycrypt-objects
e n d i f
# Register tests
TESTS = $( check_PROGRAMS)
# Build TinyCrypt objects as a group
tinycrypt-objects : $( TINYCRYPT_OBJS )
# Explicit rules for TinyCrypt objects - NOTE: no newlines in recipe
$(TINYCRYPT_OBJDIR)/utun-aes_encrypt.o : $( TINYCRYPT_SRCDIR ) /aes_encrypt .c ; @$( MKDIR_P ) $( TINYCRYPT_OBJDIR ) ; $( AM_V_CC ) $( COMPILE ) -c -o $@ $<
$(TINYCRYPT_OBJDIR)/utun-aes_decrypt.o : $( TINYCRYPT_SRCDIR ) /aes_decrypt .c ; @$( MKDIR_P ) $( TINYCRYPT_OBJDIR ) ; $( AM_V_CC ) $( COMPILE ) -c -o $@ $<
$(TINYCRYPT_OBJDIR)/utun-ccm_mode.o : $( TINYCRYPT_SRCDIR ) /ccm_mode .c ; @$( MKDIR_P ) $( TINYCRYPT_OBJDIR ) ; $( AM_V_CC ) $( COMPILE ) -c -o $@ $<
$(TINYCRYPT_OBJDIR)/utun-cmac_mode.o : $( TINYCRYPT_SRCDIR ) /cmac_mode .c ; @$( MKDIR_P ) $( TINYCRYPT_OBJDIR ) ; $( AM_V_CC ) $( COMPILE ) -c -o $@ $<
$(TINYCRYPT_OBJDIR)/utun-ctr_mode.o : $( TINYCRYPT_SRCDIR ) /ctr_mode .c ; @$( MKDIR_P ) $( TINYCRYPT_OBJDIR ) ; $( AM_V_CC ) $( COMPILE ) -c -o $@ $<
$(TINYCRYPT_OBJDIR)/utun-ecc.o : $( TINYCRYPT_SRCDIR ) /ecc .c ; @$( MKDIR_P ) $( TINYCRYPT_OBJDIR ) ; $( AM_V_CC ) $( COMPILE ) -c -o $@ $<
$(TINYCRYPT_OBJDIR)/utun-ecc_dh.o : $( TINYCRYPT_SRCDIR ) /ecc_dh .c ; @$( MKDIR_P ) $( TINYCRYPT_OBJDIR ) ; $( AM_V_CC ) $( COMPILE ) -c -o $@ $<
$(TINYCRYPT_OBJDIR)/utun-ecc_dsa.o : $( TINYCRYPT_SRCDIR ) /ecc_dsa .c ; @$( MKDIR_P ) $( TINYCRYPT_OBJDIR ) ; $( AM_V_CC ) $( COMPILE ) -c -o $@ $<
$(TINYCRYPT_OBJDIR)/utun-sha256.o : $( TINYCRYPT_SRCDIR ) /sha 256.c ; @$( MKDIR_P ) $( TINYCRYPT_OBJDIR ) ; $( AM_V_CC ) $( COMPILE ) -c -o $@ $<
$(TINYCRYPT_OBJDIR)/utun-ecc_platform_specific.o : $( TINYCRYPT_SRCDIR ) /ecc_platform_specific .c ; @$( MKDIR_P ) $( TINYCRYPT_OBJDIR ) ; $( AM_V_CC ) $( COMPILE ) -c -o $@ $<
$(TINYCRYPT_OBJDIR)/utun-utils.o : $( TINYCRYPT_SRCDIR ) /utils .c ; @$( MKDIR_P ) $( TINYCRYPT_OBJDIR ) ; $( AM_V_CC ) $( COMPILE ) -c -o $@ $<
# Test definitions with standard automake variables
test_etcp_crypto_SOURCES = test_etcp_crypto.c
test_etcp_crypto_CFLAGS = -I$( top_srcdir) /src -I$( top_srcdir) /lib -I$( top_srcdir) /tinycrypt/lib/include -I$( top_srcdir) /tinycrypt/lib/source
@ -108,7 +139,7 @@ test_pkt_normalizer_etcp_LDADD = $(ETCP_FULL_OBJS) $(SECURE_CHANNEL_OBJS) $(CRYP
test_pkt_normalizer_standalone_SOURCES = test_pkt_normalizer_standalone.c
test_pkt_normalizer_standalone_CFLAGS = -I$( top_srcdir) /src -I$( top_srcdir) /lib -I$( top_srcdir) /tinycrypt/lib/include -I$( top_srcdir) /tinycrypt/lib/source
test_pkt_normalizer_standalone_LDADD = $( SRC_OBJDIR) /pkt_normalizer.o $( SRC_OBJDIR) /route_lib.o $( SRC_OBJDIR) /routing.o $( TINYCRYPT_OBJS) $( COMMON_LIBS)
test_pkt_normalizer_standalone_LDADD = $( SRC_OBJDIR) /utun- pkt_normalizer.o $( SRC_OBJDIR) /utun- route_lib.o $( SRC_OBJDIR) /utun- routing.o $( TINYCRYPT_OBJS) $( COMMON_LIBS)
test_ll_queue_SOURCES = test_ll_queue.c
test_ll_queue_CFLAGS = -I$( top_srcdir) /src -I$( top_srcdir) /lib
@ -144,7 +175,7 @@ test_debug_categories_LDADD = $(COMMON_LIBS)
test_config_debug_SOURCES = test_config_debug.c
test_config_debug_CFLAGS = -I$( top_srcdir) /src -I$( top_srcdir) /lib
test_config_debug_LDADD = $( SRC_OBJDIR) /config_parser.o $( COMMON_LIBS)
test_config_debug_LDADD = $( SRC_OBJDIR) /utun- config_parser.o $( COMMON_LIBS)
bench_timeout_heap_SOURCES = bench_timeout_heap.c
bench_timeout_heap_CFLAGS = -I$( top_srcdir) /lib
@ -154,6 +185,9 @@ bench_uasync_timeouts_SOURCES = bench_uasync_timeouts.c
bench_uasync_timeouts_CFLAGS = -I$( top_srcdir) /lib
bench_uasync_timeouts_LDADD = $( COMMON_LIBS)
# Build tinycrypt objects before tests that need them
BUILT_SOURCES = $( TINYCRYPT_BUILT)
# After building tests, move their object files to shadow directory
all-local : shadow -test -objects