# 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)

NSS_PREBUILT_DIR := $(LOCAL_PATH)/prebuilt/$(TARGET_ARCH)/$(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)
