⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makefile.2.4

📁 NATIONAL公司DP83816芯片Linux下驱动
💻 4
字号:
#!/usr/bin/make
# Makefile for building National Semiconductor MacPhyter2 Drivers
#

KERNELVER = $(shell uname -r)

SEARCHPATH = /usr/src/linux \
        /usr/src/linux-$(shell uname -r | awk '{print substr($$1,1,3)}') \
        /usr/src/linux-$(shell uname -r | awk -F [-] '{print $$1}') \
        /usr/src/linux-$(KERNELVER) \
	/lib/modules/$(KERNELVER)/build

ifeq (,$(KERNEL_DIR))
	FIND_DIR = $(shell [ -e $(dir)/include/linux ] && echo $(dir))
	SEARCHPATH := $(foreach dir, $(SEARCHPATH), $(FIND_DIR))
	KERNELDIR := $(firstword $(SEARCHPATH))
else
	KERNELDIR := $(KERNEL_DIR)
endif

KSOURCEVER := $(shell $(CC) -E -dM $(KERNELDIR)/include/linux/version.h | \
		grep UTS_RELEASE | awk '{ print $$3 }' | sed 'y/"/:/' | \
		awk -F [:] '{print $$2}')

# Pick an appropriate install path
ifeq (,$(INSTALL_DIR))
	ifeq (,$(wildcard /lib/modules/$(KERNELVER)/kernel))
		INSTALLDIR = /lib/modules/$(KERNELVER)/net
	else
		INSTALLDIR = /lib/modules/$(KERNELVER)/kernel/drivers/net
	endif
else
	INSTALLDIR = $(INSTALL_DIR)
endif

# MPL dirs
MPLDIR  = Mpl
MPLPUB  = $(MPLDIR)/Public
MPLTASKS = $(MPLDIR)/Tasks

#Driver flags - Remove trailing 1 to enable a flag
DRVFLAGS = -DNSM_DIAG_MODE1 -DMPL_CHECKED_BUILD1 -DNSM_DEBUG1 -DLINUX_POWER_DEBUG1

#Target and source files
CFILES  = 
HFILES  = 
TARGET  = macphy.o

# NSM files
CFILES +=             \
	nsmos.c       \
	nsmdiag.o     \
	nsmmpl.c

#MPL Src Files
CFILES +=		\
	$(MPLTASKS)/mpltaskrxfilter.c \
	$(MPLDIR)/mplutil.o           \
	$(MPLDIR)/mpldebug.c          \
	$(MPLDIR)/mplintr.c           \
	$(MPLDIR)/mplmisc.c           \
	$(MPLDIR)/mplphy.c            \
	$(MPLDIR)/mpllink.c           \
	$(MPLDIR)/mplreceive.c        \
	$(MPLDIR)/mpltransmit.c       \
	$(MPLDIR)/mplcaps.c           \
	$(MPLDIR)/mplpwr.c            \
	$(MPLDIR)/mplinitshutdown.c

CC = gcc

#Standard Flags
CFLAGS = -DLINUX -D__KERNEL__ -O2 -Wall -DMODULE 
CFLAGS += -I$(KERNELDIR)/include -I$(KERNELDIR)/include/asm -I$(KERNELDIR)/include/asm/mach-default
CFLAGS += -I$(PWD)/$(MPLPUB) -I$(PWD)/$(MPLTASKS) -I$(PWD)/$(MPLDIR) -I$(PWD)
CFLAGS += $(DRVFLAGS)
CFLAGS +=  -march=i686 -DKBUILD_BASENAME=macphy -DKBUILD_MODNAME=macphy

#User Configurable variable for Symmetric Multi Processing Support obtained
# by executing shell script. 

# Check if the SMP is defined in custom shell script
# if the custom shell is not run then select the default
# based on CONFIG_ flag set in config.h

CONFIG_FILE  := $(KERNELDIR)/include/linux/config.h
ifeq (,$(SMP))
	SMP_F := $(shell $(CC) $(CFLAGS) -E -dM $(CONFIG_FILE) | \
       	  grep CONFIG_SMP | awk '{ print $$3 }')
	ifneq ($(SMP_F),1)
 		SMP_F := 0
	endif
else
	ifeq (y,$(SMP))
 		SMP_F := 1
	endif
endif

# If SMP_F is set then add to CFLAGS
ifeq (1,$(SMP_F))
	CFLAGS += -D__SMP__
endif

#User Configurable variable for Modversion support obtained
# by executing shell script. 

# Check if the MODVER is defined in custom shell script
# if the custom shell is not run then select the default
# based on CONFIG_ flag set in config.h

ifeq (,$(MODVER))
	MOD_F := $(shell $(CC) $(CFLAGS) -E -dM $(CONFIG_FILE) | \
       	  grep CONFIG_MODVERSIONS | awk '{ print $$3 }')
	ifneq ($(MOD_F),1)
 		MOD_F := 0
	endif
else
	ifeq (y,$(MODVER))
 		MOD_F := 1
	endif
endif

# If MOD_F is set then add to CFLAGS
ifeq (1,$(MOD_F))
	CFLAGS += $(shell [ -f $(KERNELDIR)/include/linux/modversions.h ] && \
	echo "-DMODVERSIONS -include $(KERNELDIR)/include/linux/modversions.h")
endif

# Target/Rules definitions

all :: driver

custom :
	@if [  -x  ./build.sh ] ; then \
		./build.sh ; \
	fi

driver : vcheck $(TARGET)

vcheck :
	@if [ "$(KSOURCEVER)" != "$(KERNELVER)" ] ; then \
		echo ; \
		echo "Warning! Kernel version Mismatch" ;  \
		echo "Running kernel: $(KERNELVER)" ; \
		echo "Kernel-source version: $(KSOURCEVER)" ; \
		echo "Driver might not work as required!!" ; \
		echo ; \
	fi

$(TARGET): $(CFILES:.c=.o)
	$(LD) -r $^ -o $@
	@echo
	@echo "$(TARGET) Built Successfully"
	@echo -n "  SMP is                  :"
	@if [ "$(SMP_F)" != "1" ] ; then \
		echo " Disabled" ; else echo " Enabled" ; fi
	@echo -n "  MODVER is               :"
	@if [ "$(MOD_F)" != "1" ] ; then \
		echo " Disabled" ; else echo " Enabled" ; fi
	@echo "  Kernel Source path is   : $(KERNELDIR)"
	@echo "  INSTALL path is         : $(INSTALLDIR)"
#@echo "  To change the above run : make custom"
	@echo

$(CFILES:.c=.o): Makefile

install: $(TARGET)
	@mkdir -p $(INSTALLDIR)
	@install -m 644 $(TARGET) $(INSTALLDIR)
	@echo "NSM Macphyter Driver Successfully Installed : $(INSTALLDIR)"	

uninstall:
	@if [ -e $(INSTALLDIR)/$(TARGET) ] ; then \
	    rm -rf $(INSTALLDIR)/$(TARGET) ; \
	fi

clean:
	rm -rf $(TARGET) $(CFILES:.c=.o)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -