SCL_MODULE_NAME := scl
SCL_SRC_C := scl/source/memory.c scl/source/string.c
SCL_INCLUDE_DIRS := scl/include


### Build SCL library ##########################################################
LOCAL_NAME := $(SCL_MODULE_NAME)
LOCAL_INCLUDE_DIRS := $(SCL_INCLUDE_DIRS) multibuild/include/gp-api
LOCAL_SRC_C := $(SCL_SRC_C)

LOCAL_SRC_C-tbase := scl/arch/tbase/abort.c
LOCAL_CFLAGS := $(PA_GLOBAL_CFLAGS) -DNDEBUG
LOCAL_CFLAGS-tbase += -fsanitize=undefined-trap -fsanitize-undefined-trap-on-error

LOCAL_EXPORT_INCLUDE_DIRS := scl/include
LOCAL_EXPORT_CFLAGS-blowfish := -DSCL_ABORT\(\)=TEE_Panic\(0\)
LOCAL_EXPORT_CFLAGS-tbase := -DSCL_USE_ASSERT_H=0
include $(BUILD_TARGET_STATIC_LIBRARY)


### Build host SCL library for unit tests ######################################
LOCAL_NAME := $(SCL_MODULE_NAME)_unittests
LOCAL_INCLUDE_DIRS := $(SCL_INCLUDE_DIRS)
LOCAL_SRC_C := $(SCL_SRC_C)
LOCAL_CFLAGS := --coverage $(PA_GLOBAL_CFLAGS)

LOCAL_EXPORT_INCLUDE_DIRS := scl/include
include $(BUILD_HOST_LIBRARY)


### Build host SCL library #####################################################
LOCAL_NAME := $(SCL_MODULE_NAME)
LOCAL_INCLUDE_DIRS := $(SCL_INCLUDE_DIRS)
LOCAL_SRC_C := $(SCL_SRC_C)
LOCAL_CFLAGS := -DHAVE_CONFIG_H $(PA_GLOBAL_CFLAGS)

LOCAL_EXPORT_INCLUDE_DIRS := scl/include
include $(BUILD_HOST_LIBRARY)


### Build unit test for SCL ####################################################
LOCAL_NAME := unit_test_scl
LOCAL_SRC_CPP := scl/tests/scl_tests.cc
LOCAL_SRC_C := $(wildcard scl/tests/*.c)
LOCAL_CFLAGS := --coverage -DSTART_FUNC=1 $(PA_GLOBAL_CFLAGS)

LOCAL_STATIC_LIBRARIES := $(SCL_MODULE_NAME)_unittests gtest_main
LOCAL_LDFLAGS += -lstdc++ -lpthread --coverage
include $(BUILD_HOST)

.PHONY: _run_unit_test_scl
_run_unit_test_scl: unit_test_scl
	@GTEST_OUTPUT="xml:./out/host/unit_test_scl/unit_test_scl.xml" ./out/host/unit_test_scl/unit_test_scl

run_utests: _run_unit_test_scl
