# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2022 Intel Corporation.

KERNELRELEASE ?= $(shell uname -r)
KERNEL_SRC ?= /lib/modules/$(KERNELRELEASE)/build
MODSRC := $(shell pwd)
KERNEL_VERSION := $(shell echo $(KERNELRELEASE) | sed 's/[^0-9.]*\([0-9.]*\).*/\1/')

version_lt = $(shell \
    v1=$(1); \
    v2=$(2); \
    IFS='.'; \
    set -- $$v1; i=$${1:-0}; j=$${2:-0}; k=$${3:-0}; \
    set -- $$v2; a=$${1:-0}; b=$${2:-0}; c=$${3:-0}; \
    if [ "$$i" -lt "$$a" ]; then \
        echo "true"; \
    elif [ "$$i" -eq "$$a" ] && [ "$$j" -lt "$$b" ]; then \
        echo "true"; \
    elif [ "$$i" -eq "$$a" ] && [ "$$j" -eq "$$b" ] && [ "$$k" -lt "$$c" ]; then \
        echo "true"; \
    else \
        echo "false"; \
    fi)

KV_IPU7_ISYS := 6.17.0

export EXTERNAL_BUILD = 1
export CONFIG_VIDEO_INTEL_IPU7 = m
export CONFIG_VIDEO_OV02C10 = m

ifeq ($(call version_lt,$(KERNEL_VERSION),$(KV_IPU7_ISYS)),true)
obj-y += drivers/media/pci/intel/ipu7/
else
obj-y += drivers/media/pci/intel/ipu7/psys/
endif

# For ACPI build: add platform drivers
ifdef BUILD_INTEL_IPU_ACPI
export CONFIG_INTEL_IPU_ACPI = m
obj-y += drivers/media/platform/intel/
subdir-ccflags-$(CONFIG_INTEL_IPU_ACPI) += \
	-DCONFIG_INTEL_IPU_ACPI_MODULE=1
endif

obj-y += drivers/media/i2c/

subdir-ccflags-y += -I$(src)/include

subdir-ccflags-y += $(subdir-ccflags-m)

ifneq ($(wildcard $(KERNEL_SRC)/media/i2c/ar0234.h $(MODSRC)/media/i2c/ar0234.h),)
subdir-ccflags-$(CONFIG_INTEL_IPU_ACPI) += -DHAVE_MEDIA_I2C_AR0234_H
endif
ifneq ($(wildcard $(KERNEL_SRC)/media/i2c/lt6911uxe.h $(MODSRC)/media/i2c/lt6911uxe.h),)
subdir-ccflags-$(CONFIG_INTEL_IPU_ACPI) += -DHAVE_MEDIA_I2C_LT6911UXE_H
endif
ifneq ($(wildcard $(KERNEL_SRC)/media/i2c/ov2311.h $(MODSRC)/media/i2c/ov2311.h),)
subdir-ccflags-$(CONFIG_INTEL_IPU_ACPI) += -DHAVE_MEDIA_I2C_OV2311_H
endif
ifneq ($(wildcard $(KERNEL_SRC)/media/i2c/d4xx_pdata.h $(MODSRC)/media/i2c/d4xx_pdata.h),)
subdir-ccflags-$(CONFIG_INTEL_IPU_ACPI) += -DHAVE_MEDIA_I2C_D4XX_H
endif
ifneq ($(wildcard $(KERNEL_SRC)/media/i2c/lt6911uxc.h $(MODSRC)/media/i2c/lt6911uxc.h),)
subdir-ccflags-$(CONFIG_INTEL_IPU_ACPI) += -DHAVE_MEDIA_I2C_LT6911UXC_H
endif
ifneq ($(wildcard $(KERNEL_SRC)/media/i2c/imx390.h $(MODSRC)/media/i2c/imx390.h),)
subdir-ccflags-$(CONFIG_INTEL_IPU_ACPI) += -DHAVE_MEDIA_I2C_IMX390_H
endif
ifneq ($(wildcard $(KERNEL_SRC)/media/i2c/isx031.h $(MODSRC)/media/i2c/isx031.h),)
subdir-ccflags-$(CONFIG_INTEL_IPU_ACPI) += -DHAVE_MEDIA_I2C_ISX031_H
endif

all:
	$(MAKE) -C $(KERNEL_SRC) M=$(MODSRC) modules

all-acpi:
	$(MAKE) BUILD_INTEL_IPU_ACPI=1 -C $(KERNEL_SRC) M=$(MODSRC) modules

modules_install:
	$(MAKE) INSTALL_MOD_DIR=updates -C $(KERNEL_SRC) M=$(MODSRC) modules_install

clean:
	$(MAKE) -C $(KERNEL_SRC) M=$(MODSRC) clean
