### Prebuilt SCrypto libraries #################################################
LOCAL_NAME := scrypto
LOCAL_EXPORT_LIBRARY-sm7250 := $(realpath thirdparty/scrypto25/scrypto_v2.5_x64_qsee_release.a)
LOCAL_EXPORT_LIBRARY-sm7250_32 := $(realpath thirdparty/scrypto25/scrypto_v2.5_x32_qsee_release.a)
LOCAL_EXPORT_LIBRARY-sm8150 := $(realpath thirdparty/scrypto/scrypto_v2.4_x64_qsee_release.a)
LOCAL_EXPORT_LIBRARY-sm8150_32 := $(realpath thirdparty/scrypto/scrypto_v2.4_x32_qsee_release.a)
LOCAL_EXPORT_LIBRARY-sm8250 := $(realpath thirdparty/scrypto25/scrypto_v2.5_x64_qsee_release.a)
LOCAL_EXPORT_LIBRARY-sm8250_32 := $(realpath thirdparty/scrypto25/scrypto_v2.5_x32_qsee_release.a)
LOCAL_EXPORT_INCLUDE_DIRS :=
LOCAL_EXPORT_INCLUDE_DIRS-sm7250 := thirdparty/scrypto25/include
LOCAL_EXPORT_INCLUDE_DIRS-sm7250_32 := thirdparty/scrypto25/include
LOCAL_EXPORT_INCLUDE_DIRS-sm8150 := thirdparty/scrypto/include
LOCAL_EXPORT_INCLUDE_DIRS-sm8150_32 := thirdparty/scrypto/include
LOCAL_EXPORT_INCLUDE_DIRS-sm8250 := thirdparty/scrypto25/include
LOCAL_EXPORT_INCLUDE_DIRS-sm8250_32 := thirdparty/scrypto25/include
LOCAL_EXPORT_CFLAGS-sm7250 := -DUSE_SCRYPTO_VER2_4
LOCAL_EXPORT_CFLAGS-sm7250_32 := -DUSE_SCRYPTO_VER2_4
LOCAL_EXPORT_CFLAGS-sm8150 := -DUSE_SCRYPTO_VER2_4
LOCAL_EXPORT_CFLAGS-sm8150_32 := -DUSE_SCRYPTO_VER2_4
LOCAL_EXPORT_CFLAGS-sm8250 := -DUSE_SCRYPTO_VER2_4
LOCAL_EXPORT_CFLAGS-sm8250_32 := -DUSE_SCRYPTO_VER2_4

include $(PREBUILT_TARGET_STATIC_LIBRARY)

### Build PA driver ############################################################
LOCAL_NAME := proca

LOCAL_UUID :=
LOCAL_UUID-tbase := $(CONFIG_TBASE_PA_DRIVER_UUID)
LOCAL_UUID-blowfish := $(CONFIG_TEEGRIS_PA_DRIVER_UUID)
LOCAL_UUID-teegris := $(CONFIG_TEEGRIS_PA_DRIVER_UUID)
LOCAL_UUID-qsee := $(CONFIG_QSEE_PA_DRIVER_UUID)

# tbase part
LOCAL_DRIVER_ID-tbase := $(CONFIG_TBASE_DRIVER_ID)
LOCAL_API_LEVEL-exynos7570 := $(CONFIG_TBASE_DRIVER_API_LEVEL)
LOCAL_API_LEVEL-exynos7870 := $(CONFIG_TBASE_DRIVER_API_LEVEL)
LOCAL_API_LEVEL-exynos7885 := $(CONFIG_TBASE_DRIVER_API_LEVEL)
LOCAL_API_LEVEL-exynos9810 := $(CONFIG_TBASE_DRIVER_API_LEVEL)
LOCAL_API_LEVEL-mt6768 := $(CONFIG_TBASE_DRIVER_API_LEVEL)
LOCAL_API_LEVEL-exynos9810-500 := 11

# qsee part
LOCAL_DRIVER_ID-qsee := ProcessAuthenticator
LOCAL_QSEE_PRIVILEGES-msm8998 := RTIC
LOCAL_QSEE_PRIVILEGES-sdm450 := RTIC
LOCAL_QSEE_PRIVILEGES-sdm660 := RTIC
LOCAL_QSEE_PRIVILEGES-sdm710 := WhitelistBypass
LOCAL_QSEE_PRIVILEGES-sm6150 := WhitelistBypass
LOCAL_QSEE_PRIVILEGES-sm7150 := WhitelistBypass
LOCAL_QSEE_PRIVILEGES-sm7250 := WhitelistBypass
LOCAL_QSEE_PRIVILEGES-sm8150 := WhitelistBypass
LOCAL_QSEE_PRIVILEGES-sdm845 := WhitelistBypass
LOCAL_QSEE_PRIVILEGES-sm8250 := WhitelistBypass
LOCAL_QSEE_ACCEPT_BUFFER_SIZE := 819200

# blowfish part
LOCAL_GROUP_ID := samsung_drv

LOCAL_SRC_C := $(wildcard pa_tz_drv/src/*.c)

LOCAL_SRC_C-tbase := $(wildcard pa_tz_drv/arch/dr_tbase_*.c)
LOCAL_SRC_C-blowfish := $(wildcard pa_tz_drv/arch/dr_bf*.c)
LOCAL_SRC_C-teegris := $(wildcard pa_tz_drv/arch/dr_bf*.c)
LOCAL_SRC_C-qsee := pa_tz_drv/arch/dr_qsee_main.c \
                    pa_tz_drv/arch/dr_qsee_whitelist.c \
                    pa_tz_drv/arch/dr_qsee_mem.c \
                    pa_tz_drv/arch/dr_qsee_device_compromised.c \
                    pa_tz_drv/arch/dr_log_kmsg.c

LOCAL_SRC_C-sdm845 += pa_tz_drv/arch/dr_qsee_cached_map.c
LOCAL_SRC_C-sdm845_32 += pa_tz_drv/arch/dr_qsee_cached_map.c
LOCAL_SRC_C-msm8998 += pa_tz_drv/arch/dr_qsee_noncached_map.c
LOCAL_SRC_C-sdm450 += pa_tz_drv/arch/dr_qsee_noncached_map.c
LOCAL_SRC_C-sdm660 += pa_tz_drv/arch/dr_qsee_noncached_map.c
LOCAL_SRC_C-sdm710 += pa_tz_drv/arch/dr_qsee_cached_map.c
LOCAL_SRC_C-sm6150 += pa_tz_drv/arch/dr_qsee_cached_map.c
LOCAL_SRC_C-sm7150 += pa_tz_drv/arch/dr_qsee_cached_map.c
LOCAL_SRC_C-sm7250 += pa_tz_drv/arch/dr_qsee_cached_map.c
LOCAL_SRC_C-sm7250_32 += pa_tz_drv/arch/dr_qsee_cached_map.c
LOCAL_SRC_C-sm8150 += pa_tz_drv/arch/dr_qsee_cached_map.c
LOCAL_SRC_C-sm8150_32 += pa_tz_drv/arch/dr_qsee_cached_map.c
LOCAL_SRC_C-sm8250 += pa_tz_drv/arch/dr_qsee_cached_map.c
LOCAL_SRC_C-sm8250_32 += pa_tz_drv/arch/dr_qsee_cached_map.c

LOCAL_SRC_C-exynos7570 += pa_tz_drv/arch/dr_kernel_exynos_3xx.c
LOCAL_SRC_C-exynos7570-tbase += pa_tz_drv/arch/dr_exynos_tbase_device_compromised.c
LOCAL_SRC_C-exynos7870 += pa_tz_drv/arch/dr_kernel_exynos_3xx.c
LOCAL_SRC_C-exynos7870-tbase += pa_tz_drv/arch/dr_exynos_tbase_device_compromised.c
LOCAL_SRC_C-exynos7885 += pa_tz_drv/arch/dr_kernel_exynos_4xx.c
LOCAL_SRC_C-exynos7885-tbase += pa_tz_drv/arch/dr_exynos_tbase_device_compromised.c
LOCAL_SRC_C-exynos7904 += pa_tz_drv/arch/dr_kernel_exynos_4xx.c
LOCAL_SRC_C-exynos9610 += pa_tz_drv/arch/dr_kernel_exynos_4xx.c
LOCAL_SRC_C-exynos9810 += pa_tz_drv/arch/dr_kernel_exynos_4xx.c \
                      pa_tz_drv/arch/dr_exynos_tbase_device_compromised.c
LOCAL_SRC_C-mt6768 += pa_tz_drv/arch/dr_kernel_mt6768.c \
                      pa_tz_drv/arch/dr_mtk_tbase_device_compromised.c
LOCAL_SRC_C-exynos9810-500 += pa_tz_drv/arch/dr_kernel_exynos_4xx.c \
                      pa_tz_drv/arch/dr_exynos_tbase_device_compromised.c
LOCAL_SRC_C-exynos9820 += pa_tz_drv/arch/dr_kernel_exynos_4xx.c
LOCAL_SRC_C-exynos9830 += pa_tz_drv/arch/dr_kernel_exynos_4xx.c
LOCAL_SRC_C-exynos9630 += pa_tz_drv/arch/dr_kernel_exynos_4xx.c
LOCAL_SRC_C-sdm845 += pa_tz_drv/arch/dr_kernel_qsee.c
LOCAL_SRC_C-sdm845_32 += pa_tz_drv/arch/dr_kernel_qsee.c
LOCAL_SRC_C-sdm660 += pa_tz_drv/arch/dr_kernel_qsee.c
LOCAL_SRC_C-sdm710 += pa_tz_drv/arch/dr_kernel_qsee.c
LOCAL_SRC_C-sm6150 += pa_tz_drv/arch/dr_kernel_qsee.c
LOCAL_SRC_C-sm7150 += pa_tz_drv/arch/dr_kernel_qsee.c
LOCAL_SRC_C-sm8150 += pa_tz_drv/arch/dr_kernel_qsee.c
LOCAL_SRC_C-sm8150_32 += pa_tz_drv/arch/dr_kernel_qsee.c

LOCAL_SRC_C-msm8998 += pa_tz_drv/arch/dr_kernel_msm8998.c
LOCAL_SRC_C-sdm450 += pa_tz_drv/arch/dr_kernel_sdm450.c
LOCAL_SRC_C-sm7250 += pa_tz_drv/arch/dr_kernel_sm7250.c
LOCAL_SRC_C-sm7250_32 += pa_tz_drv/arch/dr_kernel_sm7250.c
LOCAL_SRC_C-sm8250 += pa_tz_drv/arch/dr_kernel_sm8250.c
LOCAL_SRC_C-sm8250_32 += pa_tz_drv/arch/dr_kernel_sm8250.c

LOCAL_INCLUDE_DIRS := pa_tz_drv/include pa_tz_drv/arch pa_tz_drv/src \
                      pa_tz_lib/include pa_nwd_lib/include

LOCAL_STATIC_LIBRARIES := asn1proto scl scrypto
LOCAL_LINK_GP_TEE := y

LOCAL_IMPRINT_TOOL-sm7250 := $(realpath thirdparty/scrypto25/imprint256)
LOCAL_IMPRINT_TOOL-sm7250_32 := $(realpath thirdparty/scrypto25/imprint256)
LOCAL_IMPRINT_TOOL-sm8150 := $(realpath thirdparty/scrypto/imprint)
LOCAL_IMPRINT_TOOL-sm8150_32 := $(realpath thirdparty/scrypto/imprint)
LOCAL_IMPRINT_TOOL-sm8250 := $(realpath thirdparty/scrypto25/imprint256)
LOCAL_IMPRINT_TOOL-sm8250_32 := $(realpath thirdparty/scrypto25/imprint256)

LOCAL_FIPS_CRYPTO-sm7250 := y
LOCAL_FIPS_CRYPTO-sm7250_32 := y
LOCAL_FIPS_CRYPTO-sm8150 := y
LOCAL_FIPS_CRYPTO-sm8150_32 := y
LOCAL_FIPS_CRYPTO-sm8250 := y
LOCAL_FIPS_CRYPTO-sm8250_32 := y

DRV_NAME := "PA_Driver"
LOCAL_CFLAGS := $(PA_GLOBAL_CFLAGS) -DPLATFORM_LOG_TAG=\"PA_TZ_DRV\"
LOCAL_CFLAGS-tbase := -Werror -std=c11 -DVERSION_NAME=\"$(DRV_NAME),t-base\"
LOCAL_CFLAGS-tbase += -fsanitize=undefined-trap -fsanitize-undefined-trap-on-error
LOCAL_CFLAGS-blowfish := -Werror -std=c11 -DVERSION_NAME=\"$(DRV_NAME),blowfish\"
LOCAL_CFLAGS-teegris := -Werror -std=c11 -DVERSION_NAME=\"$(DRV_NAME),teegris\"
LOCAL_CFLAGS-qsee := -DDRIVER_ID=$(CONFIG_QSEE_DRIVER_ID) -DVERSION_NAME=\"$(DRV_NAME),qsee\"
LOCAL_CFLAGS-sdm710 := -DPRINT_KERNLOG
LOCAL_CFLAGS-sdm845 := -DPRINT_KERNLOG
LOCAL_CFLAGS-sm6150 := -DPRINT_KERNLOG
LOCAL_CFLAGS-sm7150 := -DPRINT_KERNLOG
LOCAL_CFLAGS-sm7250 := -DPRINT_KERNLOG
LOCAL_CFLAGS-sm7250_32 := -DPRINT_KERNLOG
LOCAL_CFLAGS-sm8150 := -DPRINT_KERNLOG
LOCAL_CFLAGS-sm8150_32 := -DPRINT_KERNLOG
LOCAL_CFLAGS-sm8250 := -DPRINT_KERNLOG
LOCAL_CFLAGS-sm8250_32 := -DPRINT_KERNLOG

# ReadOemBuffer is deprecated since Kinibi500
LOCAL_CFLAGS-exynos9810-500 += -Wno-deprecated-declarations

LOCAL_SHRINK_PROTOCOL_BUFFER := y

include $(BUILD_TARGET_TRUSTLET)

### Sign PA driver ##########################################################
LOCAL_NAME := proca

LOCAL_UUID :=
LOCAL_UUID-tbase := $(CONFIG_TBASE_PA_DRIVER_UUID)
LOCAL_UUID-blowfish := $(CONFIG_TEEGRIS_PA_DRIVER_UUID)
LOCAL_UUID-teegris := $(CONFIG_TEEGRIS_PA_DRIVER_UUID)
LOCAL_UUID-qsee := $(CONFIG_QSEE_PA_DRIVER_UUID)

# tbase part
LOCAL_DRIVER_ID := $(CONFIG_TBASE_DRIVER_ID)
LOCAL_INTERFACE_VERSION := 1.2
LOCAL_API_LEVEL := $(CONFIG_TBASE_DRIVER_API_LEVEL)
LOCAL_HEAP_SIZE_INIT := 40960
LOCAL_HEAP_SIZE_MAX := 81920
include $(SIGN_TARGET)

### Build UnitTests for PA TZ DRV ##############################################
include pa_tz_drv/tests/unit_tests.mk
