### Build pa_tz_api library ####################################################
LOCAL_NAME := pa_tz_api
LOCAL_API_LEVEL := $(CONFIG_TBASE_DRIVER_API_LEVEL)

LOCAL_SRC_C :=  $(wildcard pa_tz_lib/src/*.c) \
                      multibuild/source/gp-api/log_utils/log_utils.c

LOCAL_SRC_C-tbase := pa_tz_lib/arch/pa_tbase_api.c \
                      multibuild/source/gp-api/tee/tbase/tee_sys.c \
                      multibuild/source/gp-api/tee/tbase/tees_log.c

LOCAL_SRC_C-blowfish := pa_tz_lib/arch/pa_blowfish_api.c \
                      multibuild/source/gp-api/tee/blowfish/tees_log.c

LOCAL_SRC_C-teegris := pa_tz_lib/arch/pa_blowfish_api.c \
                      multibuild/source/gp-api/tee/blowfish/tees_log.c

LOCAL_SRC_C-qsee := pa_tz_lib/arch/pa_qsee_api.c \
                      multibuild/source/gp-api/tee/qsee/tee_sys.c \
                      multibuild/source/gp-api/tee/qsee/tees_log.c 

LOCAL_INCLUDE_DIRS := pa_tz_lib/include pa_tz_lib/arch pa_tz_drv/include \
                      pa_tz_drv/src pa_nwd_lib/include \
                      multibuild/include/gp-mb \
                      multibuild/source/gp-api/log_utils

LOCAL_INCLUDE_DIRS-tbase := multibuild/include/gp-api \
                      multibuild/include/gp-ext

LOCAL_INCLUDE_DIRS-qsee := multibuild/include/gp-api \
                      multibuild/include/gp-ext

# Note (IM 12/12/2016): scl/arch/blowfish/include-fixed is necessary here to be
# included BEFORE system blowfish includes. If it is included into
# LOCAL_EXPORT_CFLAGS of scl module, then scl/arch/blowfish/include-fixed will
# be included after system blowfish includes and the necessary declarations will
# not be found. This workaroud is necessary due to Blowfish SDK issue, which is
# reported and will be fixed in the upcoming Blowfish SDK release. Please remove
# it once the mentioned SDK is released.
LOCAL_INCLUDE_DIRS-blowfish := \
                      scl/arch/blowfish/include-fixed \
                      multibuild/source/gp-api/prop/tee/non-blowfish-include

LOCAL_INCLUDE_DIRS-teegris := \
                      scl/arch/blowfish/include-fixed \
                      multibuild/source/gp-api/prop/tee/non-blowfish-include

LOCAL_STATIC_LIBRARIES := asn1proto scl

TZ_LIB_NAME := "PA_TZ_lib"
LOCAL_CFLAGS := -DPLATFORM_LOG_TAG=\"PA_TZ_LIB\" $(PA_GLOBAL_CFLAGS)
LOCAL_CFLAGS-tbase := -DDRIVER_ID=$(CONFIG_TBASE_DRIVER_ID)
LOCAL_CFLAGS-tbase += -Werror -std=c11 -DVERSION_NAME=\"$(TZ_LIB_NAME),t-base\"
LOCAL_CFLAGS-tbase += -fsanitize=undefined-trap -fsanitize-undefined-trap-on-error
LOCAL_CFLAGS-blowfish := -DDRIVER_ID=$(CONFIG_TBASE_DRIVER_ID)
LOCAL_CFLAGS-blowfish += -Werror -std=c11 -DVERSION_NAME=\"$(TZ_LIB_NAME),blowfish\"
LOCAL_CFLAGS-teegris := -DDRIVER_ID=$(CONFIG_TBASE_DRIVER_ID)
LOCAL_CFLAGS-teegris += -Werror -std=c11 -DVERSION_NAME=\"$(TZ_LIB_NAME),teegris\"
LOCAL_CFLAGS-qsee := -DDRIVER_ID=$(CONFIG_QSEE_DRIVER_ID)
LOCAL_CFLAGS-qsee += -DVERSION_NAME=\"$(TZ_LIB_NAME),qsee\"
include $(BUILD_TARGET_STATIC_LIBRARY)

### Build PA TZ API UnitTests ##################################################
LOCAL_SRC_C := pa_tz_lib/src/pa_tz_api.c
LOCAL_SRC_CPP := pa_tz_lib/tests/PaTzAuthenticateUnitTests.cc \
                 pa_tz_lib/tests/PaTzRulesUnitTests.cc \
                 scl/source/string.cpp
LOCAL_INCLUDE := pa_nwd_lib/include \
                 pa_tz_lib/include pa_tz_lib/arch \
                 pa_tz_drv/include pa_tz_drv/src \
                 scl/include

$(call build_unit_tests, unit_test_pa_tz_api)

### Build PA TZ LIB UnitTests for pa_tz_internal.c #############################
LOCAL_SRC_C   := pa_tz_lib/src/pa_tz_internal.c
LOCAL_SRC_CPP := pa_tz_lib/tests/PaTzInternalUnitTests.cc
LOCAL_INCLUDE := pa_tz_lib/src

$(call build_unit_tests, unit_test_pa_tz_internal)

### Build PA TZ LIB UnitTests for pa_tz_nwd_task_api.c #########################
LOCAL_SRC_C   := pa_tz_lib/src/pa_tz_nwd_task_api.c
LOCAL_SRC_CPP := pa_tz_lib/tests/PaTzNwdTaskApiUnitTests.cc
LOCAL_INCLUDE := pa_tz_lib/arch/ pa_tz_lib/src

$(call build_unit_tests, unit_test_pa_tz_nwd_task_api)
