LOCAL_PATH := $(call my-dir)

# Build shared library
include $(CLEAR_VARS)

LOCAL_MODULE := libtar
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := append.c block.c decode.c encode.c extract.c handle.c output.c util.c wrapper.c basename.c strmode.c libtar_hash.c libtar_list.c dirname.c android_utils.c
LOCAL_C_INCLUDES += $(LOCAL_PATH) \
                    external/zlib
LOCAL_SHARED_LIBRARIES += libz libc

LOCAL_C_INCLUDES += external/libselinux/include
LOCAL_SHARED_LIBRARIES += libselinux

ifeq ($(TW_INCLUDE_CRYPTO_FBE), true)
    LOCAL_STATIC_LIBRARIES += libvold libscrypt_static
    LOCAL_SHARED_LIBRARIES +=  \
        android.hardware.boot@1.0 \
        android.hardware.confirmationui@1.0 \
        android.hardware.gatekeeper@1.0 \
        android.hardware.keymaster@3.0 \
        android.hardware.keymaster@4.0 \
        android.hardware.keymaster@4.1 \
        android.hardware.weaver@1.0 \
        android.security.apc-ndk  \
        android.system.keystore2-V1-ndk \
        android.security.authorization-ndk \
        android.security.maintenance-ndk \
        libkeystoreinfo \
        libselinux \
        libbinder_ndk \
        libext4_utils \
        libbase \
        libcrypto \
        libcutils \
        libf2fs_sparseblock \
        libkeymaster_messages \
        libkeymint_support \
        libkeystore-attestation-application-id \
        libhardware \
        libprotobuf-cpp-lite \
        libfscrypttwrp \
        libhidlbase \
        libutils \
        libbinder \
        libfs_mgr \
        libkeymaster4support \
        libkeymaster4_1support \
        libf2fs_sparseblock \
        libkeyutils \
        liblog \
        libhwbinder \
        libchrome \
        libbootloader_message \
        libgatekeeper_aidl

    LOCAL_CFLAGS += -DUSE_FSCRYPT
    ifeq ($(TW_USE_FSCRYPT_POLICY), 1)
        LOCAL_CFLAGS += -DUSE_FSCRYPT_POLICY_V1
    else
        LOCAL_CFLAGS += -DUSE_FSCRYPT_POLICY_V2
    endif
    LOCAL_C_INCLUDES += system/vold
endif

ifeq ($(TW_LIBTAR_DEBUG),true)
    LOCAL_CFLAGS += -DTW_LIBTAR_DEBUG
endif

include $(BUILD_SHARED_LIBRARY)

# Build static library
include $(CLEAR_VARS)

LOCAL_MODULE := libtar_static
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := append.c block.c decode.c encode.c extract.c handle.c output.c util.c wrapper.c basename.c strmode.c libtar_hash.c libtar_list.c dirname.c android_utils.c
LOCAL_C_INCLUDES += $(LOCAL_PATH) \
                    external/zlib
LOCAL_STATIC_LIBRARIES += libz libc

LOCAL_C_INCLUDES += external/libselinux/include
LOCAL_STATIC_LIBRARIES += libselinux

ifeq ($(TW_INCLUDE_CRYPTO_FBE), true)
    LOCAL_CFLAGS += -DUSE_FSCRYPT
    LOCAL_C_INCLUDES += system/vold
endif

ifeq ($(TW_LIBTAR_DEBUG),true)
    LOCAL_CFLAGS += -DTW_LIBTAR_DEBUG
endif

include $(BUILD_STATIC_LIBRARY)
