LOCAL_PATH := $(call my-dir)
ifeq ($(TW_INCLUDE_CRYPTO), true)
include $(CLEAR_VARS)

LOCAL_MODULE := libcryptfsfde
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := cryptfs.cpp
LOCAL_SHARED_LIBRARIES := libcrypto libhardware libcutils libstdc++
LOCAL_STATIC_LIBRARIES := libscrypttwrp_static
LOCAL_C_INCLUDES := external/openssl/include $(commands_recovery_local_path)/crypto/scrypt/lib/crypto
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
    LOCAL_C_INCLUDES += bionic external/stlport/stlport
    LOCAL_SHARED_LIBRARIES += libstlport
    LOCAL_CPPFLAGS := -std=c++11
endif

LOCAL_C_INCLUDES += $(commands_TWRP_local_path)/crypto/fscrypt

ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 26; echo $$?),0)
    #8.0 or higher
    LOCAL_C_INCLUDES +=  external/boringssl/src/include
    ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 29; echo $$?),0)
        LOCAL_SHARED_LIBRARIES += libtwrpfscrypt
    else
        LOCAL_SHARED_LIBRARIES += libe4crypt
    endif
    LOCAL_SHARED_LIBRARIES += libselinux libc libc++ libbase libcrypto libcutils libkeymaster_messages libhardware libprotobuf-cpp-lite \
        android.hardware.keymaster@3.0 libkeystore_binder libhidlbase libutils libbinder
    ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 28; echo $$?),0)
        #9.0 rules
        LOCAL_CFLAGS += -Wno-unused-variable -Wno-sign-compare -Wno-unused-parameter -Wno-comment
        LOCAL_SHARED_LIBRARIES += android.hardware.keymaster@4.0 libkeymaster4support libkeyutils
        LOCAL_CFLAGS += -DTW_KEYMASTER_MAX_API=4
    else
        #8.x rules
        ifneq ($(wildcard system/core/libkeyutils/Android.bp),)
            #only present in some 8.0 trees and should be in all 8.1 trees
            LOCAL_SHARED_LIBRARIES += libkeyutils
        endif
        LOCAL_SHARED_LIBRARIES += libsoftkeymaster
        LOCAL_CFLAGS += -DTW_KEYMASTER_MAX_API=3
    endif
else
    # <= 7.x rules
    ifneq ($(wildcard hardware/libhardware/include/hardware/keymaster0.h),)
        LOCAL_C_INCLUDES +=  external/boringssl/src/include
        LOCAL_CFLAGS += -DTW_KEYMASTER_MAX_API=1
    else
        LOCAL_CFLAGS += -DTW_KEYMASTER_MAX_API=0
    endif
endif
ifeq ($(TARGET_HW_DISK_ENCRYPTION),true)
    ifeq ($(TARGET_CRYPTFS_HW_PATH),)
        LOCAL_C_INCLUDES += device/qcom/common/cryptfs_hw
    else
        LOCAL_C_INCLUDES += $(TARGET_CRYPTFS_HW_PATH)
    endif
    LOCAL_SHARED_LIBRARIES += libcryptfs_hw
    LOCAL_CFLAGS += -DCONFIG_HW_DISK_ENCRYPTION
endif

include $(BUILD_SHARED_LIBRARY)



include $(CLEAR_VARS)
LOCAL_MODULE := twrpdec
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/
LOCAL_SRC_FILES := main.cpp cryptfs.cpp
LOCAL_SHARED_LIBRARIES := libcrypto libhardware libcutils libc libstdc++
LOCAL_C_INCLUDES := external/openssl/include $(commands_recovery_local_path)/crypto/scrypt/lib/crypto
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
    LOCAL_C_INCLUDES += bionic external/stlport/stlport
    LOCAL_SHARED_LIBRARIES += libstlport
    LOCAL_CPPFLAGS := -std=c++11
endif

ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 26; echo $$?),0)
    #8.0 or higher
    LOCAL_C_INCLUDES +=  external/boringssl/src/include
    ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 29; echo $$?),0)
        LOCAL_SHARED_LIBRARIES += libtwrpfscrypt
    else
        LOCAL_SHARED_LIBRARIES += libe4crypt
    endif
    LOCAL_SHARED_LIBRARIES += libselinux libc libc++ libbase libcrypto libcutils libkeymaster_messages libhardware libprotobuf-cpp-lite \
    android.hardware.keymaster@3.0 libkeystore_binder libhidlbase libutils libbinder
    ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 28; echo $$?),0)
        #9.0 rules
        LOCAL_CFLAGS += -Wno-unused-variable -Wno-sign-compare -Wno-unused-parameter -Wno-comment
        LOCAL_SHARED_LIBRARIES += android.hardware.keymaster@4.0 libkeymaster4support libkeyutils
        LOCAL_CFLAGS += -DTW_KEYMASTER_MAX_API=4
    else
        #8.x rules
        ifneq ($(wildcard system/core/libkeyutils/Android.bp),)
            #only present in some 8.0 trees and should be in all 8.1 trees
            LOCAL_SHARED_LIBRARIES += libkeyutils
        endif
        LOCAL_SHARED_LIBRARIES += libsoftkeymaster
        LOCAL_CFLAGS += -DTW_KEYMASTER_MAX_API=3
    endif
else
    # <= 7.x rules
    ifneq ($(wildcard hardware/libhardware/include/hardware/keymaster0.h),)
        LOCAL_C_INCLUDES +=  external/boringssl/src/include
        LOCAL_CFLAGS += -DTW_KEYMASTER_MAX_API=1
    else
        LOCAL_CFLAGS += -DTW_KEYMASTER_MAX_API=0
    endif
endif
ifeq ($(TARGET_HW_DISK_ENCRYPTION),true)
    ifeq ($(TARGET_CRYPTFS_HW_PATH),)
        LOCAL_C_INCLUDES += device/qcom/common/cryptfs_hw
    else
        LOCAL_C_INCLUDES += $(TARGET_CRYPTFS_HW_PATH)
    endif
    LOCAL_SHARED_LIBRARIES += libcryptfs_hw
    LOCAL_CFLAGS += -DCONFIG_HW_DISK_ENCRYPTION
endif

LOCAL_WHOLE_STATIC_LIBRARIES += libscrypttwrp_static
include $(BUILD_EXECUTABLE)

endif
