# $(info within android.mk)

############################################################################
#
#  General rules to make and clean
#



############################################################################
############################################################################

# macro to define printf.  This macro needs to be able to handle
# backslash-escaped characters such as \t(tab), \n(newline),etc.
# "echo -e" handles this but certain shells such as dash (on ubuntu)
# don't handle the -e option in their builtin echo implementation.
# However, the printf builtin of these sh shells should work.
PRINTF:=printf

############################################################################
esc_dollar := \$$


############################################################################
# Original method using multiple echo statements separated by ';', but this 
# seemed much less efficient then putting it into one statement.  
# See second version below.
#define output_list
#$(foreach elem,$(call truncate,$1),$(PRINTF) "\t$(elem) \\" >> $2;) $(PRINTF) "\t$(lastword $1)\\n" >> $2
#endef



define output_list
  $(PRINTF) "$(foreach elem,$(call truncate,$1),\\t$(elem) \\\\\n) \\t$(lastword $1)\\n" >> $2
endef

define output_lib_list
  $(PRINTF) "$(foreach elem,$(call truncate,$1),\\tlib$(elem) \\\\\n) \\tlib$(lastword $1)\\n" >> $2
endef

define format_shared_lib_names
  $(subst -l,lib,$1)
endef

define convert_component_lib_makefile_name
  $(patsubst %,%/Android.mk,$(patsubst $(SRC_ROOT)/%,\$$(PV_TOP)/%,$1))
endef

define output_include_list
  $(PRINTF) "$(subst $(SPACE)include,include,$(foreach elem,$(call truncate,$(strip $1)),include $(call convert_component_lib_makefile_name,$(elem))\\n))include $(call convert_component_lib_makefile_name,$(lastword $(strip $1)))\\n" >> $2  
endef

define include_staticlibs_list
  $(if $(strip $(call remove_quotes,$1)),$(PRINTF) "$(foreach elem,$(strip $(call remove_quotes,$1)),include $(patsubst %,%/Android.mk,$(patsubst %,\$$(PV_TOP)%,$(call strip_two_levels_up,$(elem)/local.mk)))\n)" >> $2,)
endef

define output_assembly_srcs
  $(if $(strip $1),$(PRINTF) "ifeq (\$$(TARGET_ARCH),arm)\\nLOCAL_SRC_FILES += \\\\\n$(foreach elem,$(call truncate,$1),\\t$(elem) \\\\\n)\\t$(lastword $1)\\nendif\\n\\n" >> $2,)
endef

define extra_lib_list
  $(if $(strip $1),$(PRINTF) "\nLOCAL_WHOLE_STATIC_LIBRARIES += $1\n" >> $2,)
endef

define extra_include_list
  $(if $(strip $1),$(PRINTF) "$(foreach elem, $1,include $(patsubst %,%/Android.mk,$(patsubst %,\$$(PV_TOP)%,$(strip $(elem))))\n)" >> $2,)
endef

define is_prelinking_allowed
  $(if $(strip $1),,$(PRINTF) "\nLOCAL_PRELINK_MODULE := false\n" >> $2)
endef

############################################################################


include $(MK)/android_segments.mk

#############################################
#    Rules for aggregate makefiles
#
ifneq ($(AGGREGATE_LIBS_MAKEFILE),)

#### Start generation of aggregate makefiles #######
define create_aggregate_lib_android_mk
Android_$1.mk: FORCE
	$$(quiet) echo "LOCAL_PATH := $$(esc_dollar)(call my-dir)" > $$@
	$$(quiet) echo "include $$(esc_dollar)(CLEAR_VARS)" >> $$@
	$$(quiet) echo "" >> $$@
	$$(quiet) echo "LOCAL_WHOLE_STATIC_LIBRARIES := \\" >> $$@
	$$(quiet) $$(call output_lib_list,$$($1_CUMULATIVE_TARGET_LIST),$$@)
	$$(quiet) $$(call extra_lib_list, $$(EXTRA_LIBS_$1),$$@)
	$$(quiet) echo "" >> $$@
	$$(quiet) echo "LOCAL_MODULE := lib$1" >> $$@
	$$(quiet) $$(call is_prelinking_allowed,$$($1_PRELINK),$$@)
	$$(quiet) echo "" >> $$@
	$$(quiet) echo "-include $$(esc_dollar)(PV_TOP)/Android_platform_extras.mk" >> $$@
	$$(quiet) echo "" >> $$@
	$$(quiet) echo "-include $$(esc_dollar)(PV_TOP)/Android_system_extras.mk" >> $$@
	$$(quiet) echo "" >> $$@
	$$(quiet) echo "LOCAL_SHARED_LIBRARIES += $$(call format_shared_lib_names,$$(MODS_$1))" >> $$@
	$$(quiet) echo "" >> $$@
	$$(quiet) echo "include $$(esc_dollar)(BUILD_SHARED_LIBRARY)" >> $$@
	$$(quiet) $$(call output_include_list,$$($1_CUMULATIVE_MAKEFILES),$$@)
	$$(quiet) $$(call extra_include_list, $$(EXTRA_MAKEFILES_PATHS_$1),$$@)
	$$(quiet) echo "" >> $$@
endef

#### End generation of aggregate makefiles #######



#### Start generation of top level makefile #######

define include_module_mk_list
 $(PRINTF) "$(subst $(SPACE)include,include,$(foreach elem,$1,include \$$(PV_TOP)/build_config/opencore_dynamic/Android_$(elem).mk\n))" >> $2
endef

define include_test_mk_list
 $(PRINTF) "$(subst $(SPACE)include,include,$(foreach app,$(strip $(call remove_quotes,$(TESTAPPS))),include \$$(PV_TOP)$(strip $(call strip_two_levels_up,$(call remove_quotes,$(TESTAPP_DIR_$(app))/local.mk)))/Android.mk\n))" >> $1
endef

define create_toplevel_android_mk
$1: FORCE
	$$(quiet) echo "ifneq ($$(esc_dollar)(BUILD_WITHOUT_PV),true)" > $$@
	$$(quiet) echo "LOCAL_PATH := $$(esc_dollar)(call my-dir)" >> $$@
	$$(quiet) echo "PV_TOP := $$(esc_dollar)(LOCAL_PATH)" >> $$@
	$$(quiet) echo "include $$(esc_dollar)(CLEAR_VARS)" >> $$@
	$$(quiet) echo "" >> $$@
	$$(quiet) echo "PV_CFLAGS := -fvisibility=hidden -Wno-non-virtual-dtor -DENABLE_SHAREDFD_PLAYBACK -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DUSE_CML2_CONFIG" >> $$@
	$$(quiet) echo "" >> $$@
	$$(quiet) echo "ifeq ($$(esc_dollar)(ENABLE_PV_LOGGING),1)" >> $$@
	$$(quiet) echo " PV_CFLAGS += -DPVLOGGER_INST_LEVEL=5" >> $$@
	$$(quiet) echo "endif"  >> $$@
	$$(quiet) echo "" >> $$@
	$$(quiet) echo "ifeq ($$(esc_dollar)(TARGET_ARCH),arm)" >> $$@
	$$(quiet) echo "  PV_CFLAGS += -DPV_ARM_GCC_V5" >> $$@
	$$(quiet) echo "endif"  >> $$@
	$$(quiet) echo "" >> $$@
	$$(quiet) echo "include $$(esc_dollar)(CLEAR_VARS)" >> $$@
	$$(quiet) echo "" >> $$@
	$$(quiet) echo "FORMAT := android" >> $$@
	$$(quiet) echo "" >> $$@
	$$(quiet) echo "PV_COPY_HEADERS_TO := libpv" >> $$@
	$$(quiet) echo "" >> $$@
	$$(quiet) echo "PV_INCLUDES := \\" >> $$@
	$$(quiet) $(PRINTF) "\t$$(esc_dollar)(PV_TOP)/android \\\\\n" >> $$@
	$$(quiet) $(PRINTF) "\t$$(esc_dollar)(PV_TOP)/extern_libs_v2/khronos/openmax/include \\\\\n" >> $$@
	$$(quiet) $(PRINTF) "\t$$(esc_dollar)(PV_TOP)/engines/common/include \\\\\n" >> $$@
	$$(quiet) $(PRINTF) "\t$$(esc_dollar)(PV_TOP)/engines/player/config/android \\\\\n" >> $$@
	$$(quiet) $(PRINTF) "\t$$(esc_dollar)(PV_TOP)/engines/player/include \\\\\n" >> $$@
	$$(quiet) $(PRINTF) "\t$$(esc_dollar)(PV_TOP)/nodes/pvmediaoutputnode/include \\\\\n" >> $$@
	$$(quiet) $(PRINTF) "\t$$(esc_dollar)(PV_TOP)/nodes/pvdownloadmanagernode/config/opencore \\\\\n" >> $$@
	$$(quiet) $(PRINTF) "\t$$(esc_dollar)(PV_TOP)/pvmi/pvmf/include \\\\\n" >> $$@
	$$(quiet) $(PRINTF) "\t$$(esc_dollar)(PV_TOP)/fileformats/mp4/parser/config/opencore \\\\\n" >> $$@
	$$(quiet) $(PRINTF) "\t$$(esc_dollar)(PV_TOP)/oscl/oscl/config/android \\\\\n" >> $$@
	$$(quiet) $(PRINTF) "\t$$(esc_dollar)(PV_TOP)/oscl/oscl/config/shared \\\\\n" >> $$@
	$$(quiet) $(PRINTF) "\t$$(esc_dollar)(PV_TOP)/engines/author/include \\\\\n" >> $$@
	$$(quiet) $(PRINTF) "\t$$(esc_dollar)(PV_TOP)/android/drm/oma1/src \\\\\n" >> $$@
	$$(quiet) $(PRINTF) "\t$$(esc_dollar)(PV_TOP)/build_config/opencore_dynamic \\\\\n" >> $$@
	$$(quiet) $(PRINTF) "\t$$(esc_dollar)(TARGET_OUT_HEADERS)/$$(esc_dollar)(PV_COPY_HEADERS_TO)" >> $$@
	$$(quiet) echo "" >> $$@
	$$(quiet) echo "" >> $$@
	$$(quiet) echo "$$(esc_dollar)(call add-prebuilt-files, ETC, pvplayer.cfg)" >> $$@
	$$(quiet) echo "" >> $$@
	$$(quiet) $$(call include_module_mk_list,$2,$$@)
	$$(quiet) $$(call include_staticlibs_list,$$(LIBDIR_static),$$@)
	$$(quiet) $$(call include_test_mk_list,$$@)
	$$(quiet) echo "endif" >> $$@
endef
#### End generation of top level makefile #######


# loop over all the names in SHARED_LIB_TARGET_LIST and 
#  create the Android makefile name list.
#  Append top-level Android.mk
ANDROID_TOPLEVEL_MAKE_NAME := Android.mk
ANDROID_MAKE_NAMES := $(patsubst %,Android_%.mk,$(SHARED_LIB_TARGET_LIST)) $(ANDROID_TOPLEVEL_MAKE_NAME)

$(strip $(foreach lib,$(SHARED_LIB_TARGET_LIST),$(eval $(call create_aggregate_lib_android_mk,$(lib)))))

$(eval $(call create_toplevel_android_mk,$(ANDROID_TOPLEVEL_MAKE_NAME),$(SHARED_LIB_TARGET_LIST)))

android_clean: modulelevel_android_mk_clean toplevel_android_mk_clean

modulelevel_android_mk_clean: ANDROID_MAKE_FILES_TO_CLEAN := $(ANDROID_MAKE_NAMES) 
toplevel_android_mk_clean: ANDROID_MAKE_FILES_TO_CLEAN += $(ANDROID_TOPLEVEL_MAKE_NAME)

modulelevel_android_mk_clean: FORCE
	$(quiet) $(RM) $(ANDROID_MAKE_FILES_TO_CLEAN)

toplevel_android_mk_clean: FORCE
	$(quiet) $(RM) $(ANDROID_TOPLEVEL_MAKE_NAME)

#############################################
#    Rules for a single library makefile
#
else

ifeq ($(LOCAL_ANDROID_MK_PATH),)
  LOCAL_ANDROID_MK_PATH := $(patsubst /%,%,$(call strip_two_levels_up,$(subst $(SRC_ROOT),$$(SRC_ROOT),$(strip $(LOCAL_PATH)))/local.mk))
endif

CUMULATIVE_ANDROID_MK_PATH := $(CUMULATIVE_ANDROID_MK_PATH) $(LOCAL_ANDROID_MK_PATH)

define include_system_extras
  $(if $(strip $(filter $1,BUILD_EXECUTABLE)),$(PRINTF) "\n-include \$$(PV_TOP)/Android_system_extras.mk\n" >> $2,)
endef

#$(eval ANDROID_MAKE_NAMES := $(LOCAL_ANDROID_MK_PATH)/Android.mk)
ANDROID_MAKE_NAMES := $(LOCAL_PATH)/../../Android.mk

ANDROID_TMP_LOCAL_INC := $(subst $(SRC_ROOT),\$$(PV_TOP),$(LOCAL_TOTAL_INCDIRS)) \$$(PV_INCLUDES)

ANDROID_PATH_COMPONENTS := $(subst /, ,$(LOCAL_PATH))

AND_LOCAL_ARM_MODE := $(if $(strip $(filter codecs_v2,$(ANDROID_PATH_COMPONENTS))),LOCAL_ARM_MODE := arm,)

$(ANDROID_MAKE_NAMES): ANDROID_CPP_SRCS := $(if $(strip $(SRCS)),$(patsubst %,$(call go_up_two_levels,$(SRCDIR))/%,$(filter %.cpp,$(SRCS))),)
$(ANDROID_MAKE_NAMES): ANDROID_ASM_SRCS := $(if $(strip $(SRCS)),$(patsubst %,$(call go_up_two_levels,$(SRCDIR))/%,$(filter-out %.cpp,$(SRCS))),)
$(ANDROID_MAKE_NAMES): ANDROID_TARGET := $(if $(strip $(filter prog,$(TARGET_TYPE))),"LOCAL_MODULE :=" $(TARGET),$(if $(strip $(TARGET)),"LOCAL_MODULE :=" lib$(TARGET),))
$(ANDROID_MAKE_NAMES): ANDROID_HDRS := $(patsubst %,$(call go_up_two_levels,$(INCSRCDIR))/%,$(HDRS))
$(ANDROID_MAKE_NAMES): ANDROID_C_FLAGS := $(filter-out %PV_ARM_GCC_V5,$(XCPPFLAGS))
$(ANDROID_MAKE_NAMES): ANDROID_C_INC := $(ANDROID_TMP_LOCAL_INC)
$(ANDROID_MAKE_NAMES): ANDROID_ARM_MODE := $(AND_LOCAL_ARM_MODE)
$(ANDROID_MAKE_NAMES): ANDROID_MAKE_TYPE := $(if $(strip $(filter prog,$(TARGET_TYPE))),BUILD_EXECUTABLE,$(if $(strip $(SRCS)),BUILD_STATIC_LIBRARY,BUILD_COPY_HEADERS))
$(ANDROID_MAKE_NAMES): ANDROID_STATIC_LIBS := $(foreach library,$(LIBS),$(if $(findstring $(strip $(BUILD_ROOT)/installed_lib/$(BUILD_ARCH)/lib$(library)$(TARGET_NAME_SUFFIX).a), $(ALL_LIBS)),lib$(library),))
$(ANDROID_MAKE_NAMES): ANDROID_SHARED_LIBS := $(foreach library,$(LIBS),$(if $(findstring $(strip $(BUILD_ROOT)/installed_lib/$(BUILD_ARCH)/lib$(library)$(TARGET_NAME_SUFFIX).so), $(SHARED_LIB_FULLNAMES)),lib$(library),))

$(ANDROID_MAKE_NAMES): FORCE
	$(quiet) echo "LOCAL_PATH := \$$(call my-dir)" > $@
	$(quiet) echo "include \$$(CLEAR_VARS)" >> $@
	$(quiet) echo "" >> $@
	$(quiet) echo "LOCAL_SRC_FILES := \\" >> $@
	$(quiet) $(call output_list,$(ANDROID_CPP_SRCS),$@)
	$(quiet) echo "" >> $@
	$(quiet) $(call output_assembly_srcs,$(ANDROID_ASM_SRCS),$@)
	$(quiet) echo "" >> $@
	$(quiet) echo "$(ANDROID_TARGET)" >> $@
	$(quiet) echo "" >> $@
	$(quiet) echo "LOCAL_CFLAGS := $(ANDROID_C_FLAGS) \$$(PV_CFLAGS)" >> $@
	$(quiet) echo "" >> $@
	$(quiet) echo "$(ANDROID_ARM_MODE)" >> $@
	$(quiet) echo "" >> $@
	$(quiet) echo "LOCAL_STATIC_LIBRARIES := $(ANDROID_STATIC_LIBS)" >> $@
	$(quiet) echo "" >> $@
	$(quiet) echo "LOCAL_SHARED_LIBRARIES := $(ANDROID_SHARED_LIBS)" >> $@
	$(quiet) echo "" >> $@
	$(quiet) echo "LOCAL_C_INCLUDES := \\" >> $@
	$(quiet) $(call output_list,$(ANDROID_C_INC),$@)
	$(quiet) echo "" >> $@
	$(quiet) echo "LOCAL_COPY_HEADERS_TO := \$$(PV_COPY_HEADERS_TO)" >> $@
	$(quiet) echo "" >> $@
	$(quiet) echo "LOCAL_COPY_HEADERS := \\" >> $@
	$(quiet) $(call output_list,$(ANDROID_HDRS),$@)
	$(quiet) $(call include_system_extras,$(ANDROID_MAKE_TYPE),$@)
	$(quiet) echo "" >> $@
	$(quiet) echo "include \$$($(ANDROID_MAKE_TYPE))" >> $@

android_clean: $(LOCAL_PATH)_android_mk_clean

$(LOCAL_PATH)_android_mk_clean: ANDROID_MAKE_FILES_TO_CLEAN := $(ANDROID_MAKE_NAMES)

$(LOCAL_PATH)_android_mk_clean: FORCE
	$(quiet) $(RM) $(ANDROID_MAKE_FILES_TO_CLEAN)


endif


android_make: $(ANDROID_MAKE_NAMES)
CMD_COMPLETION_TARGETS += android_make android_clean

