diff options
author | Waldemar Brodkorb <wbx@openadk.org> | 2014-03-15 22:16:11 +0100 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2014-03-15 22:16:11 +0100 |
commit | a1cb74821a3d4ccb708280ad1ed8297c67c4a54b (patch) | |
tree | 51c8435bca5b4bbe83d4ca4dae420c0879705442 | |
parent | 5ab73932ee0b48cee835aecf6434bd32ec1ea599 (diff) |
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.
-rw-r--r-- | mk/kernel-build.mk | 11 | ||||
-rw-r--r-- | mk/kernel-vars.mk | 31 | ||||
-rw-r--r-- | target/config/Config.in.tools | 5 | ||||
-rw-r--r-- | target/linux/config/Config.in.audio | 15 | ||||
-rw-r--r-- | toolchain/kernel-headers/Makefile | 6 | ||||
-rw-r--r-- | toolchain/kernel-headers/patches/3.13.6/relocs.patch | 30 | ||||
-rw-r--r-- | tools/Makefile | 3 | ||||
-rw-r--r-- | tools/pcre/Makefile | 30 |
8 files changed, 86 insertions, 45 deletions
diff --git a/mk/kernel-build.mk b/mk/kernel-build.mk index f95796950..ffb612334 100644 --- a/mk/kernel-build.mk +++ b/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) diff --git a/mk/kernel-vars.mk b/mk/kernel-vars.mk index 3285e891d..7d8de54e3 100644 --- a/mk/kernel-vars.mk +++ b/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" diff --git a/target/config/Config.in.tools b/target/config/Config.in.tools index c4dcdace4..c2dee7e19 100644 --- a/target/config/Config.in.tools +++ b/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 diff --git a/target/linux/config/Config.in.audio b/target/linux/config/Config.in.audio index d3a15d602..cc84914d2 100644 --- a/target/linux/config/Config.in.audio +++ b/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 diff --git a/toolchain/kernel-headers/Makefile b/toolchain/kernel-headers/Makefile index 4303accdc..89ebf340f 100644 --- a/toolchain/kernel-headers/Makefile +++ b/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 diff --git a/toolchain/kernel-headers/patches/3.13.6/relocs.patch b/toolchain/kernel-headers/patches/3.13.6/relocs.patch index 649b9e73e..69a7c88a9 100644 --- a/toolchain/kernel-headers/patches/3.13.6/relocs.patch +++ b/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 diff --git a/tools/Makefile b/tools/Makefile index cdbf2b4f1..bfed325e0 100644 --- a/tools/Makefile +++ b/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)) diff --git a/tools/pcre/Makefile b/tools/pcre/Makefile new file mode 100644 index 000000000..f88fe230a --- /dev/null +++ b/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 |