kernel: qca-ssdk: backport support for building as kernel module
authorRobert Marko <robimarko@gmail.com>
Tue, 23 May 2023 12:55:48 +0000 (14:55 +0200)
committerChristian Marangi <ansuelsmth@gmail.com>
Tue, 23 May 2023 21:51:39 +0000 (23:51 +0200)
Currently, SSDK is rather special in the sense that its not being built as
a proper out of tree module at all but rather like a userspace application
and that involves a lot of make magic which unfortunately broke with make
version 4.4 and newer.

Luckily QCA finally added a way to build SSDK as an out of tree module
and it uses the kernel buildsystem which makes it compile with make 4.4
as well.
So lets backport the support for it and switch to using it.

Signed-off-by: Robert Marko <robimarko@gmail.com>
package/kernel/qca-ssdk/Makefile
package/kernel/qca-ssdk/patches/0012-qca-ssdk-Support-Linux-Style-Makefile-for-SSDK.patch [new file with mode: 0644]
package/kernel/qca-ssdk/patches/0013-qca-ssdk-fix-compilation-issue-in-Linux-Style-Makefi.patch [new file with mode: 0644]
package/kernel/qca-ssdk/patches/0014-qca-ssdk-fix-compilation-issue-in-Miami-yocto.patch [new file with mode: 0644]

index 62c60fc1becde5ad9254d890ca1b7468e0a1e3b9..92f7b66490be97fa0203cd0fd7c1463c94092071 100644 (file)
@@ -1,7 +1,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=qca-ssdk
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/qca-ssdk.git
 PKG_SOURCE_PROTO:=git
@@ -37,6 +37,8 @@ else
 TOOLCHAIN_BIN_PATH=$(TOOLCHAIN_DIR)/bin
 endif
 
+LNX_CONFIG_OPTS = LNX_MAKEOPTS='$(KERNEL_MAKEOPTS)' MODULE_TYPE=KSLIB modules
+
 MAKE_FLAGS+= \
        TARGET_NAME=$(CONFIG_TARGET_NAME) \
        TOOL_PATH=$(TOOLCHAIN_BIN_PATH) \
@@ -47,7 +49,7 @@ MAKE_FLAGS+= \
        TARGET_SUFFIX=$(CONFIG_TARGET_SUFFIX) \
        GCC_VERSION=$(GCC_VERSION) \
        EXTRA_CFLAGS=-fno-stack-protector -I$(STAGING_DIR)/usr/include \
-       $(KERNEL_MAKE_FLAGS)
+       $(LNX_CONFIG_OPTS)
 
 ifeq ($(CONFIG_TARGET_BOARD), "ipq807x")
     MAKE_FLAGS+= CHIP_TYPE=HPPE PTP_FEATURE=disable SWCONFIG_FEATURE=disable
diff --git a/package/kernel/qca-ssdk/patches/0012-qca-ssdk-Support-Linux-Style-Makefile-for-SSDK.patch b/package/kernel/qca-ssdk/patches/0012-qca-ssdk-Support-Linux-Style-Makefile-for-SSDK.patch
new file mode 100644 (file)
index 0000000..91b7d57
--- /dev/null
@@ -0,0 +1,286 @@
+From edd3d4347cc73a99c7cf59aceeb1e8ad4d4dd303 Mon Sep 17 00:00:00 2001
+From: crao <quic_crao@quicinc.com>
+Date: Tue, 15 Nov 2022 18:50:01 +0800
+Subject: [PATCH] [qca-ssdk]: Support Linux-Style Makefile for SSDK
+
+Change-Id: I8c4399433b6422ef6192f70bf08b0d3023cc94b6
+Signed-off-by: crao <quic_crao@quicinc.com>
+---
+ Makefile          | 15 +++++++++++++
+ Makefile.modules  | 16 ++++++++++++++
+ make/defs.mk      |  1 +
+ make/linux_opt.mk | 54 ++++++++++++++++++++++++++++-------------------
+ make/target.mk    | 12 +++++++++++
+ src/api/Makefile  |  2 +-
+ 6 files changed, 77 insertions(+), 23 deletions(-)
+ mode change 100755 => 100644 Makefile
+ create mode 100644 Makefile.modules
+ mode change 100755 => 100644 make/defs.mk
+ mode change 100755 => 100644 make/linux_opt.mk
+ mode change 100755 => 100644 make/target.mk
+ mode change 100755 => 100644 src/api/Makefile
+
+--- a/Makefile
++++ b/Makefile
+@@ -12,6 +12,9 @@ include ./make/$(OS)_opt.mk
+ SUB_DIR=$(patsubst %/, %, $(dir $(wildcard src/*/Makefile)))
+ SUB_LIB=$(subst src/, , $(SUB_DIR))
++####################################################################
++#                     SSDK-Style Makefile
++####################################################################
+ all: $(BIN_DIR) kslib
+       mkdir -p ./temp/;cd ./temp;cp ../build/bin/ssdk_ks_km.a ./;ar -x ssdk_ks_km.a; cp ../ko_Makefile ./Makefile;
+       make -C $(SYS_PATH) M=$(PRJ_PATH)/temp/ CROSS_COMPILE=$(TOOLPREFIX) modules
+@@ -20,6 +23,18 @@ all: $(BIN_DIR) kslib
+       rm -Rf ./temp/*.o ./temp/*.ko ./temp/*.a
+       @echo "---Build [SSDK-$(VERSION)] at $(BUILD_DATE) finished."
++####################################################################
++#                     LNX Modules-Style Makefile
++####################################################################
++modules: $(BIN_DIR) kslib_c
++      cp Makefile.modules ./Makefile;
++      make -C $(SYS_PATH) M=$(PRJ_PATH)/ $(LNX_MAKEOPTS) modules
++      cp *.ko build/bin;
++      @echo "---Build [SSDK-$(VERSION)] at $(BUILD_DATE) finished."
++
++kslib_c:
++      $(foreach i, $(SUB_LIB), $(MAKE) MODULE_TYPE=KSLIB -C src/$i src_list_loop || exit 1;)
++
+ kslib:kslib_o
+       $(AR) -r $(BIN_DIR)/$(KS_MOD)_$(RUNMODE).a $(wildcard $(BLD_DIR)/KSLIB/*.o)
+--- /dev/null
++++ b/Makefile.modules
+@@ -0,0 +1,16 @@
++####################################################################
++#                     Add All Local Flags
++####################################################################
++ccflags-y += $(LNX_LOCAL_CFLAGS) -Wno-error
++
++####################################################################
++#                     Build Object List
++####################################################################
++SRC_LIST := $(shell cat $(PRJ_PATH)/src_list.dep)
++OBJ_LIST := $(patsubst %.c,%.o,$(SRC_LIST))
++
++####################################################################
++#                     Linux Kernel Module
++####################################################################
++obj-m :=  qca-ssdk.o
++qca-ssdk-objs := $(OBJ_LIST)
+--- a/make/defs.mk
++++ b/make/defs.mk
+@@ -7,6 +7,7 @@ ifeq (,$(findstring $(LIB), $(COMPONENTS
+ endif
+ SRC_FILE=$(addprefix $(PRJ_PATH)/$(LOC_DIR)/, $(SRC_LIST))
++LOC_SRC_FILE=$(addprefix $(LOC_DIR)/, $(SRC_LIST))
+ OBJ_LIST=$(SRC_LIST:.c=.o)
+ OBJ_FILE=$(addprefix $(DST_DIR)/, $(OBJ_LIST))
+--- a/make/linux_opt.mk
++++ b/make/linux_opt.mk
+@@ -295,7 +295,7 @@ ifeq (TRUE, $(DEBUG_ON))
+   MODULE_CFLAG += -g
+ endif
+-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)"
++MODULE_CFLAG += $(OPT_FLAG) -Wall -DVERSION=\"$(VERSION)\" -DBUILD_DATE=\"$(BUILD_DATE)\" -DOS=\"$(OS)\" -D"KBUILD_STR(s)=\#s"
+ MODULE_INC += -I$(PRJ_PATH)/include \
+                    -I$(PRJ_PATH)/include/common \
+@@ -450,7 +450,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
+               MODULE_CFLAG += -DKVER34
+               MODULE_CFLAG += -DKVER32
+           MODULE_CFLAG += -DLNX26_22
+-          MODULE_INC += -I$(SYS_PATH) \
++          SYS_INC += -I$(SYS_PATH) \
+                   -I$(TOOL_PATH)/../lib/gcc/$(TARGET_NAME)/$(GCC_VERSION)/include/ \
+                 -I$(SYS_PATH)/include \
+               -I$(SYS_PATH)/source/include \
+@@ -473,7 +473,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
+                 MODULE_CFLAG += -DKVER32
+             MODULE_CFLAG += -DLNX26_22
+           ifeq ($(ARCH), arm64)
+-            MODULE_INC += -I$(SYS_PATH) \
++            SYS_INC += -I$(SYS_PATH) \
+                   -I$(TOOL_PATH)/../lib/gcc/$(TARGET_NAME)/$(GCC_VERSION)/include/ \
+                   -I$(SYS_PATH)/include \
+               -I$(SYS_PATH)/source \
+@@ -492,13 +492,13 @@ ifeq (KSLIB, $(MODULE_TYPE))
+               -I$(SYS_PATH)/source/include/uapi
+             ifneq ($(wildcard $(SYS_PATH)/include/linux/kconfig.h),)
+-                MODULE_INC += -include $(SYS_PATH)/include/linux/kconfig.h
++                SYS_INC += -include $(SYS_PATH)/include/linux/kconfig.h
+             else
+-                MODULE_INC += -include $(KERNEL_SRC)/include/linux/kconfig.h
++                SYS_INC += -include $(KERNEL_SRC)/include/linux/kconfig.h
+             endif
+           else ifeq ($(ARCH), arm)
+-          MODULE_INC += -I$(SYS_PATH) \
++          SYS_INC += -I$(SYS_PATH) \
+               -I$(TOOL_PATH)/../lib/gcc/$(TARGET_NAME)/$(GCC_VERSION)/include/ \
+             -I$(TOOL_PATH)/../lib/gcc/$(TARGET_NAME)/7.5.0/include/ \
+               -I$(TOOL_PATH)/../../lib/armv7a-vfp-neon-rdk-linux-gnueabi/gcc/arm-rdk-linux-gnueabi/4.8.4/include/ \
+@@ -522,13 +522,13 @@ ifeq (KSLIB, $(MODULE_TYPE))
+               -I$(TOOL_PATH)/../../lib/arm-rdk-linux-gnueabi/gcc/arm-rdk-linux-gnueabi/9.3.0/include/
+             ifneq ($(wildcard $(SYS_PATH)/include/linux/kconfig.h),)
+-                MODULE_INC += -include $(SYS_PATH)/include/linux/kconfig.h
++                SYS_INC += -include $(SYS_PATH)/include/linux/kconfig.h
+             else
+-                MODULE_INC += -include $(KERNEL_SRC)/include/linux/kconfig.h
++                SYS_INC += -include $(KERNEL_SRC)/include/linux/kconfig.h
+             endif
+             else
+-            MODULE_INC += -I$(SYS_PATH) \
++            SYS_INC += -I$(SYS_PATH) \
+               -I$(TOOL_PATH)/../lib/gcc/$(TARGET_NAME)/$(GCC_VERSION)/include/ \
+               -I$(SYS_PATH)/include \
+               -I$(SYS_PATH)/source \
+@@ -564,7 +564,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
+             MODULE_CFLAG += -DLNX26_22
+           ifeq ($(ARCH), arm64)
+           KCONF_FILE = $(SYS_PATH)/source/include/linux/kconfig.h
+-            MODULE_INC += -I$(SYS_PATH) \
++            SYS_INC += -I$(SYS_PATH) \
+                   -I$(TOOL_PATH)/../lib/gcc/$(TARGET_NAME)/$(GCC_VERSION)/include/ \
+                   -I$(SYS_PATH)/include \
+               -I$(SYS_PATH)/source/include \
+@@ -581,7 +581,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
+               -I$(SYS_PATH)/source/arch/arm64/include/asm/mach \
+             -include $(KCONF_FILE)
+           else ifeq ($(ARCH), arm)
+-          MODULE_INC += -I$(SYS_PATH) \
++          SYS_INC += -I$(SYS_PATH) \
+               -I$(TOOL_PATH)/../lib/gcc/$(TARGET_NAME)/$(GCC_VERSION)/include/ \
+               -I$(TOOL_PATH)/../../lib/armv7a-vfp-neon-rdk-linux-gnueabi/gcc/arm-rdk-linux-gnueabi/4.8.4/include/ \
+               -I$(SYS_PATH)/include \
+@@ -604,7 +604,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
+               MODULE_CFLAG += -DKVER34
+               MODULE_CFLAG += -DKVER32
+           MODULE_CFLAG += -DLNX26_22
+-          MODULE_INC += -I$(SYS_PATH) \
++          SYS_INC += -I$(SYS_PATH) \
+                   -I$(TOOL_PATH)/../lib/gcc/$(TARGET_NAME)/$(GCC_VERSION)/include/ \
+                 -I$(TOOL_PATH)/../../lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include/ \
+                 -I$(TOOL_PATH)/../../lib/armv7a-vfp-neon-rdk-linux-gnueabi/gcc/arm-rdk-linux-gnueabi/4.8.4/include/ \
+@@ -627,10 +627,10 @@ ifeq (KSLIB, $(MODULE_TYPE))
+               -I$(EXT_PATH) \
+               -I$(SYS_PATH)/source/arch/arm/include/asm/mach
+       ifneq ($(wildcard $(SYS_PATH)/include/linux/kconfig.h),)
+-              MODULE_INC += \
++              SYS_INC += \
+                       -include $(SYS_PATH)/include/linux/kconfig.h
+       else
+-              MODULE_INC += \
++              SYS_INC += \
+                       -include $(SYS_PATH)/source/include/linux/kconfig.h
+       endif
+@@ -641,7 +641,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
+               MODULE_CFLAG += -DKVER32
+           MODULE_CFLAG += -DLNX26_22
+           MODULE_CFLAG += -Werror
+-          MODULE_INC += -I$(SYS_PATH) \
++          SYS_INC += -I$(SYS_PATH) \
+                 -I$(SYS_PATH)/include \
+               -I$(SYS_PATH)/source/include \
+               -I$(SYS_PATH)/source/arch/arm/mach-msm/include \
+@@ -657,7 +657,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
+       MODULE_CFLAG += -DKVER32
+       MODULE_CFLAG += -DLNX26_22
+       ifeq (mips, $(CPU))
+-        MODULE_INC += -I$(SYS_PATH) \
++        SYS_INC += -I$(SYS_PATH) \
+             -I$(SYS_PATH)/include \
+             -I$(SYS_PATH)/arch/mips/include \
+           -I$(SYS_PATH)/arch/mips/include/asm/mach-ar7240 \
+@@ -678,7 +678,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
+                      -O2 -fno-pic -pipe -mabi=32 -march=mips32r2 -DMODULE -mlong-calls -DEXPORT_SYMTAB
+           endif
+     else
+-          MODULE_INC += -I$(SYS_PATH) \
++          SYS_INC += -I$(SYS_PATH) \
+               -I$(SYS_PATH)/include \
+               -I$(SYS_PATH)/arch/arm/include \
+               -I$(SYS_PATH)/arch/arm/include/asm \
+@@ -695,7 +695,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
+         MODULE_CFLAG += -DKVER26
+         MODULE_CFLAG += -DLNX26_22
+         ifeq (mips, $(CPU))
+-          MODULE_INC += -I$(SYS_PATH) \
++          SYS_INC += -I$(SYS_PATH) \
+             -I$(SYS_PATH)/include \
+             -I$(SYS_PATH)/arch/mips/include \
+             -I$(SYS_PATH)/arch/mips/include/asm/mach-ar7240 \
+@@ -708,7 +708,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
+                      -O2 -fno-pic -pipe -mabi=32 -march=mips32r2 -DMODULE -mlong-calls -DEXPORT_SYMTAB
+           endif
+         else
+-          MODULE_INC += -I$(SYS_PATH) \
++          SYS_INC += -I$(SYS_PATH) \
+               -I$(SYS_PATH)/include \
+               -I$(SYS_PATH)/arch/arm/include \
+               -I$(SYS_PATH)/arch/arm/include/asm \
+@@ -721,8 +721,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
+   endif
+-  MODULE_CFLAG += -D__KERNEL__ -DKERNEL_MODULE $(CPU_CFLAG)
+-
++  MODULE_CFLAG += -D__KERNEL__ -DKERNEL_MODULE 
+ endif
+@@ -748,4 +747,15 @@ ifneq (TRUE, $(KERNEL_MODE))
+   endif
+ endif
+-LOCAL_CFLAGS += $(MODULE_INC) $(MODULE_CFLAG) $(EXTRA_CFLAGS)
++LOCAL_CFLAGS += $(MODULE_INC) $(SYS_INC) $(MODULE_CFLAG) $(EXTRA_CFLAGS)
++
++####################################################################
++#                     cflags for SSDK-Style Makefile
++####################################################################
++LOCAL_CFLAGS += $(CPU_CFLAG) -D"KBUILD_MODNAME=KBUILD_STR(qca-ssdk)"
++
++####################################################################
++#                     cflags for LNX Modules-Style Makefile
++####################################################################
++LNX_LOCAL_CFLAGS += $(MODULE_INC) $(MODULE_CFLAG) ${EXTRA_INC}
++export LNX_LOCAL_CFLAGS
+--- a/make/target.mk
++++ b/make/target.mk
+@@ -3,6 +3,18 @@ include $(PRJ_PATH)/make/$(OS)_opt.mk
+ include $(PRJ_PATH)/make/tools.mk
++####################################################################
++#                     LNX Modules-Style Makefile
++####################################################################
++src_list_loop: src_list
++      $(foreach i, $(SUB_DIR), $(MAKE) -C $(i) src_list_loop || exit 1;)
++
++src_list:
++      echo -n "$(LOC_SRC_FILE) " >>  $(PRJ_PATH)/src_list.dep
++
++####################################################################
++#                     SSDK-Style Makefile
++####################################################################
+ obj: $(OBJ_LIST)
+       $(OBJ_LOOP)
+--- a/src/api/Makefile
++++ b/src/api/Makefile
+@@ -1,4 +1,4 @@
+-LOC_DIR=src/sal
++LOC_DIR=src/api
+ LIB=API
+ include $(PRJ_PATH)/make/config.mk
diff --git a/package/kernel/qca-ssdk/patches/0013-qca-ssdk-fix-compilation-issue-in-Linux-Style-Makefi.patch b/package/kernel/qca-ssdk/patches/0013-qca-ssdk-fix-compilation-issue-in-Linux-Style-Makefi.patch
new file mode 100644 (file)
index 0000000..792cd9e
--- /dev/null
@@ -0,0 +1,27 @@
+From 3026f89b06049df01d5fe19c5fccc972637aa344 Mon Sep 17 00:00:00 2001
+From: crao <quic_crao@quicinc.com>
+Date: Tue, 7 Mar 2023 17:15:07 +0800
+Subject: [PATCH] [qca-ssdk]: fix compilation issue in Linux-Style Makefile
+
+Change-Id: If38251fc0a2bf4abc666d30f4812c0d9507310dc
+Signed-off-by: crao <quic_crao@quicinc.com>
+---
+ Makefile | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+ mode change 100644 => 100755 Makefile
+
+--- a/Makefile
++++ b/Makefile
+@@ -27,9 +27,9 @@ all: $(BIN_DIR) kslib
+ #                     LNX Modules-Style Makefile
+ ####################################################################
+ modules: $(BIN_DIR) kslib_c
+-      cp Makefile.modules ./Makefile;
+-      make -C $(SYS_PATH) M=$(PRJ_PATH)/ $(LNX_MAKEOPTS) modules
+-      cp *.ko build/bin;
++      mkdir -p ./temp/;cp * ./temp -a;cd ./temp;cp ../Makefile.modules ./Makefile;
++      make -C $(SYS_PATH) M=$(PRJ_PATH)/temp $(LNX_MAKEOPTS) modules
++      cp temp/*.ko build/bin;
+       @echo "---Build [SSDK-$(VERSION)] at $(BUILD_DATE) finished."
+ kslib_c:
diff --git a/package/kernel/qca-ssdk/patches/0014-qca-ssdk-fix-compilation-issue-in-Miami-yocto.patch b/package/kernel/qca-ssdk/patches/0014-qca-ssdk-fix-compilation-issue-in-Miami-yocto.patch
new file mode 100644 (file)
index 0000000..53c0c34
--- /dev/null
@@ -0,0 +1,23 @@
+From 6e4efd68e6e560a1994bc273fe6f7a72139f3957 Mon Sep 17 00:00:00 2001
+From: crao <quic_crao@quicinc.com>
+Date: Wed, 15 Mar 2023 11:19:39 +0800
+Subject: [PATCH] [qca-ssdk]: fix compilation issue in Miami yocto
+
+Change-Id: I8526b9e43667d72ae9afa4ef8a13167088d194ba
+Signed-off-by: crao <quic_crao@quicinc.com>
+---
+ Makefile | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/Makefile
++++ b/Makefile
+@@ -29,7 +29,9 @@ all: $(BIN_DIR) kslib
+ modules: $(BIN_DIR) kslib_c
+       mkdir -p ./temp/;cp * ./temp -a;cd ./temp;cp ../Makefile.modules ./Makefile;
+       make -C $(SYS_PATH) M=$(PRJ_PATH)/temp $(LNX_MAKEOPTS) modules
++      cp $(PRJ_PATH)/temp/Module.symvers $(PRJ_PATH)/Module.symvers;
+       cp temp/*.ko build/bin;
++      rm -Rf ./temp/*.o ./temp/*.ko ./temp/*.a
+       @echo "---Build [SSDK-$(VERSION)] at $(BUILD_DATE) finished."
+ kslib_c: