xref: /OK3568_Linux_fs/kernel/drivers/net/ethernet/realtek/r8168/Makefile (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyun################################################################################
3*4882a593Smuzhiyun#
4*4882a593Smuzhiyun# r8168 is the Linux device driver released for Realtek Gigabit Ethernet
5*4882a593Smuzhiyun# controllers with PCI-Express interface.
6*4882a593Smuzhiyun#
7*4882a593Smuzhiyun# Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved.
8*4882a593Smuzhiyun#
9*4882a593Smuzhiyun# This program is free software; you can redistribute it and/or modify it
10*4882a593Smuzhiyun# under the terms of the GNU General Public License as published by the Free
11*4882a593Smuzhiyun# Software Foundation; either version 2 of the License, or (at your option)
12*4882a593Smuzhiyun# any later version.
13*4882a593Smuzhiyun#
14*4882a593Smuzhiyun# This program is distributed in the hope that it will be useful, but WITHOUT
15*4882a593Smuzhiyun# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16*4882a593Smuzhiyun# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
17*4882a593Smuzhiyun# more details.
18*4882a593Smuzhiyun#
19*4882a593Smuzhiyun# You should have received a copy of the GNU General Public License along with
20*4882a593Smuzhiyun# this program; if not, see <http://www.gnu.org/licenses/>.
21*4882a593Smuzhiyun#
22*4882a593Smuzhiyun# Author:
23*4882a593Smuzhiyun# Realtek NIC software team <nicfae@realtek.com>
24*4882a593Smuzhiyun# No. 2, Innovation Road II, Hsinchu Science Park, Hsinchu 300, Taiwan
25*4882a593Smuzhiyun#
26*4882a593Smuzhiyun################################################################################
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun################################################################################
29*4882a593Smuzhiyun#  This product is covered by one or more of the following patents:
30*4882a593Smuzhiyun#  US6,570,884, US6,115,776, and US6,327,625.
31*4882a593Smuzhiyun################################################################################
32*4882a593Smuzhiyun
33*4882a593SmuzhiyunCONFIG_SOC_LAN = n
34*4882a593SmuzhiyunENABLE_FIBER_SUPPORT = n
35*4882a593SmuzhiyunENABLE_REALWOW_SUPPORT = n
36*4882a593SmuzhiyunENABLE_DASH_SUPPORT = n
37*4882a593SmuzhiyunENABLE_DASH_PRINTER_SUPPORT = n
38*4882a593SmuzhiyunCONFIG_DOWN_SPEED_100 = n
39*4882a593SmuzhiyunCONFIG_ASPM = n
40*4882a593SmuzhiyunENABLE_S5WOL = y
41*4882a593SmuzhiyunENABLE_S5_KEEP_CURR_MAC = n
42*4882a593SmuzhiyunENABLE_EEE = n
43*4882a593SmuzhiyunENABLE_S0_MAGIC_PACKET = n
44*4882a593SmuzhiyunCONFIG_DYNAMIC_ASPM = y
45*4882a593SmuzhiyunENABLE_USE_FIRMWARE_FILE = n
46*4882a593Smuzhiyun
47*4882a593Smuzhiyunifneq ($(KERNELRELEASE),)
48*4882a593Smuzhiyun	obj-$(CONFIG_R8168) := r8168.o
49*4882a593Smuzhiyun	r8168-objs := r8168_n.o r8168_asf.o rtl_eeprom.o rtltool.o
50*4882a593Smuzhiyun	ifeq ($(CONFIG_SOC_LAN), y)
51*4882a593Smuzhiyun		EXTRA_CFLAGS += -DCONFIG_SOC_LAN
52*4882a593Smuzhiyun	endif
53*4882a593Smuzhiyun	ifeq ($(ENABLE_FIBER_SUPPORT), y)
54*4882a593Smuzhiyun	    r8168-objs += r8168_fiber.o
55*4882a593Smuzhiyun		EXTRA_CFLAGS += -DENABLE_FIBER_SUPPORT
56*4882a593Smuzhiyun	endif
57*4882a593Smuzhiyun	ifeq ($(ENABLE_REALWOW_SUPPORT), y)
58*4882a593Smuzhiyun	    r8168-objs += r8168_realwow.o
59*4882a593Smuzhiyun		EXTRA_CFLAGS += -DENABLE_REALWOW_SUPPORT
60*4882a593Smuzhiyun	endif
61*4882a593Smuzhiyun	ifeq ($(ENABLE_DASH_SUPPORT), y)
62*4882a593Smuzhiyun	    r8168-objs += r8168_dash.o
63*4882a593Smuzhiyun		EXTRA_CFLAGS += -DENABLE_DASH_SUPPORT
64*4882a593Smuzhiyun	endif
65*4882a593Smuzhiyun	ifeq ($(ENABLE_DASH_PRINTER_SUPPORT), y)
66*4882a593Smuzhiyun	    r8168-objs += r8168_dash.o
67*4882a593Smuzhiyun		EXTRA_CFLAGS += -DENABLE_DASH_SUPPORT -DENABLE_DASH_PRINTER_SUPPORT
68*4882a593Smuzhiyun	endif
69*4882a593Smuzhiyun	EXTRA_CFLAGS += -DCONFIG_R8168_NAPI
70*4882a593Smuzhiyun	EXTRA_CFLAGS += -DCONFIG_R8168_VLAN
71*4882a593Smuzhiyun	ifeq ($(CONFIG_DOWN_SPEED_100), y)
72*4882a593Smuzhiyun		EXTRA_CFLAGS += -DCONFIG_DOWN_SPEED_100
73*4882a593Smuzhiyun	endif
74*4882a593Smuzhiyun	ifeq ($(CONFIG_ASPM), y)
75*4882a593Smuzhiyun		EXTRA_CFLAGS += -DCONFIG_ASPM
76*4882a593Smuzhiyun	endif
77*4882a593Smuzhiyun	ifeq ($(ENABLE_S5WOL), y)
78*4882a593Smuzhiyun		EXTRA_CFLAGS += -DENABLE_S5WOL
79*4882a593Smuzhiyun	endif
80*4882a593Smuzhiyun	ifeq ($(ENABLE_S5_KEEP_CURR_MAC), y)
81*4882a593Smuzhiyun		EXTRA_CFLAGS += -DENABLE_S5_KEEP_CURR_MAC
82*4882a593Smuzhiyun	endif
83*4882a593Smuzhiyun	ifeq ($(ENABLE_EEE), y)
84*4882a593Smuzhiyun		EXTRA_CFLAGS += -DENABLE_EEE
85*4882a593Smuzhiyun	endif
86*4882a593Smuzhiyun	ifeq ($(ENABLE_S0_MAGIC_PACKET), y)
87*4882a593Smuzhiyun		EXTRA_CFLAGS += -DENABLE_S0_MAGIC_PACKET
88*4882a593Smuzhiyun	endif
89*4882a593Smuzhiyun	ifeq ($(CONFIG_DYNAMIC_ASPM), y)
90*4882a593Smuzhiyun		EXTRA_CFLAGS += -DCONFIG_DYNAMIC_ASPM
91*4882a593Smuzhiyun	endif
92*4882a593Smuzhiyun	ifeq ($(ENABLE_USE_FIRMWARE_FILE), y)
93*4882a593Smuzhiyun		r8168-objs += r8168_firmware.o
94*4882a593Smuzhiyun		EXTRA_CFLAGS += -DENABLE_USE_FIRMWARE_FILE
95*4882a593Smuzhiyun	endif
96*4882a593Smuzhiyunelse
97*4882a593Smuzhiyun	BASEDIR := /lib/modules/$(shell uname -r)
98*4882a593Smuzhiyun	KERNELDIR ?= $(BASEDIR)/build
99*4882a593Smuzhiyun	PWD :=$(shell pwd)
100*4882a593Smuzhiyun	DRIVERDIR := $(shell find $(BASEDIR)/kernel/drivers/net/ethernet -name realtek -type d)
101*4882a593Smuzhiyun	ifeq ($(DRIVERDIR),)
102*4882a593Smuzhiyun		DRIVERDIR := $(shell find $(BASEDIR)/kernel/drivers/net -name realtek -type d)
103*4882a593Smuzhiyun	endif
104*4882a593Smuzhiyun	ifeq ($(DRIVERDIR),)
105*4882a593Smuzhiyun		DRIVERDIR := $(BASEDIR)/kernel/drivers/net
106*4882a593Smuzhiyun	endif
107*4882a593Smuzhiyun	RTKDIR := $(subst $(BASEDIR)/,,$(DRIVERDIR))
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun	KERNEL_GCC_VERSION := $(shell cat /proc/version | sed -n 's/.*gcc version \([[:digit:]]\.[[:digit:]]\.[[:digit:]]\).*/\1/p')
110*4882a593Smuzhiyun	CCVERSION = $(shell $(CC) -dumpversion)
111*4882a593Smuzhiyun
112*4882a593Smuzhiyun	KVER = $(shell uname -r)
113*4882a593Smuzhiyun	KMAJ = $(shell echo $(KVER) | \
114*4882a593Smuzhiyun	sed -e 's/^\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*.*/\1/')
115*4882a593Smuzhiyun	KMIN = $(shell echo $(KVER) | \
116*4882a593Smuzhiyun	sed -e 's/^[0-9][0-9]*\.\([0-9][0-9]*\)\.[0-9][0-9]*.*/\1/')
117*4882a593Smuzhiyun	KREV = $(shell echo $(KVER) | \
118*4882a593Smuzhiyun	sed -e 's/^[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/')
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun	kver_ge = $(shell \
121*4882a593Smuzhiyun	echo test | awk '{if($(KMAJ) < $(1)) {print 0} else { \
122*4882a593Smuzhiyun	if($(KMAJ) > $(1)) {print 1} else { \
123*4882a593Smuzhiyun	if($(KMIN) < $(2)) {print 0} else { \
124*4882a593Smuzhiyun	if($(KMIN) > $(2)) {print 1} else { \
125*4882a593Smuzhiyun	if($(KREV) < $(3)) {print 0} else { print 1 } \
126*4882a593Smuzhiyun	}}}}}' \
127*4882a593Smuzhiyun	)
128*4882a593Smuzhiyun
129*4882a593Smuzhiyun.PHONY: all
130*4882a593Smuzhiyunall: print_vars clean modules install
131*4882a593Smuzhiyun
132*4882a593Smuzhiyunprint_vars:
133*4882a593Smuzhiyun	@echo
134*4882a593Smuzhiyun	@echo "CC: " $(CC)
135*4882a593Smuzhiyun	@echo "CCVERSION: " $(CCVERSION)
136*4882a593Smuzhiyun	@echo "KERNEL_GCC_VERSION: " $(KERNEL_GCC_VERSION)
137*4882a593Smuzhiyun	@echo "KVER: " $(KVER)
138*4882a593Smuzhiyun	@echo "KMAJ: " $(KMAJ)
139*4882a593Smuzhiyun	@echo "KMIN: " $(KMIN)
140*4882a593Smuzhiyun	@echo "KREV: " $(KREV)
141*4882a593Smuzhiyun	@echo "BASEDIR: " $(BASEDIR)
142*4882a593Smuzhiyun	@echo "DRIVERDIR: " $(DRIVERDIR)
143*4882a593Smuzhiyun	@echo "PWD: " $(PWD)
144*4882a593Smuzhiyun	@echo "RTKDIR: " $(RTKDIR)
145*4882a593Smuzhiyun	@echo
146*4882a593Smuzhiyun
147*4882a593Smuzhiyun.PHONY:modules
148*4882a593Smuzhiyunmodules:
149*4882a593Smuzhiyun#ifeq ($(call kver_ge,5,0,0),1)
150*4882a593Smuzhiyun	$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
151*4882a593Smuzhiyun#else
152*4882a593Smuzhiyun#	$(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) modules
153*4882a593Smuzhiyun#endif
154*4882a593Smuzhiyun
155*4882a593Smuzhiyun.PHONY:clean
156*4882a593Smuzhiyunclean:
157*4882a593Smuzhiyun#ifeq ($(call kver_ge,5,0,0),1)
158*4882a593Smuzhiyun	$(MAKE) -C $(KERNELDIR) M=$(PWD) clean
159*4882a593Smuzhiyun#else
160*4882a593Smuzhiyun#	$(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) clean
161*4882a593Smuzhiyun#endif
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun.PHONY:install
164*4882a593Smuzhiyuninstall:
165*4882a593Smuzhiyun#ifeq ($(call kver_ge,5,0,0),1)
166*4882a593Smuzhiyun	$(MAKE) -C $(KERNELDIR) M=$(PWD) INSTALL_MOD_DIR=$(RTKDIR) modules_install
167*4882a593Smuzhiyun#else
168*4882a593Smuzhiyun#	$(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) INSTALL_MOD_DIR=$(RTKDIR) modules_install
169*4882a593Smuzhiyun#endif
170*4882a593Smuzhiyun
171*4882a593Smuzhiyunendif
172