📄 makefile.2.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 + -