瀏覽代碼

fix kernel build on Darwin for x86 targets

relocs tool uses some kind of regular expression, which does
not work with the provided one. Use pcre in this case.
Rework KERNEL_MAKE_OPTS while here. Use it in kernel-header, too.
Waldemar Brodkorb 10 年之前
父節點
當前提交
a1cb74821a

+ 3 - 8
mk/kernel-build.mk

@@ -37,24 +37,19 @@ $(LINUX_DIR)/.prepared: $(TOOLCHAIN_BUILD_DIR)/w-$(PKG_NAME)-$(PKG_VERSION)-$(PK
 $(LINUX_DIR)/.config: $(LINUX_DIR)/.prepared $(BUILD_DIR)/.kernelconfig $(TOPDIR)/mk/modules.mk
 $(LINUX_DIR)/.config: $(LINUX_DIR)/.prepared $(BUILD_DIR)/.kernelconfig $(TOPDIR)/mk/modules.mk
 	$(TRACE) target/$(ADK_TARGET_ARCH)-kernel-configure
 	$(TRACE) target/$(ADK_TARGET_ARCH)-kernel-configure
 	-for f in $(TARGETS);do if [ -f $$f ];then rm $$f;fi;done
 	-for f in $(TARGETS);do if [ -f $$f ];then rm $$f;fi;done
-ifeq ($(ADK_USE_KERNEL_MINICONFIG),y)
 	$(CP) $(BUILD_DIR)/.kernelconfig $(LINUX_DIR)/mini.config
 	$(CP) $(BUILD_DIR)/.kernelconfig $(LINUX_DIR)/mini.config
-	${KERNEL_MAKE_ENV} $(MAKE) ${KERNEL_MAKE_OPTS} KCONFIG_ALLCONFIG=mini.config allnoconfig $(MAKE_TRACE)
-else
-	$(CP) $(BUILD_DIR)/.kernelconfig $(LINUX_DIR)/.config
-	echo N | ${KERNEL_MAKE_ENV} $(MAKE) ${KERNEL_MAKE_OPTS} oldconfig $(MAKE_TRACE)
-endif
+	${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} KCONFIG_ALLCONFIG=mini.config allnoconfig $(MAKE_TRACE)
 	touch -c $(LINUX_DIR)/.config
 	touch -c $(LINUX_DIR)/.config
 
 
 $(LINUX_DIR)/$(KERNEL_FILE): $(LINUX_DIR)/.config
 $(LINUX_DIR)/$(KERNEL_FILE): $(LINUX_DIR)/.config
 	$(TRACE) target/$(ADK_TARGET_ARCH)-kernel-compile
 	$(TRACE) target/$(ADK_TARGET_ARCH)-kernel-compile
-	${KERNEL_MAKE_ENV} $(MAKE) ${KERNEL_MAKE_OPTS} -j${ADK_MAKE_JOBS} LOCALVERSION="" $(KERNEL_TARGET) modules $(MAKE_TRACE)
+	${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} -j${ADK_MAKE_JOBS} LOCALVERSION="" $(KERNEL_TARGET) modules $(MAKE_TRACE)
 	touch -c $(LINUX_DIR)/$(KERNEL_FILE)
 	touch -c $(LINUX_DIR)/$(KERNEL_FILE)
 
 
 $(LINUX_BUILD_DIR)/modules: $(LINUX_DIR)/$(KERNEL_FILE)
 $(LINUX_BUILD_DIR)/modules: $(LINUX_DIR)/$(KERNEL_FILE)
 	$(TRACE) target/$(ADK_TARGET_ARCH)-kernel-modules-install
 	$(TRACE) target/$(ADK_TARGET_ARCH)-kernel-modules-install
 	rm -rf $(LINUX_BUILD_DIR)/modules
 	rm -rf $(LINUX_BUILD_DIR)/modules
-	${KERNEL_MAKE_ENV} $(MAKE) ${KERNEL_MAKE_OPTS} DEPMOD=true \
+	${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} DEPMOD=true \
 		INSTALL_MOD_PATH=$(LINUX_BUILD_DIR)/modules \
 		INSTALL_MOD_PATH=$(LINUX_BUILD_DIR)/modules \
 		LOCALVERSION="" \
 		LOCALVERSION="" \
 		modules_install $(MAKE_TRACE)
 		modules_install $(MAKE_TRACE)

+ 11 - 20
mk/kernel-vars.mk

@@ -1,27 +1,18 @@
 # This file is part of the OpenADK project. OpenADK is copyrighted
 # This file is part of the OpenADK project. OpenADK is copyrighted
 # material, please see the LICENCE file in the top-level directory.
 # material, please see the LICENCE file in the top-level directory.
 
 
-KERNEL_MAKE_OPTS:=	-C "${LINUX_DIR}" V=1 \
-			CROSS_COMPILE="$(TARGET_CROSS)" ARCH=$(ARCH) \
-			CC="$(TARGET_CC)" HOSTCC="${CC_FOR_BUILD}" \
-			HOSTCFLAGS='${CFLAGS_FOR_BUILD}' \
+KERNEL_MAKE_OPTS:=	V=1 \
+			ARCH=$(ARCH) \
+			CROSS_COMPILE="$(TARGET_CROSS)" \
+			CC="$(TARGET_CC)" \
+			HOSTCC="${CC_FOR_BUILD}" \
 			CONFIG_SHELL='${SHELL}'
 			CONFIG_SHELL='${SHELL}'
 
 
-ifeq (${ADK_TARGET_BROADCOM_MODEL_LINKSYS_WRT54G},y)
-ADK_KCPPFLAGS+=		-DBCM47XX_OVERRIDE_FLASHSIZE=0x400000 \
-			-DBCM47XX_OVERRIDE_NVRAMSIZE=0x10000 \
-			-DBCM47XX_OVERRIDE_CFESIZE=0x40000
-endif
-ifeq (${ADK_TARGET_BROADCOM_MODEL_LINKSYS_WRT54GS},y)
-ADK_KCPPFLAGS+=		-DBCM47XX_OVERRIDE_FLASHSIZE=0x800000 \
-			-DBCM47XX_OVERRIDE_NVRAMSIZE=0x20000 \
-			-DBCM47XX_OVERRIDE_CFESIZE=0x40000
-endif
-ifeq (${ADK_TARGET_BROADCOM_MODEL_ASUS_WL500GP},y)
-ADK_KCPPFLAGS+=		-DBCM47XX_OVERRIDE_FLASHSIZE=0x800000 \
-			-DBCM47XX_OVERRIDE_NVRAMSIZE=0x20000 \
-			-DBCM47XX_OVERRIDE_CFESIZE=0x40000
+# regex for relocs needs pcre on Darwin
+ifeq ($(ADK_HOST_DARWIN),y)
+KERNEL_MAKE_OPTS+=	HOSTCFLAGS='$(CPPFLAGS_FOR_BUILD) ${CFLAGS_FOR_BUILD}' HOSTLDFLAGS='-lpcreposix'
+else
+KERNEL_MAKE_OPTS+=	HOSTCFLAGS='${CFLAGS_FOR_BUILD}'
 endif
 endif
 
 
-KERNEL_MAKE_ENV+=	KCPPFLAGS='${ADK_KCPPFLAGS}' \
-			PATH="${STAGING_HOST_DIR}/usr/bin:$$PATH"
+KERNEL_MAKE_ENV+=	PATH="${STAGING_HOST_DIR}/usr/bin:$$PATH"

+ 5 - 0
target/config/Config.in.tools

@@ -38,6 +38,11 @@ config ADK_HOST_NEED_CCACHE
 	boolean
 	boolean
 	default n
 	default n
 
 
+config ADK_HOST_NEED_PCRE
+	boolean
+	default y if ADK_HOST_DARWIN
+	default n
+
 config ADK_TOOLS_ADDPATTERN_ARGS
 config ADK_TOOLS_ADDPATTERN_ARGS
 	string
 	string
 	default "-p W54G -v v4.20.6" if ADK_TARGET_BROADCOM_MODEL_LINKSYS_WRT54G
 	default "-p W54G -v v4.20.6" if ADK_TARGET_BROADCOM_MODEL_LINKSYS_WRT54G

+ 8 - 7
target/linux/config/Config.in.audio

@@ -13,14 +13,14 @@ config ADK_KERNEL_SND_USB
 config ADK_KERNEL_SND_PXA2XX_AC97
 config ADK_KERNEL_SND_PXA2XX_AC97
 	boolean
 	boolean
 
 
-config ADK_KERNEL_SND_TIMER
+config ADK_KPACKAGE_KMOD_SND_TIMER
 	boolean
 	boolean
 
 
-config ADK_KERNEL_SND_PCM
+config ADK_KPACKAGE_KMOD_SND_PCM
 	boolean
 	boolean
 
 
-config ADK_KERNEL_SND_HWDEP
-	boolean
+config ADK_KPACKAGE_KMOD_SND_HWDEP
+	tristate
 
 
 config ADK_KPACKAGE_KMOD_SOUND
 config ADK_KPACKAGE_KMOD_SOUND
 	tristate
 	tristate
@@ -40,14 +40,15 @@ config ADK_KPACKAGE_KMOD_SND_COMPRESS
 config ADK_KPACKAGE_KMOD_SND
 config ADK_KPACKAGE_KMOD_SND
 	tristate
 	tristate
 	select ADK_KPACKAGE_KMOD_SOUND
 	select ADK_KPACKAGE_KMOD_SOUND
-	select ADK_KERNEL_SND_TIMER
-	select ADK_KERNEL_SND_PCM
-	select ADK_KERNEL_SND_HWDEP
+	select ADK_KPACKAGE_KMOD_SND_PCM
+	select ADK_KPACKAGE_KMOD_SND_TIMER
+	select ADK_KPACKAGE_KMOD_SND_HWDEP
 	default n
 	default n
 
 
 config ADK_KPACKAGE_KMOD_SND_INTEL8X0
 config ADK_KPACKAGE_KMOD_SND_INTEL8X0
 	prompt "kmod-snd-intel8x0............. Intel AC97 driver"
 	prompt "kmod-snd-intel8x0............. Intel AC97 driver"
 	tristate
 	tristate
+	select ADK_KERNEL_SND_PCI
 	select ADK_KPACKAGE_KMOD_SND_AC97_CODEC
 	select ADK_KPACKAGE_KMOD_SND_AC97_CODEC
 	select ADK_KPACKAGE_KMOD_SND
 	select ADK_KPACKAGE_KMOD_SND
 	default y if ADK_TARGET_SYSTEM_IBM_X40
 	default y if ADK_TARGET_SYSTEM_IBM_X40

+ 3 - 3
toolchain/kernel-headers/Makefile

@@ -4,12 +4,12 @@
 include $(TOPDIR)/rules.mk
 include $(TOPDIR)/rules.mk
 include ../rules.mk
 include ../rules.mk
 include $(TOPDIR)/mk/linux.mk
 include $(TOPDIR)/mk/linux.mk
+include ${TOPDIR}/mk/kernel-vars.mk
 include ${TOPDIR}/mk/buildhlp.mk
 include ${TOPDIR}/mk/buildhlp.mk
 
 
 $(WRKBUILD)/.headers:
 $(WRKBUILD)/.headers:
-	$(MAKE) -C $(WRKBUILD) HOSTCC=$(CC_FOR_BUILD) ARCH=$(ARCH) V=1 \
-		headers_check
-	$(MAKE) -C $(WRKBUILD) HOSTCC=$(CC_FOR_BUILD) ARCH=$(ARCH) V=1 \
+	$(MAKE) -C $(WRKBUILD) ${KERNEL_MAKE_OPTS} headers_check
+	$(MAKE) -C $(WRKBUILD) ${KERNEL_MAKE_OPTS} \
 		INSTALL_HDR_PATH=$(STAGING_TARGET_DIR)/usr \
 		INSTALL_HDR_PATH=$(STAGING_TARGET_DIR)/usr \
 		headers_install
 		headers_install
 	@-find $(STAGING_TARGET_DIR)/usr/include -name .install -delete
 	@-find $(STAGING_TARGET_DIR)/usr/include -name .install -delete

+ 23 - 7
toolchain/kernel-headers/patches/3.13.6/relocs.patch

@@ -1,7 +1,18 @@
-diff -Nur linux-3.11.5.orig/arch/x86/tools/relocs.h linux-3.11.5/arch/x86/tools/relocs.h
---- linux-3.11.5.orig/arch/x86/tools/relocs.h	2013-10-14 03:14:45.000000000 +0200
-+++ linux-3.11.5/arch/x86/tools/relocs.h	2013-10-20 17:41:16.000000000 +0200
-@@ -9,10 +9,14 @@
+diff -Nur linux-3.13.6.orig/arch/x86/tools/relocs.c linux-3.13.6/arch/x86/tools/relocs.c
+--- linux-3.13.6.orig/arch/x86/tools/relocs.c	2014-03-07 07:07:02.000000000 +0100
++++ linux-3.13.6/arch/x86/tools/relocs.c	2014-03-15 19:39:45.000000000 +0100
+@@ -126,6 +126,7 @@
+ 
+ 		if (err) {
+ 			regerror(err, &sym_regex_c[i], errbuf, sizeof errbuf);
++			printf("foo: %s\n", sym_regex[i]);
+ 			die("%s", errbuf);
+ 		}
+         }
+diff -Nur linux-3.13.6.orig/arch/x86/tools/relocs.h linux-3.13.6/arch/x86/tools/relocs.h
+--- linux-3.13.6.orig/arch/x86/tools/relocs.h	2014-03-07 07:07:02.000000000 +0100
++++ linux-3.13.6/arch/x86/tools/relocs.h	2014-03-15 18:48:40.000000000 +0100
+@@ -9,11 +9,19 @@
  #include <string.h>
  #include <string.h>
  #include <errno.h>
  #include <errno.h>
  #include <unistd.h>
  #include <unistd.h>
@@ -13,12 +24,17 @@ diff -Nur linux-3.11.5.orig/arch/x86/tools/relocs.h linux-3.11.5/arch/x86/tools/
 +#else
 +#else
 +#include "elf.h"
 +#include "elf.h"
 +#endif
 +#endif
++#ifdef __APPLE__
++#include <pcreposix.h>
++#else
  #include <regex.h>
  #include <regex.h>
++#endif
  #include <tools/le_byteshift.h>
  #include <tools/le_byteshift.h>
  
  
-diff -Nur linux-3.11.5.orig/tools/include/elf.h linux-3.11.5/tools/include/elf.h
---- linux-3.11.5.orig/tools/include/elf.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.11.5/tools/include/elf.h	2013-10-20 17:42:10.000000000 +0200
+ void die(char *fmt, ...);
+diff -Nur linux-3.13.6.orig/tools/include/elf.h linux-3.13.6/tools/include/elf.h
+--- linux-3.13.6.orig/tools/include/elf.h	1970-01-01 01:00:00.000000000 +0100
++++ linux-3.13.6/tools/include/elf.h	2014-03-15 18:47:36.000000000 +0100
 @@ -0,0 +1,2671 @@
 @@ -0,0 +1,2671 @@
 +#ifndef _ELF_H
 +#ifndef _ELF_H
 +#define _ELF_H
 +#define _ELF_H

+ 3 - 0
tools/Makefile

@@ -32,6 +32,9 @@ endif
 ifeq ($(ADK_HOST_NEED_CCACHE),y)
 ifeq ($(ADK_HOST_NEED_CCACHE),y)
 TARGETS+=ccache
 TARGETS+=ccache
 endif
 endif
+ifeq ($(ADK_HOST_NEED_PCRE),y)
+TARGETS+=pcre
+endif
 
 
 TARGETS_INSTALL:=$(patsubst %,%-install,$(TARGETS))
 TARGETS_INSTALL:=$(patsubst %,%-install,$(TARGETS))
 TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
 TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))

+ 30 - 0
tools/pcre/Makefile

@@ -0,0 +1,30 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=		pcre
+PKG_VERSION:=		8.34
+PKG_RELEASE:=		1
+PKG_MD5SUM:=		006c5e27fb78cdd14a628fdfa5aa1905
+PKG_SITES:=		${MASTER_SITE_SOURCEFORGE:=pcre/}
+
+include ../rules.mk
+
+install: $(WRKBUILD)/.installed
+
+$(WRKBUILD)/.configured: ${WRKDIST}/.prepared
+	(cd ${WRKBUILD}; CPPFLAGS='$(CPPFLAGS_FOR_BUILD)' \
+		LDFLAGS='$(LDFLAGS_FOR_BUILD)' \
+		./configure --prefix=$(STAGING_HOST_DIR)/usr)
+	@touch $@
+
+$(WRKBUILD)/.compiled: $(WRKBUILD)/.configured
+	${MAKE} -C ${WRKBUILD}
+	@touch $@
+
+$(WRKBUILD)/.installed: $(WRKBUILD)/.compiled
+	${MAKE} -C ${WRKBUILD} install
+	@touch $@
+
+include $(TOPDIR)/mk/tools.mk