kernel: qca-ssdk: backport support for building as kernel module
[openwrt/staging/jow.git] / package / kernel / qca-ssdk / patches / 0012-qca-ssdk-Support-Linux-Style-Makefile-for-SSDK.patch
1 From edd3d4347cc73a99c7cf59aceeb1e8ad4d4dd303 Mon Sep 17 00:00:00 2001
2 From: crao <quic_crao@quicinc.com>
3 Date: Tue, 15 Nov 2022 18:50:01 +0800
4 Subject: [PATCH] [qca-ssdk]: Support Linux-Style Makefile for SSDK
5
6 Change-Id: I8c4399433b6422ef6192f70bf08b0d3023cc94b6
7 Signed-off-by: crao <quic_crao@quicinc.com>
8 ---
9 Makefile | 15 +++++++++++++
10 Makefile.modules | 16 ++++++++++++++
11 make/defs.mk | 1 +
12 make/linux_opt.mk | 54 ++++++++++++++++++++++++++++-------------------
13 make/target.mk | 12 +++++++++++
14 src/api/Makefile | 2 +-
15 6 files changed, 77 insertions(+), 23 deletions(-)
16 mode change 100755 => 100644 Makefile
17 create mode 100644 Makefile.modules
18 mode change 100755 => 100644 make/defs.mk
19 mode change 100755 => 100644 make/linux_opt.mk
20 mode change 100755 => 100644 make/target.mk
21 mode change 100755 => 100644 src/api/Makefile
22
23 --- a/Makefile
24 +++ b/Makefile
25 @@ -12,6 +12,9 @@ include ./make/$(OS)_opt.mk
26 SUB_DIR=$(patsubst %/, %, $(dir $(wildcard src/*/Makefile)))
27 SUB_LIB=$(subst src/, , $(SUB_DIR))
28
29 +####################################################################
30 +# SSDK-Style Makefile
31 +####################################################################
32 all: $(BIN_DIR) kslib
33 mkdir -p ./temp/;cd ./temp;cp ../build/bin/ssdk_ks_km.a ./;ar -x ssdk_ks_km.a; cp ../ko_Makefile ./Makefile;
34 make -C $(SYS_PATH) M=$(PRJ_PATH)/temp/ CROSS_COMPILE=$(TOOLPREFIX) modules
35 @@ -20,6 +23,18 @@ all: $(BIN_DIR) kslib
36 rm -Rf ./temp/*.o ./temp/*.ko ./temp/*.a
37 @echo "---Build [SSDK-$(VERSION)] at $(BUILD_DATE) finished."
38
39 +####################################################################
40 +# LNX Modules-Style Makefile
41 +####################################################################
42 +modules: $(BIN_DIR) kslib_c
43 + cp Makefile.modules ./Makefile;
44 + make -C $(SYS_PATH) M=$(PRJ_PATH)/ $(LNX_MAKEOPTS) modules
45 + cp *.ko build/bin;
46 + @echo "---Build [SSDK-$(VERSION)] at $(BUILD_DATE) finished."
47 +
48 +kslib_c:
49 + $(foreach i, $(SUB_LIB), $(MAKE) MODULE_TYPE=KSLIB -C src/$i src_list_loop || exit 1;)
50 +
51 kslib:kslib_o
52 $(AR) -r $(BIN_DIR)/$(KS_MOD)_$(RUNMODE).a $(wildcard $(BLD_DIR)/KSLIB/*.o)
53
54 --- /dev/null
55 +++ b/Makefile.modules
56 @@ -0,0 +1,16 @@
57 +####################################################################
58 +# Add All Local Flags
59 +####################################################################
60 +ccflags-y += $(LNX_LOCAL_CFLAGS) -Wno-error
61 +
62 +####################################################################
63 +# Build Object List
64 +####################################################################
65 +SRC_LIST := $(shell cat $(PRJ_PATH)/src_list.dep)
66 +OBJ_LIST := $(patsubst %.c,%.o,$(SRC_LIST))
67 +
68 +####################################################################
69 +# Linux Kernel Module
70 +####################################################################
71 +obj-m := qca-ssdk.o
72 +qca-ssdk-objs := $(OBJ_LIST)
73 --- a/make/defs.mk
74 +++ b/make/defs.mk
75 @@ -7,6 +7,7 @@ ifeq (,$(findstring $(LIB), $(COMPONENTS
76 endif
77
78 SRC_FILE=$(addprefix $(PRJ_PATH)/$(LOC_DIR)/, $(SRC_LIST))
79 +LOC_SRC_FILE=$(addprefix $(LOC_DIR)/, $(SRC_LIST))
80
81 OBJ_LIST=$(SRC_LIST:.c=.o)
82 OBJ_FILE=$(addprefix $(DST_DIR)/, $(OBJ_LIST))
83 --- a/make/linux_opt.mk
84 +++ b/make/linux_opt.mk
85 @@ -295,7 +295,7 @@ ifeq (TRUE, $(DEBUG_ON))
86 MODULE_CFLAG += -g
87 endif
88
89 -MODULE_CFLAG += $(OPT_FLAG) -Wall -DVERSION=\"$(VERSION)\" -DBUILD_DATE=\"$(BUILD_DATE)\" -DOS=\"$(OS)\" -D"KBUILD_STR(s)=\#s" -D"KBUILD_MODNAME=KBUILD_STR(qca-ssdk)"
90 +MODULE_CFLAG += $(OPT_FLAG) -Wall -DVERSION=\"$(VERSION)\" -DBUILD_DATE=\"$(BUILD_DATE)\" -DOS=\"$(OS)\" -D"KBUILD_STR(s)=\#s"
91
92 MODULE_INC += -I$(PRJ_PATH)/include \
93 -I$(PRJ_PATH)/include/common \
94 @@ -450,7 +450,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
95 MODULE_CFLAG += -DKVER34
96 MODULE_CFLAG += -DKVER32
97 MODULE_CFLAG += -DLNX26_22
98 - MODULE_INC += -I$(SYS_PATH) \
99 + SYS_INC += -I$(SYS_PATH) \
100 -I$(TOOL_PATH)/../lib/gcc/$(TARGET_NAME)/$(GCC_VERSION)/include/ \
101 -I$(SYS_PATH)/include \
102 -I$(SYS_PATH)/source/include \
103 @@ -473,7 +473,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
104 MODULE_CFLAG += -DKVER32
105 MODULE_CFLAG += -DLNX26_22
106 ifeq ($(ARCH), arm64)
107 - MODULE_INC += -I$(SYS_PATH) \
108 + SYS_INC += -I$(SYS_PATH) \
109 -I$(TOOL_PATH)/../lib/gcc/$(TARGET_NAME)/$(GCC_VERSION)/include/ \
110 -I$(SYS_PATH)/include \
111 -I$(SYS_PATH)/source \
112 @@ -492,13 +492,13 @@ ifeq (KSLIB, $(MODULE_TYPE))
113 -I$(SYS_PATH)/source/include/uapi
114
115 ifneq ($(wildcard $(SYS_PATH)/include/linux/kconfig.h),)
116 - MODULE_INC += -include $(SYS_PATH)/include/linux/kconfig.h
117 + SYS_INC += -include $(SYS_PATH)/include/linux/kconfig.h
118 else
119 - MODULE_INC += -include $(KERNEL_SRC)/include/linux/kconfig.h
120 + SYS_INC += -include $(KERNEL_SRC)/include/linux/kconfig.h
121 endif
122
123 else ifeq ($(ARCH), arm)
124 - MODULE_INC += -I$(SYS_PATH) \
125 + SYS_INC += -I$(SYS_PATH) \
126 -I$(TOOL_PATH)/../lib/gcc/$(TARGET_NAME)/$(GCC_VERSION)/include/ \
127 -I$(TOOL_PATH)/../lib/gcc/$(TARGET_NAME)/7.5.0/include/ \
128 -I$(TOOL_PATH)/../../lib/armv7a-vfp-neon-rdk-linux-gnueabi/gcc/arm-rdk-linux-gnueabi/4.8.4/include/ \
129 @@ -522,13 +522,13 @@ ifeq (KSLIB, $(MODULE_TYPE))
130 -I$(TOOL_PATH)/../../lib/arm-rdk-linux-gnueabi/gcc/arm-rdk-linux-gnueabi/9.3.0/include/
131
132 ifneq ($(wildcard $(SYS_PATH)/include/linux/kconfig.h),)
133 - MODULE_INC += -include $(SYS_PATH)/include/linux/kconfig.h
134 + SYS_INC += -include $(SYS_PATH)/include/linux/kconfig.h
135 else
136 - MODULE_INC += -include $(KERNEL_SRC)/include/linux/kconfig.h
137 + SYS_INC += -include $(KERNEL_SRC)/include/linux/kconfig.h
138 endif
139
140 else
141 - MODULE_INC += -I$(SYS_PATH) \
142 + SYS_INC += -I$(SYS_PATH) \
143 -I$(TOOL_PATH)/../lib/gcc/$(TARGET_NAME)/$(GCC_VERSION)/include/ \
144 -I$(SYS_PATH)/include \
145 -I$(SYS_PATH)/source \
146 @@ -564,7 +564,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
147 MODULE_CFLAG += -DLNX26_22
148 ifeq ($(ARCH), arm64)
149 KCONF_FILE = $(SYS_PATH)/source/include/linux/kconfig.h
150 - MODULE_INC += -I$(SYS_PATH) \
151 + SYS_INC += -I$(SYS_PATH) \
152 -I$(TOOL_PATH)/../lib/gcc/$(TARGET_NAME)/$(GCC_VERSION)/include/ \
153 -I$(SYS_PATH)/include \
154 -I$(SYS_PATH)/source/include \
155 @@ -581,7 +581,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
156 -I$(SYS_PATH)/source/arch/arm64/include/asm/mach \
157 -include $(KCONF_FILE)
158 else ifeq ($(ARCH), arm)
159 - MODULE_INC += -I$(SYS_PATH) \
160 + SYS_INC += -I$(SYS_PATH) \
161 -I$(TOOL_PATH)/../lib/gcc/$(TARGET_NAME)/$(GCC_VERSION)/include/ \
162 -I$(TOOL_PATH)/../../lib/armv7a-vfp-neon-rdk-linux-gnueabi/gcc/arm-rdk-linux-gnueabi/4.8.4/include/ \
163 -I$(SYS_PATH)/include \
164 @@ -604,7 +604,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
165 MODULE_CFLAG += -DKVER34
166 MODULE_CFLAG += -DKVER32
167 MODULE_CFLAG += -DLNX26_22
168 - MODULE_INC += -I$(SYS_PATH) \
169 + SYS_INC += -I$(SYS_PATH) \
170 -I$(TOOL_PATH)/../lib/gcc/$(TARGET_NAME)/$(GCC_VERSION)/include/ \
171 -I$(TOOL_PATH)/../../lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include/ \
172 -I$(TOOL_PATH)/../../lib/armv7a-vfp-neon-rdk-linux-gnueabi/gcc/arm-rdk-linux-gnueabi/4.8.4/include/ \
173 @@ -627,10 +627,10 @@ ifeq (KSLIB, $(MODULE_TYPE))
174 -I$(EXT_PATH) \
175 -I$(SYS_PATH)/source/arch/arm/include/asm/mach
176 ifneq ($(wildcard $(SYS_PATH)/include/linux/kconfig.h),)
177 - MODULE_INC += \
178 + SYS_INC += \
179 -include $(SYS_PATH)/include/linux/kconfig.h
180 else
181 - MODULE_INC += \
182 + SYS_INC += \
183 -include $(SYS_PATH)/source/include/linux/kconfig.h
184 endif
185
186 @@ -641,7 +641,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
187 MODULE_CFLAG += -DKVER32
188 MODULE_CFLAG += -DLNX26_22
189 MODULE_CFLAG += -Werror
190 - MODULE_INC += -I$(SYS_PATH) \
191 + SYS_INC += -I$(SYS_PATH) \
192 -I$(SYS_PATH)/include \
193 -I$(SYS_PATH)/source/include \
194 -I$(SYS_PATH)/source/arch/arm/mach-msm/include \
195 @@ -657,7 +657,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
196 MODULE_CFLAG += -DKVER32
197 MODULE_CFLAG += -DLNX26_22
198 ifeq (mips, $(CPU))
199 - MODULE_INC += -I$(SYS_PATH) \
200 + SYS_INC += -I$(SYS_PATH) \
201 -I$(SYS_PATH)/include \
202 -I$(SYS_PATH)/arch/mips/include \
203 -I$(SYS_PATH)/arch/mips/include/asm/mach-ar7240 \
204 @@ -678,7 +678,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
205 -O2 -fno-pic -pipe -mabi=32 -march=mips32r2 -DMODULE -mlong-calls -DEXPORT_SYMTAB
206 endif
207 else
208 - MODULE_INC += -I$(SYS_PATH) \
209 + SYS_INC += -I$(SYS_PATH) \
210 -I$(SYS_PATH)/include \
211 -I$(SYS_PATH)/arch/arm/include \
212 -I$(SYS_PATH)/arch/arm/include/asm \
213 @@ -695,7 +695,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
214 MODULE_CFLAG += -DKVER26
215 MODULE_CFLAG += -DLNX26_22
216 ifeq (mips, $(CPU))
217 - MODULE_INC += -I$(SYS_PATH) \
218 + SYS_INC += -I$(SYS_PATH) \
219 -I$(SYS_PATH)/include \
220 -I$(SYS_PATH)/arch/mips/include \
221 -I$(SYS_PATH)/arch/mips/include/asm/mach-ar7240 \
222 @@ -708,7 +708,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
223 -O2 -fno-pic -pipe -mabi=32 -march=mips32r2 -DMODULE -mlong-calls -DEXPORT_SYMTAB
224 endif
225 else
226 - MODULE_INC += -I$(SYS_PATH) \
227 + SYS_INC += -I$(SYS_PATH) \
228 -I$(SYS_PATH)/include \
229 -I$(SYS_PATH)/arch/arm/include \
230 -I$(SYS_PATH)/arch/arm/include/asm \
231 @@ -721,8 +721,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
232
233 endif
234
235 - MODULE_CFLAG += -D__KERNEL__ -DKERNEL_MODULE $(CPU_CFLAG)
236 -
237 + MODULE_CFLAG += -D__KERNEL__ -DKERNEL_MODULE
238
239 endif
240
241 @@ -748,4 +747,15 @@ ifneq (TRUE, $(KERNEL_MODE))
242 endif
243 endif
244
245 -LOCAL_CFLAGS += $(MODULE_INC) $(MODULE_CFLAG) $(EXTRA_CFLAGS)
246 +LOCAL_CFLAGS += $(MODULE_INC) $(SYS_INC) $(MODULE_CFLAG) $(EXTRA_CFLAGS)
247 +
248 +####################################################################
249 +# cflags for SSDK-Style Makefile
250 +####################################################################
251 +LOCAL_CFLAGS += $(CPU_CFLAG) -D"KBUILD_MODNAME=KBUILD_STR(qca-ssdk)"
252 +
253 +####################################################################
254 +# cflags for LNX Modules-Style Makefile
255 +####################################################################
256 +LNX_LOCAL_CFLAGS += $(MODULE_INC) $(MODULE_CFLAG) ${EXTRA_INC}
257 +export LNX_LOCAL_CFLAGS
258 --- a/make/target.mk
259 +++ b/make/target.mk
260 @@ -3,6 +3,18 @@ include $(PRJ_PATH)/make/$(OS)_opt.mk
261
262 include $(PRJ_PATH)/make/tools.mk
263
264 +####################################################################
265 +# LNX Modules-Style Makefile
266 +####################################################################
267 +src_list_loop: src_list
268 + $(foreach i, $(SUB_DIR), $(MAKE) -C $(i) src_list_loop || exit 1;)
269 +
270 +src_list:
271 + echo -n "$(LOC_SRC_FILE) " >> $(PRJ_PATH)/src_list.dep
272 +
273 +####################################################################
274 +# SSDK-Style Makefile
275 +####################################################################
276 obj: $(OBJ_LIST)
277 $(OBJ_LOOP)
278
279 --- a/src/api/Makefile
280 +++ b/src/api/Makefile
281 @@ -1,4 +1,4 @@
282 -LOC_DIR=src/sal
283 +LOC_DIR=src/api
284 LIB=API
285
286 include $(PRJ_PATH)/make/config.mk