From 11817df895416f11b77a47574d0f85417d0e549c Mon Sep 17 00:00:00 2001 From: nbd Date: Thu, 15 Mar 2007 23:57:18 +0000 Subject: split package.mk and clean up build system code (based on patch by mbm), makes the code more readable and speeds up metadata scan git-svn-id: svn://svn.openwrt.org/openwrt/trunk@6571 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- include/package-ipkg.mk | 105 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 include/package-ipkg.mk (limited to 'include/package-ipkg.mk') diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk new file mode 100644 index 000000000..0d6ab8af9 --- /dev/null +++ b/include/package-ipkg.mk @@ -0,0 +1,105 @@ +# +# Copyright (C) 2006,2007 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +define BuildIPKGVariable + $(call shexport,Package/$(1)/$(2)) + $(1)_COMMANDS += var2file "$(call shvar,Package/$(1)/$(2))" $(2); +endef + +ifeq ($(DUMP),) +define BuildIPKG + IPKG_$(1):=$(PACKAGE_DIR)/$(1)_$(VERSION)_$(PKGARCH).ipk + IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg/$(1) + INFO_$(1):=$(IPKG_STATE_DIR)/info/$(1).list + + ifdef Package/$(1)/install + ifeq ($(CONFIG_PACKAGE_$(1)),y) + install: $$(INFO_$(1)) + endif + + ifneq ($(CONFIG_PACKAGE_$(1))$(DEVELOPER)$(SDK),) + compile: $$(IPKG_$(1)) + else + compile: $(1)-disabled + $(1)-disabled: + @echo "WARNING: skipping $(1) -- package not selected" + endif + endif + + ifeq ($(FORCEREBUILD),y) + $$(IPKG_$(1)): FORCE + endif + + IDEPEND_$(1):=$$(strip $$(DEPENDS)) + + + $(eval $(call BuildIPKGVariable,$(1),conffiles)) + $(eval $(call BuildIPKGVariable,$(1),preinst)) + $(eval $(call BuildIPKGVariable,$(1),postinst)) + $(eval $(call BuildIPKGVariable,$(1),prerm)) + $(eval $(call BuildIPKGVariable,$(1),postrm)) + $$(IDIR_$(1))/CONTROL/control: $(PKG_BUILD_DIR)/.version-$(1)_$(VERSION)_$(PKGARCH) + @rm -f $(PACKAGE_DIR)/$(1)_* + mkdir -p $$(IDIR_$(1))/CONTROL + echo "Package: $(1)" > $$(IDIR_$(1))/CONTROL/control + echo "Version: $(VERSION)" >> $$(IDIR_$(1))/CONTROL/control + ( \ + DEPENDS='$(EXTRA_DEPENDS)'; \ + for depend in $$(filter-out @%,$$(IDEPEND_$(1))); do \ + DEPENDS=$$$${DEPENDS:+$$$$DEPENDS, }$$$${depend##+}; \ + done; \ + echo "Depends: $$$$DEPENDS" >> $$(IDIR_$(1))/CONTROL/control; \ + ) + echo "Source: $(SOURCE)" >> $$(IDIR_$(1))/CONTROL/control + echo "Section: $(SECTION)" >> $$(IDIR_$(1))/CONTROL/control + echo "Priority: $(PRIORITY)" >> $$(IDIR_$(1))/CONTROL/control + echo "Maintainer: $(MAINTAINER)" >> $$(IDIR_$(1))/CONTROL/control + echo "Architecture: $(PKGARCH)" >> $$(IDIR_$(1))/CONTROL/control + echo "Description: $(DESCRIPTION)" | sed -e 's,\\,\n,g' | sed -e 's,^[[:space:]]*$$$$, .,g' >> $$(IDIR_$(1))/CONTROL/control + chmod 644 $$(IDIR_$(1))/CONTROL/control + (cd $$(IDIR_$(1))/CONTROL; \ + $($(1)_COMMANDS) \ + ) + + $$(IPKG_$(1)): $(PKG_BUILD_DIR)/.built $$(IDIR_$(1))/CONTROL/control + $(call Package/$(1)/install,$$(IDIR_$(1))) + mkdir -p $(PACKAGE_DIR) + -find $$(IDIR_$(1)) -name CVS | xargs rm -rf + -find $$(IDIR_$(1)) -name .svn | xargs rm -rf + -find $$(IDIR_$(1)) -name '.#*' | xargs rm -f + $(RSTRIP) $$(IDIR_$(1)) + $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR) + @[ -f $$(IPKG_$(1)) ] || false + + $$(INFO_$(1)): $$(IPKG_$(1)) + $(IPKG) install $$(IPKG_$(1)) + + $(1)-clean: + rm -f $(PACKAGE_DIR)/$(1)_* + + clean: $(1)-clean + + $(PKG_BUILD_DIR)/.version-$(1)_$(VERSION)_$(PKGARCH): $(PKG_BUILD_DIR)/.prepared + -@rm -f $(PKG_BUILD_DIR)/.version-$(1)_* 2>/dev/null + @touch $$@ + + $$(eval $$(call Build/DefaultTargets,$(1))) + + ifdef Package/$(1)/install + ifneq ($$(CONFIG_PACKAGE_$(1))$(DEVELOPER)$(SDK),) + ifneq ($(MAKECMDGOALS),prereq) + ifneq ($(DUMP),1) + ifneq ($$(shell $(SCRIPT_DIR)/timestamp.pl -p -x ipkg -x ipkg-install '$$(IPKG_$(1))' '$(PKG_BUILD_DIR)'),$$(IPKG_$(1))) + $(PKG_BUILD_DIR)/.built: package-rebuild + $$(info Rebuilding $(subst $(TOPDIR)/,,$$(IPKG_$(1)))) + endif + endif + endif + endif + endif +endef +endif -- cgit v1.2.3