^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) # (C) COPYRIGHT 2021-2022 ARM Limited. All rights reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) # This program is free software and is provided to you under the terms of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) # GNU General Public License version 2 as published by the Free Software
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) # Foundation, and any use by you of this program is subject to the terms
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) # of such GNU license.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) # This program is distributed in the hope that it will be useful,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) # but WITHOUT ANY WARRANTY; without even the implied warranty of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) # GNU General Public License for more details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) # You should have received a copy of the GNU General Public License
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) # along with this program; if not, you can access it online at
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) # http://www.gnu.org/licenses/gpl-2.0.html.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) # Paths
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) KERNEL_SRC ?= /lib/modules/$(shell uname -r)/build
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) KDIR ?= $(KERNEL_SRC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) ifeq ($(KDIR),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) $(error Must specify KDIR to point to the kernel to target))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) vars :=
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) # Default configuration values
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) CONFIG_MALI_BASE_MODULES ?= n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) ifeq ($(CONFIG_MALI_BASE_MODULES),y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) CONFIG_MALI_CSF_SUPPORT ?= n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) ifneq ($(CONFIG_DMA_SHARED_BUFFER),n)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) CONFIG_DMA_BUF_LOCK ?= y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) CONFIG_DMA_SHARED_BUFFER_TEST_EXPORTER ?= y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) # Prevent misuse when CONFIG_DMA_SHARED_BUFFER=n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) CONFIG_DMA_BUF_LOCK = n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) CONFIG_DMA_SHARED_BUFFER_TEST_EXPORTER = n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) CONFIG_MALI_MEMORY_GROUP_MANAGER ?= y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) ifneq ($(CONFIG_MALI_CSF_SUPPORT), n)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) CONFIG_MALI_PROTECTED_MEMORY_ALLOCATOR ?= y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) # Prevent misuse when CONFIG_MALI_BASE_MODULES=n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) CONFIG_DMA_BUF_LOCK = n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) CONFIG_DMA_SHARED_BUFFER_TEST_EXPORTER = n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) CONFIG_MALI_MEMORY_GROUP_MANAGER = n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) CONFIG_MALI_PROTECTED_MEMORY_ALLOCATOR = n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) CONFIGS := \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) CONFIG_MALI_BASE_MODULES \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) CONFIG_MALI_CSF_SUPPORT \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) CONFIG_DMA_BUF_LOCK \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) CONFIG_DMA_SHARED_BUFFER_TEST_EXPORTER \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) CONFIG_MALI_MEMORY_GROUP_MANAGER \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) CONFIG_MALI_PROTECTED_MEMORY_ALLOCATOR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) # MAKE_ARGS to pass the custom CONFIGs on out-of-tree build
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) # Generate the list of CONFIGs and values.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) # $(value config) is the name of the CONFIG option.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) # $(value $(value config)) is its value (y, m).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) # When the CONFIG is not set to y or m, it defaults to n.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) MAKE_ARGS := $(foreach config,$(CONFIGS), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) $(if $(filter y m,$(value $(value config))), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) $(value config)=$(value $(value config)), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) $(value config)=n))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) # EXTRA_CFLAGS to define the custom CONFIGs on out-of-tree build
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) # Generate the list of CONFIGs defines with values from CONFIGS.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) # $(value config) is the name of the CONFIG option.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) # When set to y or m, the CONFIG gets defined to 1.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) EXTRA_CFLAGS := $(foreach config,$(CONFIGS), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) $(if $(filter y m,$(value $(value config))), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) -D$(value config)=1))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) # The following were added to align with W=1 in scripts/Makefile.extrawarn
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) # from the Linux source tree
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) KBUILD_CFLAGS += -Wall -Werror
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) KBUILD_CFLAGS += -Wextra -Wunused -Wno-unused-parameter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) KBUILD_CFLAGS += -Wmissing-declarations
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) KBUILD_CFLAGS += -Wmissing-format-attribute
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) KBUILD_CFLAGS += -Wmissing-prototypes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) KBUILD_CFLAGS += -Wold-style-definition
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) KBUILD_CFLAGS += -Wmissing-include-dirs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) KBUILD_CFLAGS += $(call cc-option, -Wunused-but-set-variable)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) KBUILD_CFLAGS += $(call cc-option, -Wunused-const-variable)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) KBUILD_CFLAGS += $(call cc-option, -Wpacked-not-aligned)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) KBUILD_CFLAGS += $(call cc-option, -Wstringop-truncation)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) # The following turn off the warnings enabled by -Wextra
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) KBUILD_CFLAGS += -Wno-missing-field-initializers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) KBUILD_CFLAGS += -Wno-sign-compare
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) KBUILD_CFLAGS += -Wno-type-limits
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) KBUILD_CPPFLAGS += -DKBUILD_EXTRA_WARN1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) all:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) $(MAKE) -C $(KDIR) M=$(CURDIR) $(MAKE_ARGS) EXTRA_CFLAGS="$(EXTRA_CFLAGS)" KBUILD_EXTRA_SYMBOLS="$(EXTRA_SYMBOLS)" modules
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) modules_install:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) $(MAKE) -C $(KDIR) M=$(CURDIR) $(MAKE_ARGS) modules_install
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) clean:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) $(MAKE) -C $(KDIR) M=$(CURDIR) $(MAKE_ARGS) clean