#
# In Samsung Ukraine R&D Center (SRK) under a contract between
# LLC "Samsung Electronics Ukraine Company" (Kyiv, Ukraine)
# and "Samsung Electronics Co", Ltd (Seoul, Republic of Korea)
# Copyright: (c) Samsung Electronics Co, Ltd 2017. All rights reserved.
#

#
# The file contains list of sources and compilation flags
# to build <boringSSL> module for any platform
#

CONFIG_BORINGSSL_SRC := \
    $(CONFIG_BORINGSSL_DIR)/crypto/mem.c \
    $(CONFIG_BORINGSSL_DIR)/crypto/refcount_lock.c \
    $(CONFIG_BORINGSSL_DIR)/crypto/ex_data.c \
    $(CONFIG_BORINGSSL_DIR)/crypto/thread_none.c \
        \
    $(CONFIG_BORINGSSL_DIR)/crypto/dh/dh.c \
    $(CONFIG_BORINGSSL_DIR)/crypto/dh/check.c \
    $(CONFIG_BORINGSSL_DIR)/crypto/buf/buf.c \
    $(CONFIG_BORINGSSL_DIR)/crypto/err/err.c \
    $(CONFIG_BORINGSSL_DIR)/crypto/ecdh/ecdh.c \
    $(CONFIG_BORINGSSL_DIR)/crypto/stack/stack.c \
    $(CONFIG_BORINGSSL_DIR)/crypto/bytestring/cbs.c \
    $(CONFIG_BORINGSSL_DIR)/crypto/bytestring/cbb.c \
    $(CONFIG_BORINGSSL_DIR)/crypto/fipsmodule/bcm.c \
    $(CONFIG_BORINGSSL_DIR)/crypto/bn_extra/convert.c \
    $(CONFIG_BORINGSSL_DIR)/crypto/engine/engine.c \
    $(CONFIG_BORINGSSL_DIR)/crypto/rand_extra/forkunsafe.c \
    $(CONFIG_BORINGSSL_DIR)/crypto/fiat/p256.c

# file: base.h, OPENSSL_VERSION_NUMBER 0x1010007f
CONFIG_PREBUILT_SSL_VERSION := ssl_version_0x1010007f

# Public includes for WSMv3 and WSMv2
# WSMv2 has sub folder inside folder 'include' but wsmv3 don't have public folder
# if add both folder it's cause build issue for QSEE
LOCAL_PUBLIC_INC := $(dir $(wildcard $(CONFIG_ROOT_DIR)/include/*/))

CONFIG_BORINGSSL_INCLUDES := \
    $(CONFIG_$(CONFIG_MODULE_MALLOC_WRAPPER)_INCLUDE_DIRS) \
        \
    $(CONFIG_BORINGSSL_DIR) \
    $(CONFIG_BORINGSSL_DIR)/crypto \
    $(CONFIG_BORINGSSL_DIR)/crypto/fipsmodule \
        \
    $(CONFIG_COMMON_SWD_DIR) \
    $(CONFIG_COMMON_SRC_DIR)/include \
    $(CONFIG_COMMON_SRC_DIR)/random \
    $(LOCAL_PUBLIC_INC)

# strip dublicated includes
CONFIG_BORINGSSL_INCLUDES := $(sort $(CONFIG_BORINGSSL_INCLUDES))


CONFIG_BORINGSSL_LDFLAGS :=

CONFIG_BORINGSSL_FLAGS := \
    -D__FILENAME__=\"\" \
    -DUSE_BORINGSSL \
    -DOPENSSL_NO_ASM \
         \
    -DNDEBUG \
        \
    -DBORINGSSL_NO_CXX \
    -DBORINGSSL_IMPLEMENTATION \
    -DGETPID_IS_MEANINGLESS \
    -DOPENSSL_STATIC_ARMCAP \
    -DOPENSSL_STATIC_ARMCAP_NEON \
    -DOPENSSL_STATIC_ARMCAP_AES \
    -DOPENSSL_STATIC_ARMCAP_SHA1 \
    -DOPENSSL_STATIC_ARMCAP_SHA256 \
    -DOPENSSL_STATIC_ARMCAP_PMULL \
    -DSAMSUNG_VNDK_EXT \
    -DOPENSSL_NO_FP_API \
    -DOPENSSL_NO_THREADS


#
# NWd flags
#
# '-std=c99' - error: 'for' loop initial declarations are only allowed in C99 or C11 mode
# '-w'       - disable all warning for boringssl
CONFIG_BORINGSSL_FLAGS_NWD := \
    $(CONFIG_BORINGSSL_FLAGS) -w -std=c99


#
# SWd flags
#
CONFIG_BORINGSSL_FLAGS_SWD := \
    $(CONFIG_BORINGSSL_FLAGS) \
    $(CONFIG_CFLAGS_TZ)

ifneq (,$(or $(findstring sm6150,$(SWD_CHIP)),$(findstring sm8150,$(SWD_CHIP)),$(findstring msm8976,$(SWD_CHIP)),$(findstring bf_,$(SWD_CHIP))))
    CONFIG_BORINGSSL_FLAGS_SWD += -w
else
    CONFIG_BORINGSSL_FLAGS_SWD += -W
endif

ifeq ($(SWD_CHIP),$(CONFIG_MODULE_WSM_HOST_TA))
    CONFIG_BORINGSSL_FLAGS_SWD += -DWSM_FUZZING
endif

#
# iOS flags
#
CONFIG_BORINGSSL_FLAGS_IOS := \
    $(CONFIG_BORINGSSL_FLAGS)
