Files
mars-matrixssl/core/unit_tests/GNUmakefile
Janne Johansson 69b5f2c6c3 MatrixSSL 4.5.1
2022-07-29 12:30:12 +03:00

65 lines
2.0 KiB
Makefile

#
# Makefile for unit testing applications.
#
# Copyright (c) 2018 Rambus Inc. All Rights Reserved.
#
#
ifeq ($(wildcard Makefile),)
# Source library files (detect automatically)
LIB_C:=$(wildcard lib_*.c)
LIB_CC:=$(wildcard lib_*.cc)
ifneq '$(LIB_C) $(LIB_CC)' ' '
LIB_TEST_COMMON=libtest_common_s.a
noinst_LIBRARIES=libtest_common_s.a
libtest_common_s_a_SOURCES=$(LIB_C) $(LIB_CC)
libtest_common_s_a_API=core testsupp
endif
# Source files (detect automatically)
# All sources depend on and include libtest_common_s.a
TESTS_C:=$(patsubst %.c,%,$(wildcard test_*.c))
TESTS_CC:=$(patsubst %.cc,%,$(wildcard test_*.cc))
EXTRA_PROGRAMS = $(TESTS_C) $(TESTS_CC)
$(foreach test,$(TESTS_C),$(eval $(test)_SOURCES = $(test:%=%.c)))
$(foreach test,$(TESTS_C),$(eval $(test)_CFLAGS = -g))
$(foreach test,$(TESTS_C),$(eval $(test)_LDFLAGS = -g))
$(foreach test,$(TESTS_C),$(eval $(test)_API = test_common core testsupp))
ifneq '$(LIB_C) $(LIB_CC)' ' '
$(foreach test,$(TESTS_C),$(eval $(test): libtest_common_s.a))
endif
$(foreach test,$(TESTS_CC),$(eval $(test)_SOURCES = $(test:%=%.cc)))
$(foreach test,$(TESTS_CC),$(eval $(test)_CPPFLAGS = -g))
$(foreach test,$(TESTS_CC),$(eval $(test)_LDFLAGS = -g))
$(foreach test,$(TESTS_CC),$(eval $(test)_API = test_common core testsupp))
ifneq '$(LIB_C) $(LIB_CC)' ' '
$(foreach test,$(TESTS_CC),$(eval $(test): libtest_common_s.a))
endif
CFLAGS_STANDARD=-std=c99
# API spec for common testing aid library.
test_common_API_CFLAGS:=
test_common_API_CXXFLAGS:=
test_common_API_LIBADD=$(LIB_TEST_COMMON)
# Construct build rules using makefiles/rules.mk
CORE_DIR=../../core
include $(CORE_DIR)/makefiles/rules.mk
$(foreach test,$(TESTS_C),$(eval $(test:%=check_%): $(test); ./$(test)))
$(foreach test,$(TESTS_CC),$(eval $(test:%=check_%): $(test); ./$(test)))
check: $(TESTS_C:%=check_%) $(TESTS_CC:%=check_%)
else
# Makefile exists. Let it override this build file.
# (Note: This modifies priority of make built-in lookup priority.)
# This rule will allow the user to override this GNUmakefile with
# build rules from eg. cmake.
include Makefile
endif