openwrt-barrierbreaker/target/sdk/Makefile
blogic 67271d4aea sdk: predefine kernel version magic
Kernel modules which are built using the SDK do not have access
to the .vermagic file in the Linux build dir, therefore the
generated .ipk metadata depends on kernel versions like
'3.10.49-1-unknown' which are not satisfiable by the kernel
meta package in the image.

Fix this problem by substituting 'unknown' with the current
version magic in include/kernel.mk when packing the SDK.

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>

Backport of r42590

git-svn-id: svn://svn.openwrt.org/openwrt/branches/barrier_breaker@42592 3c298f89-4303-0410-b956-a3cf2f4a3e73
2014-09-17 11:01:24 +00:00

125 lines
3.6 KiB
Makefile

#
# Copyright (C) 2006-2008 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/host.mk
override MAKEFLAGS=
PKG_OS:=$(word 2,$(subst -, ,$(shell $(HOSTCC) -dumpmachine)))
PKG_CPU:=$(word 1,$(subst -, ,$(shell $(HOSTCC) -dumpmachine)))
SDK_NAME:=OpenWrt-SDK-$(BOARD)-for-$(PKG_OS)-$(PKG_CPU)-gcc-$(GCCV)_$(LIBC)-$(LIBCV)
SDK_BUILD_DIR:=$(BUILD_DIR)/$(SDK_NAME)
STAGING_SUBDIR_HOST := staging_dir/host
STAGING_SUBDIR_TARGET := staging_dir/target-$(ARCH)$(ARCH_SUFFIX)_$(LIBC)-$(LIBCV)$(if $(CONFIG_arm),_eabi)
STAGING_SUBDIR_TOOLCHAIN := staging_dir/toolchain-$(ARCH)$(ARCH_SUFFIX)_gcc-$(GCCV)_$(LIBC)-$(LIBCV)$(if $(CONFIG_arm),_eabi)
EXCLUDE_DIRS:=*/ccache \
*/stamp \
*/stampfiles \
*/man \
*/info \
*/root-* \
initial \
*.install.clean \
*.install.flags \
*.install \
*/doc
SDK_DIRS = \
$(STAGING_SUBDIR_HOST) \
$(STAGING_SUBDIR_TARGET) \
$(STAGING_SUBDIR_TOOLCHAIN)
SVN_PACKAGE_URL=$(shell svn info ../../package | awk '/^URL:/ { print $$2; }')
KDIR_BASE = $(patsubst $(TOPDIR)/%,%,$(LINUX_DIR))
KERNEL_FILES_ARCH = \
Makefile* \
module.lds \
Kbuild.platforms \
*/Platform \
include \
scripts \
kernel/asm-offsets.s
KERNEL_FILES_BASE := \
.config \
Makefile \
scripts \
include \
Module.symvers \
$(addprefix arch/$(LINUX_KARCH)/,$(KERNEL_FILES_ARCH))
KERNEL_FILES := $(patsubst $(TOPDIR)/%,%,$(wildcard $(addprefix $(LINUX_DIR)/,$(KERNEL_FILES_BASE))))
all: compile
$(BIN_DIR)/$(SDK_NAME).tar.bz2: clean
mkdir -p $(SDK_BUILD_DIR)/dl $(SDK_BUILD_DIR)/package
$(CP) $(INCLUDE_DIR) $(SCRIPT_DIR) $(TOPDIR)/docs $(SDK_BUILD_DIR)/
$(TAR) -cf - -C $(TOPDIR) \
$(foreach exclude,$(EXCLUDE_DIRS),--exclude="$(exclude)") \
$(SDK_DIRS) $(KERNEL_FILES) | \
$(TAR) -xf - -C $(SDK_BUILD_DIR)
@-( \
find \
$(SDK_BUILD_DIR)/$(STAGING_SUBDIR_HOST)/bin \
$(SDK_BUILD_DIR)/$(STAGING_SUBDIR_HOST)/usr/bin \
$(SDK_BUILD_DIR)/$(STAGING_SUBDIR_TOOLCHAIN)/bin \
$(SDK_BUILD_DIR)/$(STAGING_SUBDIR_TOOLCHAIN)/*/bin \
$(SDK_BUILD_DIR)/$(STAGING_SUBDIR_TOOLCHAIN)/libexec \
-type f; \
find \
$(SDK_BUILD_DIR)/$(STAGING_SUBDIR_HOST)/lib \
$(SDK_BUILD_DIR)/$(STAGING_SUBDIR_HOST)/usr/lib \
-type f -name \*.so\* -or -name \*.a; \
) | xargs strip 2>/dev/null >/dev/null
mkdir -p $(SDK_BUILD_DIR)/target/linux
$(CP) $(GENERIC_PLATFORM_DIR) $(PLATFORM_DIR) $(SDK_BUILD_DIR)/target/linux/
rm -rf \
$(SDK_BUILD_DIR)/target/linux/*/files* \
$(SDK_BUILD_DIR)/target/linux/*/patches*
./convert-config.pl $(TOPDIR)/.config > $(SDK_BUILD_DIR)/Config-build.in
$(CP) -L \
$(TOPDIR)/LICENSE \
$(TOPDIR)/rules.mk \
$(TOPDIR)/.config \
./files/Config.in \
./files/Makefile \
./files/README.SDK \
$(SDK_BUILD_DIR)/
$(CP) \
$(TOPDIR)/package/Makefile \
$(SDK_BUILD_DIR)/package/
$(if $(SVN_PACKAGE_URL),echo "src-svn trunk $(SVN_PACKAGE_URL)" \
> $(SDK_BUILD_DIR)/feeds.conf.default,\
-rm -f $(SDK_BUILD_DIR)/feeds.conf.default)
cat $(TOPDIR)/feeds.conf.default \
>> $(SDK_BUILD_DIR)/feeds.conf.default
$(SED) 's,^# REVISION:=.*,REVISION:=$(REVISION),g' $(SDK_BUILD_DIR)/include/version.mk
$(SED) '/LINUX_VERMAGIC:=/ { s,unknown,$(LINUX_VERMAGIC),g }' $(SDK_BUILD_DIR)/include/kernel.mk
find $(SDK_BUILD_DIR) -name .git | $(XARGS) rm -rf
find $(SDK_BUILD_DIR) -name .svn | $(XARGS) rm -rf
find $(SDK_BUILD_DIR) -name CVS | $(XARGS) rm -rf
(cd $(BUILD_DIR); \
tar cfj $@ $(SDK_NAME); \
)
download:
prepare:
compile: $(BIN_DIR)/$(SDK_NAME).tar.bz2
install: compile
clean:
rm -rf $(SDK_BUILD_DIR) $(BIN_DIR)/$(SDK_NAME).tar.bz2