123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- #############################################################################
- #
- # The MIT License (MIT)
- #
- # Copyright (c) 2014 - 2021 VERISILICON
- #
- # Permission is hereby granted, free of charge, to any person obtaining a
- # copy of this software and associated documentation files (the "Software"),
- # to deal in the Software without restriction, including without limitation
- # the rights to use, copy, modify, merge, publish, distribute, sublicense,
- # and/or sell copies of the Software, and to permit persons to whom the
- # Software is furnished to do so, subject to the following conditions:
- #
- # The above copyright notice and this permission notice shall be included in
- # all copies or substantial portions of the Software.
- #
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- # DEALINGS IN THE SOFTWARE.
- #
- #############################################################################
- #
- # The GPL License (GPL)
- #
- # Copyright (C) 2014 - 2021 VERISILICON
- #
- # This program is free software; you can redistribute it and/or
- # modify it under the terms of the GNU General Public License
- # as published by the Free Software Foundation; either version 2
- # of the License, or (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, write to the Free Software Foundation,
- # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- #
- #############################################################################
- #
- # Note: This software is released under dual MIT and GPL licenses. A
- # recipient may use this file under the terms of either the MIT license or
- # GPL License. If you wish to use only one license not the other, you can
- # indicate your decision by deleting one of the above license notices in your
- # version of this file.
- #
- ##############################################################################
- ARM_CROSS_COMPILE ?= n
- ifeq ($(ARM_CROSS_COMPILE),y)
- export ARCH=arm64
- export CROSS_COMPILE=/opt/kmb/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-
- KDIR := /home/vsi/kmb-evm/kernel/mainline-tracking
- endif
- SUPPORT_MMU = y
- SUPPORT_AXIFE = n
- SUPPORT_VCMD_ENABLE_IP = n
- ifeq ($(obj),)
- obj = .
- endif
- #################################################
- # configuration
- MDIR := hantro
- # drivers objects
- # list-multi := hantro_mmu.o
- # # what to build
- vc8000-objs := vc8000_driver.o vc8000_vcmd_driver.o bidirect_list.o vcmdswhwregisters.o vc8000_normal_driver.o
- obj-m += vc8000.o
- ifeq ($(strip $(SUPPORT_MMU)),y)
- vc8000-objs += hantro_mmu.o
- endif
- ifeq ($(strip $(SUPPORT_AXIFE)),y)
- vc8000-objs += vc8000_axife.o
- endif
- tardest := .
- #################################################
- # compile modules
- ifneq ($(KERNELRELEASE),)
- # recursive call from kernel build system
- dummy := $(shell echo $(KERNELRELEASE) > $(obj)/.version)
- ifeq ($(VERSION).$(PATCHLEVEL),2.6)
- export-objs :=
- list-multi :=
- else
- multi-m := $(filter $(list-multi), $(obj-m))
- int-m := $(sort $(foreach m, $(multi-m), $($(basename $(m))-objs)))
- export-objs := $(filter $(int-m) $(obj-m),$(export-objs))
- endif
- CC += -I$(obj)
- EXTRA_CFLAGS += -g
- # Print debugging messages from the device
- #EXTRA_CFLAGS += -DHANTRO_DRIVER_DEBUG
- #EXTRA_CFLAGS += -DHANTROMMU_DEBUG
- #EXTRA_CFLAGS += -DDYNAMIC_MALLOC_VCMDNODE
- snapshot := $(wildcard $(obj)/.snapshot)
- ifneq ($(snapshot),)
- SNAPSHOT_CFLAGS := -DSNAPSHOT='$(shell cat $(snapshot))'
- EXTRA_CFLAGS += $(SNAPSHOT_CFLAGS)
- endif
- ifeq ($(strip $(SUPPORT_MMU)),y)
- EXTRA_CFLAGS += -DHANTROMMU_SUPPORT
- endif
- ifeq ($(strip $(SUPPORT_AXIFE)),y)
- EXTRA_CFLAGS += -DHANTROAXIFE_SUPPORT
- endif
- ifeq ($(strip $(SUPPORT_VCMD_ENABLE_IP)),y)
- EXTRA_CFLAGS += -DHANTROVCMD_ENABLE_IP_SUPPORT
- endif
- -include $(TOPDIR)/Rules.make
- else
- # take version info from last module build if available
- KERNELRELEASE := $(shell cat $(obj)/.version 2>/dev/null || uname -r)
- endif
- ifneq ($(ARM_CROSS_COMPILE),y)
- KDIR_BASE := /afs/hantro.com/projects/Testing/Board_Version_Control
- #KDIR := $(KDIR_BASE)/Realview_EB/SW/Linux/v0_0/linux-2.6.19-arm2
- #KDIR := $(KDIR_BASE)/Realview_EB/SW/Linux/linux-2.6.21-arm1/v0_0/linux-2.6.21-arm1
- #KDIR := $(KDIR_BASE)/Realview_PB/PB926EJS/SW/Linux/linux-2.6.24-arm2-spnlck/v0_1/linux-2.6.24-arm2-spnlck
- #KDIR := $(KDIR_BASE)/Realview_PB/PB926EJS/SW/Linux/linux-2.6.28-arm1/v0_1/linux-2.6.28-arm1
- #KDIR := $(KDIR_BASE)/SW_Common/ARM_realview_v6/2.6.28-arm1/v0_1-v6/linux-2.6.28-arm1
- KVER := $(shell uname -r)
- KDIR := /lib/modules/$(KVER)/build
- endif
- PWD := $(shell pwd)
- DEST := /lib/modules/$(KERNELRELEASE)/$(MDIR)
- # which files to install?
- inst-m := $(wildcard *.ko)
- ifeq ($(inst-m),)
- inst-m := $(obj-m)
- endif
- # locales seem to cause trouble sometimes.
- LC_ALL = POSIX
- export LC_ALL
- default::
- $(MAKE) -C $(KDIR) M=$(PWD) modules
- install::
- strip --strip-debug $(inst-m)
- -su -c "mkdir -p $(DEST); cp -v $(inst-m) $(DEST); depmod -a"
- clean::
- $(MAKE) -C $(KDIR) M=$(PWD) clean
- -rm -f .version
- #################################################
- # build tarballs
- thisdir := $(notdir $(PWD))
- name := $(shell echo $(thisdir) | sed 's/-.*//')
- ver := $(shell echo $(thisdir) | sed 's/.*-//')
- date := $(shell date +%Y%m%d)
- tardest ?= .
- snapdir := $(HOME)/snapshot
- snap ?= $(name)
- release: clean
- rm -f .snapshot
- (cd ..; tar cvzf $(tardest)/$(name)-$(ver).tar.gz $(thisdir))
- snapshot snap tarball: clean
- echo $(date) > .snapshot
- (cd ..; tar czf $(snapdir)/$(snap)-$(date).tar.gz $(thisdir))
- $(MAKE) -C $(snapdir)
- #################################################
- # other stuff
- %.asm: %.o
- objdump -S $< > $@
|