.EXPORT_ALL_VARIABLES:

TARGET ?= mso_feat
TARGET_CROSS ?= $(CROSS_COMPILE)
STRIP ?= $(TARGET_CROSS)strip

# Defines
# ------------------------------------------------------------------------------
M_CPUARCH := $(shell sed -n 's/CONFIG_\(ARM\|ARM64\)=y/\L\1/p' $(LINUX_DIR)/.config)
O_CPUARCH := _$(M_CPUARCH)
O_VERSION := $(shell echo \
	$(shell sed -n 's/^VERSION = \([0-9]*\).*/\_\1/p;s/.*PATCHLEVEL = \([0-9]*\).*/\1/p' $(LINUX_DIR)/Makefile) \
	| sed -n 's/ /./p')

# Extra environment settings
# ------------------------------------------------------------------------------
export CONFIG_BCM_MSO_FEAT=m
export EXTMODDIR=$(STAGING_DIR)/usr/share/build

# Extra flags
# ------------------------------------------------------------------------------

# Commands
# ------------------------------------------------------------------------------
all: clean prepare config build stage release install

untar: untar_

patch: patch_

prepare: untar patch

config: config_

build: build_
	@$(STRIP) --strip-debug --strip-unneeded mod/*.ko

stage: stage_

_release:
	@if ls mod/*$(O_CPUARCH)$(O_VERSION)_shipped >/dev/null 2>&1; then \
		if [ ! -d "$(RELEASE_DIR)/mod" ]; then \
			mkdir -p $(RELEASE_DIR)/mod; \
			cp mod/Makefile mod/module.c mod/*$(O_CPUARCH)$(O_VERSION)_shipped $(RELEASE_DIR)/mod; \
		fi; \
	fi

_install:
	@if ls mod/*$(O_CPUARCH)$(O_VERSION)_shipped >/dev/null 2>&1; then \
		$(MAKE) -C $(LINUX_DIR) M=mod ARCH=$(M_CPUARCH) CROSS_COMPILE=$(TARGET_CROSS) $($(TARGET)_OPTS) modules V=1; \
		$(STRIP) --strip-debug --strip-unneeded mod/*.ko; \
		mv mod/*.ko .; \
		cd mod && rm -f *.*o *.order *.symvers *.mod* .*.*d; \
	fi

release: _release
	@$(MAKE) --no-print-directory release_

install: _install
	@$(MAKE) --no-print-directory install_

clean: clean_

distclean: distclean_

# Common Makefiles
# ------------------------------------------------------------------------------
COMMON_MAKEFILES_DIR ?= ./makefiles
include $(COMMON_MAKEFILES_DIR)/make.mod
