diff --git a/include/scan.mk b/include/scan.mk index 28f526aa33..3d97a4f5c3 100644 --- a/include/scan.mk +++ b/include/scan.mk @@ -49,7 +49,7 @@ $(TMP_DIR)/info/.files-$(SCAN_TARGET).mk: $(FILELIST) -include $(TMP_DIR)/info/.files-$(SCAN_TARGET).mk -$(TARGET_STAMP): +$(TARGET_STAMP):: ( \ $(NO_TRACE_MAKE) $(FILELIST); \ MD5SUM=$$(cat $(FILELIST) | (md5sum || md5) | awk '{print $$1}'); \ diff --git a/include/toplevel.mk b/include/toplevel.mk index 63325aa018..4e194bf50a 100644 --- a/include/toplevel.mk +++ b/include/toplevel.mk @@ -12,7 +12,12 @@ PREP_MK= OPENWRT_BUILD= QUIET=0 include $(TOPDIR)/include/verbose.mk -REVISION:=$(shell $(TOPDIR)/scripts/getver.sh) +ifeq ($(SDK),1) + include $(TOPDIR)/include/version.mk +else + REVISION:=$(shell $(TOPDIR)/scripts/getver.sh) +endif + OPENWRTVERSION:=$(RELEASE)$(if $(REVISION), ($(REVISION))) export RELEASE export REVISION diff --git a/package/Makefile b/package/Makefile index 1df4537dba..e618a90b69 100644 --- a/package/Makefile +++ b/package/Makefile @@ -10,9 +10,13 @@ curdir:=package -include $(TMP_DIR)/.packagedeps $(curdir)/builddirs:=$(sort $(package-) $(package-y) $(package-m)) -$(curdir)/builddirs-default:=. $(sort $(package-y) $(package-m)) -$(curdir)/builddirs-prereq:=. $(sort $(prereq-y) $(prereq-m)) -$(curdir)/builddirs-install:=. $(sort $(package-y)) +ifeq ($(SDK),1) + $(curdir)/builddirs-install:=. +else + $(curdir)/builddirs-default:=. $(sort $(package-y) $(package-m)) + $(curdir)/builddirs-prereq:=. $(sort $(prereq-y) $(prereq-m)) + $(curdir)/builddirs-install:=. $(sort $(package-y)) +endif $(curdir)/install:=$(curdir)/install-cleanup diff --git a/scripts/metadata.pm b/scripts/metadata.pm index 917fbec079..a220231f0d 100644 --- a/scripts/metadata.pm +++ b/scripts/metadata.pm @@ -115,7 +115,7 @@ sub parse_package_metadata($) { /^Preconfig-Default:\s*(.*?)\s*$/ and $preconfig->{default} = $1; } close FILE; - return %category; + return 1; } 1; diff --git a/target/sdk/Makefile b/target/sdk/Makefile index a05b7c6281..05ae321616 100644 --- a/target/sdk/Makefile +++ b/target/sdk/Makefile @@ -15,27 +15,32 @@ PKG_CPU:=$(shell uname -m) SDK_NAME:=OpenWrt-SDK-$(BOARD)-for-$(PKG_OS)-$(PKG_CPU) SDK_BUILD_DIR:=$(BUILD_DIR)/$(SDK_NAME) -EXCLUDE_DIRS:=ccache stamp +EXCLUDE_DIRS:=*/ccache */stamp */man */share */stampfiles */info 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) --exclude="$(EXCLUDE_DIRS)" staging_dir/$(ARCH) | \ + $(TAR) -cf - -C $(TOPDIR) $(foreach exclude,$(EXCLUDE_DIRS),--exclude="$(exclude)") --exclude="staging_dir/$(ARCH)" staging_dir | \ $(TAR) -xf - -C $(SDK_BUILD_DIR) - (cd $(SDK_BUILD_DIR)/staging_dir/$(ARCH); \ - rm -rf info man share stampfiles; \ - cd usr; \ - rm -rf doc info man share; \ - ) - $(CP) $(TOPDIR)/rules.mk $(TOPDIR)/.config $(SDK_BUILD_DIR)/ - $(CP) $(TOPDIR)/package/Makefile $(SDK_BUILD_DIR)/package/ - $(CP) ./files/Makefile $(SDK_BUILD_DIR)/ - $(CP) ./files/README.SDK $(SDK_BUILD_DIR)/ - $(CP) ./files/package/rules.mk $(SDK_BUILD_DIR)/package/ - echo OPENWRTVERSION:="$(OPENWRTVERSION)" > $(SDK_BUILD_DIR)/.version.mk - rm -rf $(SDK_BUILD_DIR)/staging_dir/$(ARCH)/{ccache,stamp} + 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 + $(CP) \ + $(TOPDIR)/rules.mk \ + $(TOPDIR)/.config \ + ./files/Makefile \ + ./files/README.SDK \ + $(SDK_BUILD_DIR)/ + $(CP) \ + ./files/package/rules.mk \ + $(TOPDIR)/package/Makefile \ + $(SDK_BUILD_DIR)/package/ + echo REVISION:="$(REVISION)" > $(SDK_BUILD_DIR)/include/version.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); \ diff --git a/target/sdk/files/Makefile b/target/sdk/files/Makefile index 8b054b447f..f1e0eadbea 100644 --- a/target/sdk/files/Makefile +++ b/target/sdk/files/Makefile @@ -1,89 +1,54 @@ # Makefile for OpenWrt # -# Copyright (C) 2006 by Felix Fietkau +# Copyright (C) 2007 OpenWrt.org # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. # -RELEASE:=Kamikaze -#VERSION:=2.0 # uncomment for final release +TOPDIR:=${CURDIR} +LC_ALL:=C +LANG:=C +SDK:=1 +export TOPDIR LC_ALL LANG SDK -#-------------------------------------------------------------- -# Just run 'make menuconfig', configure stuff, then run 'make'. -# You shouldn't need to mess with anything beyond this point... -#-------------------------------------------------------------- -TOPDIR=${shell pwd} -export TOPDIR +world: -DEVELOPER=1 -export DEVELOPER +include $(TOPDIR)/include/host.mk -SDK=1 -export SDK +ifneq ($(OPENWRT_BUILD),1) + override OPENWRT_BUILD=1 + export OPENWRT_BUILD + include $(TOPDIR)/include/debug.mk + include $(TOPDIR)/include/depends.mk + include $(TOPDIR)/include/toplevel.mk +else + include rules.mk + include $(INCLUDE_DIR)/depends.mk + include $(INCLUDE_DIR)/subdir.mk + include package/Makefile -export IS_TTY=$(shell tty -s && echo 1 || echo 0) -include $(TOPDIR)/include/verbose.mk - -all: world - -define stamp -tmp/info/.stamp-$(1)-$(shell ls $(2)/*/Makefile $(5) | (md5sum || md5) 2>/dev/null | cut -d' ' -f1) -endef - -STAMP=$(call stamp,packageinfo,package) - -$(STAMP): - @mkdir -p tmp/info - @rm -f tmp/info/.stamp-packageinfo* +$(package/stamp-compile): $(BUILD_DIR)/.prepared +$(BUILD_DIR)/.prepared: Makefile + @mkdir -p $$(dirname $@) + @mkdir -p bin/packages @touch $@ -define filedep -$(foreach FILE,$(shell ls package/*/Makefile), -tmp/.packageinfo: $(FILE) -$(FILE): - @true -) -endef - -$(eval $(filedep)) - -tmp/.packageinfo: $(STAMP) - @echo -n Collecting package info... - @$(NO_TRACE_MAKE) -s -f include/scan.mk SCAN_TARGET="packageinfo" SCAN_DIR="package" SCAN_NAME="package" SCAN_DEPS="" - -package/%: FORCE - @$(NO_TRACE_MAKE) -s tmp/.packageinfo - $(MAKE) -C package $(patsubst package/%,%,$@) SDK=1 - -download: FORCE - $(MAKE) package/download - -world: FORCE - $(MAKE) package/compile - -( \ - cd package; \ - for configfile in `find . -maxdepth 2 -name Config.in` ; do \ - $(MAKE) compile -C `dirname $$configfile` ; \ - done \ - ) - clean: FORCE - rm -rf build_* bin + rm -rf $(BUILD_DIR) $(BIN_DIR) -distclean: clean - rm -rf dl .pkg* +dirclean: clean + rm -rf $(TMP_DIR) -.PHONY: FORCE -FORCE: +# check prerequisites before starting to build +prereq: $(package/stamp-prereq) ; + +world: prepare $(package/stamp-compile) FORCE + @for configfile in `find package -maxdepth 2 -name Config.in` ; do \ + $(MAKE) compile -C `dirname $$configfile`; \ + done + @$(MAKE) package/index + +.PHONY: clean dirclean prereq prepare world + +endif diff --git a/target/sdk/files/package/rules.mk b/target/sdk/files/package/rules.mk index 43bdcc8709..7adb2e3797 100644 --- a/target/sdk/files/package/rules.mk +++ b/target/sdk/files/package/rules.mk @@ -1,7 +1,13 @@ # invoke ipkg with configuration in $(STAGING_DIR)/etc/ipkg.conf -IPKG := IPKG_INSTROOT=$(TARGET_DIR) IPKG_CONF_DIR=$(IPKG_CONF) $(SCRIPT_DIR)/ipkg -force-defaults -force-depends +IPKG := IPKG_INSTROOT=$(TARGET_DIR) IPKG_CONF_DIR=$(STAGING_DIR)/etc $(SCRIPT_DIR)/ipkg -force-defaults -force-depends IPKG_STATE_DIR := $(TARGET_DIR)/usr/lib/ipkg +# invoke ipkg-build with some default options +IPKG_BUILD := PATH="$(TARGET_PATH)" ipkg-build -c -o root -g root + +# where to build (and put) .ipk packages +IPKG_TARGET_DIR := $(PACKAGE_DIR) + ifneq ($(DUMP),) dump: .PHONY: dump @@ -15,7 +21,7 @@ INFO_$(1):=$(IPKG_STATE_DIR)/info/$(2).list ifneq ($(BR2_PACKAGE_$(1)),) compile-targets: $$(IPKG_$(1)) endif -ifneq ($(DEVELOPER),) +ifneq ($(DEVELOPER)$(SDK),) compile-targets: $$(IPKG_$(1)) endif ifeq ($(BR2_PACKAGE_$(1)),y)