Browse Source

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 years ago
parent
commit
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
 	$(TRACE) target/$(ADK_TARGET_ARCH)-kernel-configure
 	-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
-	${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
 
 $(LINUX_DIR)/$(KERNEL_FILE): $(LINUX_DIR)/.config
 	$(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)
 
 $(LINUX_BUILD_DIR)/modules: $(LINUX_DIR)/$(KERNEL_FILE)
 	$(TRACE) target/$(ADK_TARGET_ARCH)-kernel-modules-install
 	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 \
 		LOCALVERSION="" \
 		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
 # 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}'
 
-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
 
-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
 	default n
 
+config ADK_HOST_NEED_PCRE
+	boolean
+	default y if ADK_HOST_DARWIN
+	default n
+
 config ADK_TOOLS_ADDPATTERN_ARGS
 	string
 	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
 	boolean
 
-config ADK_KERNEL_SND_TIMER
+config ADK_KPACKAGE_KMOD_SND_TIMER
 	boolean
 
-config ADK_KERNEL_SND_PCM
+config ADK_KPACKAGE_KMOD_SND_PCM
 	boolean
 
-config ADK_KERNEL_SND_HWDEP
-	boolean
+config ADK_KPACKAGE_KMOD_SND_HWDEP
+	tristate
 
 config ADK_KPACKAGE_KMOD_SOUND
 	tristate
@@ -40,14 +40,15 @@ config ADK_KPACKAGE_KMOD_SND_COMPRESS
 config ADK_KPACKAGE_KMOD_SND
 	tristate
 	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
 
 config ADK_KPACKAGE_KMOD_SND_INTEL8X0
 	prompt "kmod-snd-intel8x0............. Intel AC97 driver"
 	tristate
+	select ADK_KERNEL_SND_PCI
 	select ADK_KPACKAGE_KMOD_SND_AC97_CODEC
 	select ADK_KPACKAGE_KMOD_SND
 	default y if ADK_TARGET_SYSTEM_IBM_X40

+ 3 - 3
toolchain/kernel-headers/Makefile

@@ -4,12 +4,12 @@
 include $(TOPDIR)/rules.mk
 include ../rules.mk
 include $(TOPDIR)/mk/linux.mk
+include ${TOPDIR}/mk/kernel-vars.mk
 include ${TOPDIR}/mk/buildhlp.mk
 
 $(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 \
 		headers_install
 	@-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 <errno.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
 +#include "elf.h"
 +#endif
++#ifdef __APPLE__
++#include <pcreposix.h>
++#else
  #include <regex.h>
++#endif
  #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 @@
 +#ifndef _ELF_H
 +#define _ELF_H

+ 3 - 0
tools/Makefile

@@ -32,6 +32,9 @@ endif
 ifeq ($(ADK_HOST_NEED_CCACHE),y)
 TARGETS+=ccache
 endif
+ifeq ($(ADK_HOST_NEED_PCRE),y)
+TARGETS+=pcre
+endif
 
 TARGETS_INSTALL:=$(patsubst %,%-install,$(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