# Copyright 2013 Google Inc.  All Rights Reserved.

LOCAL_PATH:= $(call my-dir)

# If USE_VENDOR_NSS is defined as true in a <product>.mk file, the "nss" module
# must be defined elsewhere. If not true, build the module below.
ifneq ($(USE_VENDOR_NSS),true)

# arm64 term is different in/out of NSS.
# Eureka uses arm64; NSS uses aarch64. Convert it to NSS tradition.
TARGET_ARCH_NSS := $(TARGET_ARCH)
ifeq ($(TARGET_ARCH),arm64)
  TARGET_ARCH_NSS = aarch64
endif
NSS_PREBUILT_DIR := $(LOCAL_PATH)/prebuilt/$(TARGET_ARCH_NSS)/$(TARGET_ARCH_VARIANT)/files

ifeq ($(wildcard $(NSS_PREBUILT_DIR)/*),)
$(error Prebuilt NSS does not exist, please add prebuilts)
endif

include $(CLEAR_VARS)
LOCAL_MODULE := nss
LOCAL_MODULE_TAGS := optional
LOCAL_REQUIRED_MODULES := acp
include $(BUILD_PHONY_PACKAGE)

NSS_PREBUILT_LIB_DIR := $(NSS_PREBUILT_DIR)/usr/lib
NSS_LIBS := $(shell find $(NSS_PREBUILT_LIB_DIR) -name "*.so" \
	-printf "%f\n")

NSS_SYMBOL_PATH := $(TARGET_OUT_UNSTRIPPED)/system/lib
NSS_LIB_PATH := $(TARGET_OUT)/lib

.PHONY: nss_prebuilt_copy
nss_prebuilt_copy:
	# Copy to the sysroot
	mkdir -p $(NSS_SYMBOL_PATH) $(NSS_LIB_PATH)
	# avoid race condition creating directory (b/74438929)
	mkdir -p $(TARGET_OUT_TOOLCHAIN)
	rsync -a $(NSS_PREBUILT_DIR)/ $(TARGET_OUT_TOOLCHAIN)
	rsync -a $(NSS_PREBUILT_LIB_DIR)/ $(NSS_SYMBOL_PATH)
	for lib in $(NSS_LIBS); do \
		$(TARGET_STRIP) $(NSS_PREBUILT_LIB_DIR)/$$lib \
			-o $(NSS_LIB_PATH)/$$lib ; \
	done

$(LOCAL_BUILT_MODULE): nss_prebuilt_copy

endif  # ifneq ($(USE_VENDOR_NSS),true)
