target/sdk: generate a Config.in file with the settings of the build that the SDK was generated from
target/sdk: generate a Config.in file with the settings of the build that the SDK was generated from

This allows make oldconfig/menuconfig to run

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39864 3c298f89-4303-0410-b956-a3cf2f4a3e73

# #
# Copyright (C) 2006-2008 OpenWrt.org # Copyright (C) 2006-2008 OpenWrt.org
# #
# This is free software, licensed under the GNU General Public License v2. # This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information. # See /LICENSE for more information.
# #
   
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/host.mk include $(INCLUDE_DIR)/host.mk
   
override MAKEFLAGS= override MAKEFLAGS=
   
PKG_OS:=$(word 2,$(subst -, ,$(shell $(HOSTCC) -dumpmachine))) PKG_OS:=$(word 2,$(subst -, ,$(shell $(HOSTCC) -dumpmachine)))
PKG_CPU:=$(word 1,$(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_NAME:=OpenWrt-SDK-$(BOARD)-for-$(PKG_OS)-$(PKG_CPU)-gcc-$(GCCV)_$(LIBC)-$(LIBCV)
SDK_BUILD_DIR:=$(BUILD_DIR)/$(SDK_NAME) SDK_BUILD_DIR:=$(BUILD_DIR)/$(SDK_NAME)
EXCLUDE_DIRS:=*/ccache \ EXCLUDE_DIRS:=*/ccache \
*/stamp \ */stamp \
*/stampfiles \ */stampfiles \
*/man \ */man \
*/info \ */info \
   
SDK_DIRS = \ SDK_DIRS = \
staging_dir/host \ staging_dir/host \
staging_dir/target-$(ARCH)$(ARCH_SUFFIX)_$(LIBC)-$(LIBCV)$(if $(CONFIG_arm),_eabi) \ staging_dir/target-$(ARCH)$(ARCH_SUFFIX)_$(LIBC)-$(LIBCV)$(if $(CONFIG_arm),_eabi) \
staging_dir/toolchain-$(ARCH)$(ARCH_SUFFIX)_gcc-$(GCCV)_$(LIBC)-$(LIBCV)$(if $(CONFIG_arm),_eabi) \ staging_dir/toolchain-$(ARCH)$(ARCH_SUFFIX)_gcc-$(GCCV)_$(LIBC)-$(LIBCV)$(if $(CONFIG_arm),_eabi) \
   
SVN_PACKAGE_URL=$(shell svn info ../../package | awk '/^URL:/ { print $$2; }') SVN_PACKAGE_URL=$(shell svn info ../../package | awk '/^URL:/ { print $$2; }')
   
KDIR_BASE = $(patsubst $(TOPDIR)/%,%,$(LINUX_DIR)) KDIR_BASE = $(patsubst $(TOPDIR)/%,%,$(LINUX_DIR))
   
KERNEL_FILES_ARCH = \ KERNEL_FILES_ARCH = \
Makefile* \ Makefile* \
module.lds \ module.lds \
Kbuild.platforms \ Kbuild.platforms \
*/Platform \ */Platform \
include \ include \
scripts \ scripts \
kernel/asm-offsets.s kernel/asm-offsets.s
   
KERNEL_FILES_BASE := \ KERNEL_FILES_BASE := \
.config \ .config \
Makefile \ Makefile \
scripts \ scripts \
include \ include \
Module.symvers \ Module.symvers \
$(addprefix arch/$(LINUX_KARCH)/,$(KERNEL_FILES_ARCH)) $(addprefix arch/$(LINUX_KARCH)/,$(KERNEL_FILES_ARCH))
   
KERNEL_FILES := $(patsubst $(TOPDIR)/%,%,$(wildcard $(addprefix $(LINUX_DIR)/,$(KERNEL_FILES_BASE)))) KERNEL_FILES := $(patsubst $(TOPDIR)/%,%,$(wildcard $(addprefix $(LINUX_DIR)/,$(KERNEL_FILES_BASE))))
   
all: compile all: compile
   
$(BIN_DIR)/$(SDK_NAME).tar.bz2: clean $(BIN_DIR)/$(SDK_NAME).tar.bz2: clean
mkdir -p $(SDK_BUILD_DIR)/dl $(SDK_BUILD_DIR)/package mkdir -p $(SDK_BUILD_DIR)/dl $(SDK_BUILD_DIR)/package
$(CP) $(INCLUDE_DIR) $(SCRIPT_DIR) $(TOPDIR)/docs $(SDK_BUILD_DIR)/ $(CP) $(INCLUDE_DIR) $(SCRIPT_DIR) $(TOPDIR)/docs $(SDK_BUILD_DIR)/
$(TAR) -cf - -C $(TOPDIR) \ $(TAR) -cf - -C $(TOPDIR) \
$(foreach exclude,$(EXCLUDE_DIRS),--exclude="$(exclude)") \ $(foreach exclude,$(EXCLUDE_DIRS),--exclude="$(exclude)") \
$(SDK_DIRS) $(KERNEL_FILES) | \ $(SDK_DIRS) $(KERNEL_FILES) | \
$(TAR) -xf - -C $(SDK_BUILD_DIR) $(TAR) -xf - -C $(SDK_BUILD_DIR)
mkdir -p $(SDK_BUILD_DIR)/target/linux mkdir -p $(SDK_BUILD_DIR)/target/linux
$(CP) $(GENERIC_PLATFORM_DIR) $(PLATFORM_DIR) $(SDK_BUILD_DIR)/target/linux/ $(CP) $(GENERIC_PLATFORM_DIR) $(PLATFORM_DIR) $(SDK_BUILD_DIR)/target/linux/
rm -rf \ rm -rf \
$(SDK_BUILD_DIR)/target/linux/*/files* \ $(SDK_BUILD_DIR)/target/linux/*/files* \
$(SDK_BUILD_DIR)/target/linux/*/patches* $(SDK_BUILD_DIR)/target/linux/*/patches*
  ./convert-config.pl $(TOPDIR)/.config > $(SDK_BUILD_DIR)/Config-build.in
$(CP) -L \ $(CP) -L \
$(TOPDIR)/LICENSE \ $(TOPDIR)/LICENSE \
$(TOPDIR)/rules.mk \ $(TOPDIR)/rules.mk \
$(TOPDIR)/.config \ $(TOPDIR)/.config \
./files/Config.in \ ./files/Config.in \
./files/Makefile \ ./files/Makefile \
./files/README.SDK \ ./files/README.SDK \
$(SDK_BUILD_DIR)/ $(SDK_BUILD_DIR)/
$(CP) \ $(CP) \
$(TOPDIR)/package/Makefile \ $(TOPDIR)/package/Makefile \
$(SDK_BUILD_DIR)/package/ $(SDK_BUILD_DIR)/package/
$(if $(SVN_PACKAGE_URL),echo "src-svn trunk $(SVN_PACKAGE_URL)" \ $(if $(SVN_PACKAGE_URL),echo "src-svn trunk $(SVN_PACKAGE_URL)" \
> $(SDK_BUILD_DIR)/feeds.conf.default,\ > $(SDK_BUILD_DIR)/feeds.conf.default,\
-rm -f $(SDK_BUILD_DIR)/feeds.conf.default) -rm -f $(SDK_BUILD_DIR)/feeds.conf.default)
cat $(TOPDIR)/feeds.conf.default \ cat $(TOPDIR)/feeds.conf.default \
>> $(SDK_BUILD_DIR)/feeds.conf.default >> $(SDK_BUILD_DIR)/feeds.conf.default
$(SED) 's,^# REVISION:=.*,REVISION:=$(REVISION),g' $(SDK_BUILD_DIR)/include/version.mk $(SED) 's,^# REVISION:=.*,REVISION:=$(REVISION),g' $(SDK_BUILD_DIR)/include/version.mk
find $(SDK_BUILD_DIR) -name .git | $(XARGS) rm -rf find $(SDK_BUILD_DIR) -name .git | $(XARGS) rm -rf
find $(SDK_BUILD_DIR) -name .svn | $(XARGS) rm -rf find $(SDK_BUILD_DIR) -name .svn | $(XARGS) rm -rf
find $(SDK_BUILD_DIR) -name CVS | $(XARGS) rm -rf find $(SDK_BUILD_DIR) -name CVS | $(XARGS) rm -rf
(cd $(BUILD_DIR); \ (cd $(BUILD_DIR); \
tar cfj $@ $(SDK_NAME); \ tar cfj $@ $(SDK_NAME); \
) )
   
download: download:
prepare: prepare:
compile: $(BIN_DIR)/$(SDK_NAME).tar.bz2 compile: $(BIN_DIR)/$(SDK_NAME).tar.bz2
install: compile install: compile
   
clean: clean:
rm -rf $(SDK_BUILD_DIR) $(BIN_DIR)/$(SDK_NAME).tar.bz2 rm -rf $(SDK_BUILD_DIR) $(BIN_DIR)/$(SDK_NAME).tar.bz2
   
  #!/usr/bin/env perl
  use strict;
 
  while (<>) {
  chomp;
  next unless /^CONFIG_([^=]+)=(.*)$/;
 
  my $var = $1;
  my $val = $2;
  my $type;
 
  if ($val eq 'y') {
  $type = "bool";
  } elsif ($val eq 'm') {
  $type = "tristate";
  } elsif ($val =~ /^".*"$/) {
  $type = "string";
  } elsif ($val =~ /^\d+$/) {
  $type = "int";
  } else {
  warn "WARNING: no type found for symbol CONFIG_$var=$val\n";
  next;
  }
 
  print <<EOF;
  config $var
  $type
  default $val
 
  EOF
  }
 
  source "Config-build.in"
source "tmp/.config-package.in" source "tmp/.config-package.in"
   
comments