mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 23:12:32 +00:00
856840d953
Currently, trying to compile qca-ssdk on macOS will fail in a weird way: make[6]: *** No rule to make target 'openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/qca-ssdk-2024.04.17~3d060f7a/-n', needed by 'openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/qca-ssdk-2024.04.17~3d060f7a/qca-ssdk.o'. Stop. After looking looking at src_list.dep from which KBuild cmd_mod will generate the list of objects to compile it looked like: -n /src/adpt/adpt.c -n -n Which was rather suspicous so after comparing to the same file but with Fedora as host: /src/adpt/adpt.c src/adpt/hppe/adpt_hppe_fdb.c src/adpt/hppe/adpt_hppe_mib.c It was clear that echo -n which was used in SSDK-s target.mk was not working as intented, and it looked like the POSIX only version of echo was being used which does not honor -n. So, after failling to reproduce it externally, replacing the call to echo with a full path to coreutils echo fixed the compilation. After further debugging, it was determined that SSDK does not honor CONFIG_SHELL like other kernel modules so it was defaulting to /bin/sh as the shell make was calling thus calling the /bin/sh built-in echo which on macOS is the old Bash 3.2 one and it does not respect -n. So, we have to explicitly pass SHELL=$(BASH) to SSDK to make it use bash like kernel build or other kernel modules. This is not an issue since on macOS we always build bash anyway. Link: https://github.com/openwrt/openwrt/pull/15459 Signed-off-by: Robert Marko <robimarko@gmail.com>
98 lines
3.2 KiB
Makefile
98 lines
3.2 KiB
Makefile
include $(TOPDIR)/rules.mk
|
|
|
|
PKG_NAME:=qca-ssdk
|
|
PKG_RELEASE:=2
|
|
|
|
PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/qca-ssdk.git
|
|
PKG_SOURCE_PROTO:=git
|
|
PKG_SOURCE_DATE:=2024-04-17
|
|
PKG_SOURCE_VERSION:=3d060f7ad70d087f6b0452abe79ab6d042e8cd53
|
|
PKG_MIRROR_HASH:=6f5e390b294e699491584094f5d7eb941de6237ad8c5320191e9e306fbcd8eb5
|
|
|
|
PKG_FLAGS:=nonshared
|
|
PKG_BUILD_PARALLEL:=1
|
|
PKG_BUILD_FLAGS:=no-lto
|
|
|
|
include $(INCLUDE_DIR)/kernel.mk
|
|
include $(INCLUDE_DIR)/package.mk
|
|
|
|
define KernelPackage/qca-ssdk
|
|
SECTION:=kernel
|
|
CATEGORY:=Kernel modules
|
|
SUBMENU:=Network Devices
|
|
TITLE:=Qualcom SSDK switch driver
|
|
DEPENDS:=@(TARGET_qualcommax)
|
|
FILES:=$(PKG_BUILD_DIR)/qca-ssdk.ko
|
|
AUTOLOAD:=$(call AutoLoad,30,qca-ssdk)
|
|
endef
|
|
|
|
define KernelPackage/qca-ssdk/Description
|
|
Driver for Qualcomm Atheros switches.
|
|
endef
|
|
|
|
GCC_VERSION=$(shell echo "$(CONFIG_GCC_VERSION)" | sed 's/[^0-9.]*\([0-9.]*\).*/\1/')
|
|
|
|
LNX_CONFIG_OPTS = LNX_MAKEOPTS='$(KERNEL_MAKEOPTS)' PRJ_PATH=$(PKG_BUILD_DIR) MODULE_TYPE=KSLIB modules
|
|
|
|
MAKE_FLAGS+= \
|
|
TARGET_NAME=$(CONFIG_TARGET_NAME) \
|
|
TOOL_PATH=$(firstword $(TOOLCHAIN_BIN_DIRS)) \
|
|
SYS_PATH=$(LINUX_DIR) \
|
|
TOOLPREFIX=$(TARGET_CROSS) \
|
|
KVER=$(LINUX_VERSION) \
|
|
ARCH=$(LINUX_KARCH) \
|
|
TARGET_SUFFIX=$(CONFIG_TARGET_SUFFIX) \
|
|
GCC_VERSION=$(GCC_VERSION) \
|
|
EXTRA_CFLAGS="-fno-stack-protector -I$(STAGING_DIR)/usr/include" \
|
|
SoC=$(CONFIG_TARGET_SUBTARGET) \
|
|
SHELL="$(BASH)" \
|
|
PTP_FEATURE=disable SWCONFIG_FEATURE=disable \
|
|
ISISC_ENABLE=disable IN_QCA803X_PHY=FALSE \
|
|
IN_QCA808X_PHY=FALSE IN_MALIBU_PHY=FALSE \
|
|
$(LNX_CONFIG_OPTS)
|
|
|
|
ifeq ($(CONFIG_TARGET_SUBTARGET), "ipq807x")
|
|
MAKE_FLAGS+= CHIP_TYPE=HPPE
|
|
endif
|
|
|
|
ifeq ($(CONFIG_TARGET_SUBTARGET), "ipq60xx")
|
|
MAKE_FLAGS+= CHIP_TYPE=CPPE
|
|
endif
|
|
|
|
|
|
define Build/Compile
|
|
+$(MAKE) $(PKG_JOBS) $(MAKE_FLAGS) -C $(PKG_BUILD_DIR) $(LNX_CONFIG_OPTS)
|
|
endef
|
|
|
|
define Build/InstallDev
|
|
$(INSTALL_DIR) $(1)/usr/include/qca-ssdk
|
|
$(INSTALL_DIR) $(1)/usr/include/qca-ssdk/api
|
|
$(INSTALL_DIR) $(1)/usr/include/qca-ssdk/ref
|
|
$(INSTALL_DIR) $(1)/usr/include/qca-ssdk/fal
|
|
$(INSTALL_DIR) $(1)/usr/include/qca-ssdk/sal
|
|
$(INSTALL_DIR) $(1)/usr/include/qca-ssdk/init
|
|
$(CP) -rf $(PKG_BUILD_DIR)/include/api/sw_ioctl.h $(1)/usr/include/qca-ssdk/api
|
|
if [ -f $(PKG_BUILD_DIR)/include/ref/ref_vsi.h ]; then \
|
|
$(CP) -rf $(PKG_BUILD_DIR)/include/ref/ref_vsi.h $(1)/usr/include/qca-ssdk/ref/; \
|
|
fi
|
|
if [ -f $(PKG_BUILD_DIR)/include/ref/ref_fdb.h ]; then \
|
|
$(CP) -rf $(PKG_BUILD_DIR)/include/ref/ref_fdb.h $(1)/usr/include/qca-ssdk/ref/; \
|
|
fi
|
|
if [ -f $(PKG_BUILD_DIR)/include/ref/ref_port_ctrl.h ]; then \
|
|
$(CP) -rf $(PKG_BUILD_DIR)/include/ref/ref_port_ctrl.h $(1)/usr/include/qca-ssdk/ref/; \
|
|
fi
|
|
if [ -f $(PKG_BUILD_DIR)/include/init/ssdk_init.h ]; then \
|
|
$(CP) -rf $(PKG_BUILD_DIR)/include/init/ssdk_init.h $(1)/usr/include/qca-ssdk/init/; \
|
|
fi
|
|
if [ -f $(PKG_BUILD_DIR)/include/init/ssdk_netlink.h ]; then \
|
|
$(CP) -rf $(PKG_BUILD_DIR)/include/init/ssdk_netlink.h $(1)/usr/include/qca-ssdk/init/; \
|
|
fi
|
|
$(CP) -rf $(PKG_BUILD_DIR)/include/fal $(1)/usr/include/qca-ssdk
|
|
$(CP) -rf $(PKG_BUILD_DIR)/include/common/*.h $(1)/usr/include/qca-ssdk
|
|
$(CP) -rf $(PKG_BUILD_DIR)/include/sal/os/linux/*.h $(1)/usr/include/qca-ssdk
|
|
$(CP) -rf $(PKG_BUILD_DIR)/include/sal/os/*.h $(1)/usr/include/qca-ssdk
|
|
|
|
endef
|
|
|
|
$(eval $(call KernelPackage,qca-ssdk))
|