BCM_DRIVERS_SITE=repo://vendor/broadcom/drivers
BCM_DRIVERS_INSTALL_STAGING=YES
BCM_DRIVERS_INSTALL_TARGET=YES
BCM_DRIVERS_DEPENDENCIES=linux google_platform libusb-compat

# TODO(apenwarr): Remove the old moca1 stuff after we fully move to moca2.
ifeq ($(BR2_PACKAGE_BCM_DRIVER_MOCA),y)
INSTALL_MOCA_UTILS=y
define BCM_DRIVERS_BUILD_MOCA
	$(TARGET_MAKE_ENV) $(MAKE1) \
		CROSS=$(TARGET_CROSS) \
		CC="$(TARGET_CC)" \
		EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
		EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
		LINUXDIR="$(LINUX_DIR)" \
		ARCH="$(KERNEL_ARCH)" \
		-C $(@D)/moca/
endef

define BCM_DRIVERS_INSTALL_STAGING_MOCA
	$(INSTALL) -m 0644 \
		$(@D)/moca/lib/libmoca.a \
		$(@D)/moca/util/libmocactl.a \
		$(STAGING_DIR)/usr/lib/
	$(INSTALL) -d -m 0755 \
		$(STAGING_DIR)/usr/include/moca
	rm -f $(STAGING_DIR)/usr/include/moca/linux/bmoca.h
	cp -r $(@D)/moca/include/. $(STAGING_DIR)/usr/include/moca
endef

define BCM_DRIVERS_INSTALL_TARGET_MOCA
	rm -f $(TARGET_DIR)/bin/mocap $(TARGET_DIR)/bin/mocareg
	$(INSTALL) -d -m 0755 \
		$(TARGET_DIR)/etc/moca \
		$(TARGET_DIR)/usr/lib/modules
	$(INSTALL) -m 0755 \
		$(@D)/moca/bin/mocad \
		$(@D)/moca/bin/mocactl \
		$(TARGET_DIR)/bin/
	$(INSTALL) -m 0644 \
		$(@D)/moca/mocacore-*.bin \
		$(TARGET_DIR)/etc/moca/
endef
endif  # MOCA1

ifeq ($(BR2_PACKAGE_BCM_DRIVER_MOCA2),y)
INSTALL_MOCA_UTILS=y
define BCM_DRIVERS_BUILD_MOCA
	$(TARGET_MAKE_ENV) $(MAKE1) \
		CROSS=$(TARGET_CROSS) \
		CC="$(TARGET_CC)" \
		EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
		EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
		LINUXDIR="$(LINUX_DIR)" \
		ARCH="$(KERNEL_ARCH)" \
		-C $(@D)/moca2/
	cd $(@D)/google/py_moca2 && \
		PYTHONPATH=$(TARGET_PYTHONPATH) \
		CC="$(TARGET_CC)" \
		LD="$(TARGET_LD)" \
		LDSHARED="$(TARGET_CC) -shared" \
		CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include/python2.7 \
		    -I$(@D)/moca2/lib -L$(@D)/moca2/bin " \
		$(HOST_DIR)/usr/bin/python setup.py build
	cd $(@D)/google/moca2json && \
		HOSTDIR=$(HOST_DIR) \
		DESTDIR=$(TARGET_DIR) \
		CFLAGS="$(TARGET_CFLAGS) -I$(@D)/moca2/lib -L$(@D)/moca2/bin " \
		CROSS_COMPILE=$(TARGET_CROSS) \
		$(MAKE)
endef

define BCM_DRIVERS_TEST_CMDS_MOCA
	cd $(@D)/google/moca2json && \
		HOSTDIR=$(HOST_DIR) \
		DESTDIR=$(TARGET_DIR) \
		CFLAGS="$(TARGET_CFLAGS) -I$(@D)/moca2/lib -L$(@D)/moca2/bin " \
		CROSS_COMPILE=$(TARGET_CROSS) \
		$(MAKE) test
endef

define BCM_DRIVERS_INSTALL_STAGING_MOCA
	$(INSTALL) -m 0644 \
		$(@D)/moca2/bin/libmoca.so \
		$(@D)/moca2/bin/libmocacli.so \
		$(STAGING_DIR)/usr/lib/
	$(INSTALL) -d -m 0755 \
		$(STAGING_DIR)/usr/include/moca
	rm -f $(STAGING_DIR)/usr/include/moca/linux/bmoca.h
	cp -r $(@D)/moca2/include/. $(STAGING_DIR)/usr/include/moca
endef

ifneq ($(BR2_mipsel),y)
define BCM_DRIVERS_INSTALL_MOCAREG
	# TODO(apenwarr): "mips" is a poor stand-in for "SoC w/ non-SPI MoCA"
	$(INSTALL) -m 0755 \
		$(@D)/moca2/bin/mocareg \
		$(TARGET_DIR)/bin/
endef
else
define BCM_DRIVERS_INSTALL_MOCAREG
	rm -f $(TARGET_DIR)/bin/mocareg
endef
endif

define BCM_DRIVERS_INSTALL_TARGET_MOCA
	rm -f $(TARGET_DIR)/bin/mocactl
	$(INSTALL) -d -m 0755 \
		$(TARGET_DIR)/etc/moca \
		$(TARGET_DIR)/usr/lib/modules
	$(INSTALL) -m 0755 \
		$(@D)/moca2/bin/mocad \
		$(@D)/moca2/bin/mocap \
		$(TARGET_DIR)/bin/
	$(BCM_DRIVERS_INSTALL_MOCAREG)
	$(INSTALL) -m 0644 \
		$(@D)/moca2/moca20core-*.bin \
		$(TARGET_DIR)/etc/moca/
	$(INSTALL) -m 0755 \
		$(@D)/moca2/bin/*.so \
		$(TARGET_DIR)/usr/lib/
	cd $(@D)/google/py_moca2 && \
        $(TOPDIR)/support/scripts/simple_lock create $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages/easy-install.pth && \
		PYTHONPATH=$(TARGET_PYTHONPATH) \
		$(HOST_DIR)/usr/bin/python setup.py install \
			--prefix=$(TARGET_DIR)/usr && \
		$(TOPDIR)/support/scripts/simple_lock remove $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages/easy-install.pth
	$(INSTALL) -m 0755 \
	    $(@D)/google/moca2json/moca2json \
	    $(TARGET_DIR)/bin/
endef
endif  # MOCA2

ifeq ($(INSTALL_MOCA_UTILS),y)
define BCM_DRIVERS_INSTALL_TARGET_MOCA_COMMON
    $(INSTALL) -m 0755 package/bcm_drivers/moca_utils/* $(TARGET_DIR)/bin/
endef
endif

ifeq ($(BR2_PACKAGE_BCM_DRIVER_WIFI),y)

# NOTE(apenwarr): this could also be set to 'nodebug'.
#  But I don't know what difference that makes.
WIFI_CONFIG_PREFIX=debug

ifeq ($(BR2_PACKAGE_BCM_DRIVER_WIFI_USB),y)
BCM_MAKE_TARGETS=mipsel-mips-high
BCM_MAKE_EXTRA=BCM_EXTERNAL_MODULE=1 BRAND=external BCMEMBEDIMAGE=1
define BCM_DRIVERS_BUILD_WIFI_USB_UTILS
	$(TARGET_MAKE_ENV) $(MAKE1) \
		STBLINUX=1 \
		LINUXDIR="$(LINUX_DIR)" \
		LD="$(TARGET_LD)" \
		CC="$(TARGET_CC)" \
		AR="$(TARGET_AR)" \
		STRIP="$(TARGET_STRIP)" \
		-C $(@D)/wifi/src/usbdev/usbdl \
		BUILDING_BCM_DRIVERS=1
endef
else
BCM_MAKE_TARGETS=mipsel-mips-p2p
BCM_MAKE_EXTRA=
endif


define BCM_DRIVERS_BUILD_WIFI
	$(TARGET_MAKE_ENV) $(MAKE1) \
		STBLINUX=1 \
		LINUXDIR="$(LINUX_DIR)" \
		LD="$(TARGET_LD)" \
		CC="$(TARGET_CC)" \
		AR="$(TARGET_AR)" \
		STRIP="$(TARGET_STRIP)" \
		-C $(@D)/wifi/src/wl/linux \
		$(BCM_MAKE_TARGETS) $(BCM_MAKE_EXTRA) \
		BUILDING_BCM_DRIVERS=1
	$(TARGET_MAKE_ENV) $(MAKE1) \
		TARGETENV="linuxmips" \
		LINUXDIR="$(LINUX_DIR)" \
		LD="$(TARGET_LD)" \
		CC="$(TARGET_CC)" \
		AR="$(TARGET_AR)" \
		STRIP="$(TARGET_STRIP)" \
		-f GNUmakefile \
		-C $(@D)/wifi/src/wl/exe \
		BUILDING_BCM_DRIVERS=1
	$(BCM_DRIVERS_BUILD_WIFI_USB_UTILS)
endef


ifeq ($(BR2_PACKAGE_BCM_DRIVER_WIFI_USB),y)
define BCM_DRIVERS_INSTALL_TARGET_WIFI_USB
$(INSTALL) -D -m 0444 $(@D)/wifi/src/wl/linux/obj-mipsel-mips-*/bcm_dbus.ko $(TARGET_DIR)/usr/lib/modules/bcm_dbus.ko
$(INSTALL) -D -m 0755 $(@D)/wifi/src/usbdev/usbdl/bcmdl $(TARGET_DIR)/usr/bin/bcmdl
$(INSTALL) -D -m 0444 $(@D)/wifi/src/dongle/rte/wl/builds/43236b-bmac/ag-nodis-p2p-mchan-media/rtecdc.bin.trx $(TARGET_DIR)/lib/firmware/bcm43236-firmware.bin
$(INSTALL) -D -m 0444 $(@D)/wifi/src/dongle/rte/wl/builds/43236b-bmac/ag-p2p-mchan-media/rtecdc.bin.trx $(TARGET_DIR)/lib/firmware/bcm43236-nohotplug.bin
endef
else
define BCM_DRIVERS_INSTALL_TARGET_WIFI_USB
endef
endif

define BCM_DRIVERS_INSTALL_TARGET_WIFI
	$(INSTALL) -D -m 0600 $(@D)/wifi/src/wl/linux/obj-mipsel-mips-*/wl.ko $(TARGET_DIR)/usr/lib/modules/wl.ko
	$(INSTALL) -m 0700 $(@D)/wifi/src/wl/exe/wlmips $(TARGET_DIR)/usr/bin/wl
	$(BCM_DRIVERS_INSTALL_TARGET_WIFI_USB)
endef

endif

define BCM_DRIVERS_BUILD_CMDS
	$(BCM_DRIVERS_BUILD_MOCA)
	$(BCM_DRIVERS_BUILD_WIFI)
endef

define BCM_DRIVERS_CLEAN_CMDS
endef

define BCM_DRIVERS_INSTALL_STAGING_CMDS
	$(BCM_DRIVERS_INSTALL_STAGING_MOCA)
endef

define BCM_DRIVERS_INSTALL_TARGET_CMDS
	$(BCM_DRIVERS_INSTALL_TARGET_MOCA)
	$(BCM_DRIVERS_INSTALL_TARGET_WIFI)
	$(BCM_DRIVERS_INSTALL_TARGET_MOCA_COMMON)
endef

define BCM_DRIVERS_TEST_CMDS
    $(BCM_DRIVERS_TEST_CMDS_MOCA)
endef

$(eval $(call GENTARGETS))
$(eval $(call GENTARGETS,host))
