
include tools_path.mak

# Edit below file to change default build options
include vision_apps_build_flags.mak

# Additional make targets to build various related components
ifeq ($(RTOS_SDK),pdk)
include makerules/makefile_pdk.mak
else
include makerules/makefile_mcu_plus_sdk.mak
endif
include makerules/makefile_tidl_mmalib.mak
include makerules/makefile_tiovx_ptk_imaging_remote_device.mak
include makerules/makefile_test_data.mak
include makerules/makefile_linux_arm.mak
include makerules/makefile_help.mak
include makerules/makefile_config.mak
include makerules/makefile_tiadalg.mak
include makerules/makefile_check_paths.mak
include makerules/makefile_qnx.mak
include makerules/makefile_sbl.mak
include makerules/makefile_ethfw.mak
include makerules/makefile_ipk.mak
include makerules/makefile_uboot.mak
include makerules/makefile_sbl_combined_appimage.mak
include makerules/makefile_vision_apps.mak

# Set Variables for SOC specific rule dependencies used in make rules below
ifeq ($(SOC), $(filter $(SOC), j721e j721s2 j784s4))
SOC_VARIABLE_RULES=tiadalg qnx
SOC_VARIABLE_CLEAN=tiadalg_clean qnx_clean
SOC_VARIABLE_SCRUB=tiadalg_scrub qnx_scrub
SOC_VARIABLE_DOCS=tiadalg_docs
else ifeq ($(SOC),am62a)
SOC_VARIABLE_RULES=
SOC_VARIABLE_CLEAN=
SOC_VARIABLE_SCRUB=
SOC_VARIABLE_DOCS=
endif

ifeq ($(BUILD_PTK),yes)
SOC_VARIABLE_RULES += ptk
SOC_VARIABLE_CLEAN += ptk_clean
SOC_VARIABLE_SCRUB += ptk_scrub
SOC_VARIABLE_DOCS  += ptk_docs
endif

sdk: sdk_check_paths rtos_sdk app_utils imaging video_io vxlib tiovx tidl_lib tidl_tiovx_kernels $(SOC_VARIABLE_RULES)
ifeq ($(BUILD_ENABLE_ETHFW),yes)
	$(MAKE) ethfw
endif
	$(MAKE) vision_apps
	$(MAKE) tidl_rt
ifeq ($(BUILD_CPU_MCU1_0),yes)
	$(MAKE) uboot
endif

sdk_clean: sdk_check_paths rtos_sdk_clean app_utils_clean imaging_clean video_io_clean vxlib_clean tiovx_clean tidl_lib_clean tidl_tiovx_kernels_clean tidl_rt_clean vision_apps_clean sbl_bootimage_clean $(SOC_VARIABLE_CLEAN)
ifeq ($(BUILD_ENABLE_ETHFW),yes)
	$(MAKE) ethfw_clean
endif
ifeq ($(BUILD_CPU_MCU1_0),yes)
	$(MAKE) uboot_clean
endif

sdk_scrub: sdk_check_paths rtos_sdk_scrub app_utils_scrub imaging_scrub video_io_scrub vxlib_scrub tiovx_scrub tidl_lib_scrub tidl_tiovx_kernels_scrub tidl_rt_scrub vision_apps_scrub sbl_bootimage_scrub $(SOC_VARIABLE_SCRUB)
ifeq ($(BUILD_ENABLE_ETHFW),yes)
	$(MAKE) ethfw_scrub
endif
ifeq ($(BUILD_CPU_MCU1_0),yes)
	$(MAKE) uboot_clean
endif

sdk_docs: sdk_check_paths tiovx_docs vision_apps_docs $(SOC_VARIABLE_DOCS)
	$(MAKE) -C $(PSDK_PATH)/psdk_rtos sphinx_docs

#KW build: Split the build into two - components which need not be part of
# SDK KW report as the report for these components are separately delivered
# Build it first and the use "kw_build" target for KW inject
kw_pre_build: rtos_sdk

kw_build: sdk

#RTOS build: invokes pdk or mcu_plus_sdk

ifeq ($(RTOS_SDK),pdk)
rtos_sdk:pdk vhwa
rtos_sdk_clean:pdk_clean vhwa_clean
rtos_sdk_scrub:pdk_scrub vhwa_clean
else
rtos_sdk:mcu_plus_sdk
rtos_sdk_clean:mcu_plus_sdk_clean
rtos_sdk_scrub:mcu_plus_sdk_scrub
endif
