fix rules.mk
[openwrt.git] / package / rules.mk
index fe68b07..5711933 100644 (file)
@@ -5,33 +5,29 @@ all: compile
 endif
 
 define Build/DefaultTargets
-$(PKG_BUILD_DIR)/.prepared:
-       rm -rf $(PKG_BUILD_DIR)
-       mkdir -p $(PKG_BUILD_DIR)
+$(PKG_BUILD_DIR)/.prepared: FORCE $(DL_DIR)/$(PKG_SOURCE)
+ifeq ($(shell $(SCRIPT_DIR)/timestamp.pl -p $(PKG_BUILD_DIR) .),.)
+       @-rm -rf $(PKG_BUILD_DIR)
+       @mkdir -p $(PKG_BUILD_DIR)
        $(call Build/Prepare)
-       touch $$@
+       @touch $$@
+endif
 
 $(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
        $(call Build/Configure)
        touch $$@
 
-ifeq ($(shell $(SCRIPT_DIR)/timestamp.pl -p $(PKG_BUILD_DIR) .),.)
-$(PKG_BUILD_DIR)/.prepared: clean
-endif
-
-$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
+$(PKG_BUILD_DIR)/.built: FORCE $(PKG_BUILD_DIR)/.configured
+#$#$#(error $$(shell $(SCRIPT_DIR)/timestamp.pl -p -x ipkg $$(IPKG_$(1)) $(PKG_BUILD_DIR)))
+ifeq ($$(shell $(SCRIPT_DIR)/timestamp.pl -p -x ipkg $$(IPKG_$(1)) $(PKG_BUILD_DIR)),$(PKG_BUILD_DIR))
        $(call Build/Compile)
        touch $$@
+endif
 
-package-clean:
+package-clean: FORCE
        $(call Build/Clean)
        rm -f $(PKG_BUILD_DIR)/.built
 
-package-recompile:
-       rm -f $(PKG_BUILD_DIR)/.built
-
-.PHONY: package-clean package-recompile
-
 define Build/DefaultTargets
 endef
 endef
@@ -52,54 +48,42 @@ TITLE:=
 DESCRIPTION:=
 endef
 
+define RequiredField
+ifeq ($$($(1)),)
+$$(error Package/$$(1) is missing the $(1) field)
+endif
+endef
+
 define BuildPackage
 $(eval $(call Package/Default))
 $(eval $(call Package/$(1)))
 
-ifeq ($(TITLE),)
-$$(error Package $(1) has no TITLE)
-endif
-ifeq ($(CATEGORY),)
-$$(error Package $(1) has no CATEGORY)
-endif
-ifeq ($(PRIORITY),)
-$$(error Package $(1) has no PRIORITY)
-endif
-ifeq ($(VERSION),)
-$$(error Package $(1) has no VERSION)
-endif
+$(foreach FIELD, TITLE CATEGORY PRIORITY VERSION, $(eval $(call RequiredField,$(FIELD))))
+
 ifeq ($(PKGARCH),)
 PKGARCH:=$(ARCH)
 endif
-$(eval 
+
 ifeq ($(DESCRIPTION),)
-DESCRIPTION:=$(TITLE)
+$(eval DESCRIPTION:=$(TITLE))
 endif
-)
 
 IPKG_$(1):=$(PACKAGE_DIR)/$(1)_$(VERSION)_$(PKGARCH).ipk
 IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg/$(1)
 INFO_$(1):=$(IPKG_STATE_DIR)/info/$(1).list
 
-ifneq ($(CONFIG_PACKAGE_$(1)),)
-COMPILE_$(1):=1
-endif
-ifneq ($(DEVELOPER),)
+ifneq ($(CONFIG_PACKAGE_$(1))$(DEVELOPER),)
 COMPILE_$(1):=1
 endif
+
 ifeq ($(CONFIG_PACKAGE_$(1)),y)
 install-targets: $$(INFO_$(1))
 endif
 
-ifneq ($$(COMPILE_$(1)),)
-ifeq ($$(shell $(SCRIPT_DIR)/timestamp.pl -p -x ipkg $$(IPKG_$(1)) $(PKG_BUILD_DIR)),$(PKG_BUILD_DIR))
-$(PKG_BUILD_DIR)/.built: package-recompile
-endif
-
-compile-targets: $$(IPKG_$(1))
+ifneq ($(COMPILE_$(1)),)
+compile-targets: $(IPKG_$(1))
 endif
 
-
 IDEPEND_$(1):=$$(strip $$(DEPENDS))
 
 DUMPINFO += \
@@ -157,27 +141,24 @@ $(1)-clean:
 clean: $(1)-clean
 
 ifneq ($(__DEFAULT_TARGETS),1)
-$(eval $(call Build/DefaultTargets))
+$$(eval $$(call Build/DefaultTargets,$(1)))
 endif
 
 endef
 
 ifneq ($(strip $(PKG_SOURCE)),)
 $(DL_DIR)/$(PKG_SOURCE):
-       @$(CMD_TRACE) "downloading... "
-       $(SCRIPT_DIR)/download.pl "$(DL_DIR)" "$(PKG_SOURCE)" "$(PKG_MD5SUM)" $(PKG_SOURCE_URL) $(MAKE_TRACE) 
-       
-$(PKG_BUILD_DIR)/.prepared: $(DL_DIR)/$(PKG_SOURCE)
+       $(SCRIPT_DIR)/download.pl "$(DL_DIR)" "$(PKG_SOURCE)" "$(PKG_MD5SUM)" $(PKG_SOURCE_URL)
 endif
 
 ifneq ($(strip $(PKG_CAT)),)
 define Build/Prepare/Default
-       if [ "$(PKG_CAT)" = "unzip" ]; then \
+       @if [ "$(PKG_CAT)" = "unzip" ]; then \
                unzip -d $(PKG_BUILD_DIR) $(DL_DIR)/$(PKG_SOURCE) ; \
        else \
                $(PKG_CAT) $(DL_DIR)/$(PKG_SOURCE) | tar -C $(PKG_BUILD_DIR)/.. $(TAR_OPTIONS) - ; \
        fi                                                
-       if [ -d ./patches ]; then \
+       @if [ -d ./patches ]; then \
                $(PATCH) $(PKG_BUILD_DIR) ./patches ; \
        fi
 endef
@@ -188,7 +169,7 @@ $(call Build/Prepare/Default)
 endef
 
 define Build/Configure/Default
-       (cd $(PKG_BUILD_DIR); \
+       @(cd $(PKG_BUILD_DIR); \
        [ -x configure ] && \
                $(TARGET_CONFIGURE_OPTS) \
                CFLAGS="$(TARGET_CFLAGS)" \
@@ -212,7 +193,7 @@ define Build/Configure/Default
 endef
 
 define Build/Configure
-$(call Build/Configure/Default)
+$(call Build/Configure/Default,)
 endef
 
 define Build/Compile/Default
@@ -237,42 +218,25 @@ ifneq ($(DUMP),)
 dumpinfo:
        $(DUMPINFO)
 else
-
-source: $(DL_DIR)/$(PKG_SOURCE)
-prepare: source
-       @[ -f $(PKG_BUILD_DIR)/.prepared ] || { \
-               $(CMD_TRACE) "preparing... "; \
-               $(MAKE) $(PKG_BUILD_DIR)/.prepared $(MAKE_TRACE); \
-       }
-
-configure: prepare
-       @[ -f $(PKG_BUILD_DIR)/.configured ] || { \
-               $(CMD_TRACE) "configuring... "; \
-               $(MAKE) $(PKG_BUILD_DIR)/.configured $(MAKE_TRACE); \
-       }
-
-compile-targets:
-compile: configure
-       @$(CMD_TRACE) "compiling... " 
-       @$(MAKE) compile-targets $(MAKE_TRACE)
-
-install-targets:
-install:
-       @$(CMD_TRACE) "installing... "
-       @$(MAKE) install-targets $(MAKE_TRACE)
-
-rebuild:
-       $(CMD_TRACE) "rebuilding... "
-       $(MAKE) package-clean compile $(MAKE_TRACE)
-
+               
 $(PACKAGE_DIR):
        mkdir -p $@
 
-clean-targets:
-clean: 
-       @$(CMD_TRACE) "cleaning... " 
-       @$(MAKE) clean-targets $(MAKE_TRACE)
+source: FORCE $(DL_DIR)/$(PKG_SOURCE)
+prepare: FORCE $(PKG_BUILD_DIR)/.prepared
+configure: FORCE $(PKG_BUILD_DIR)/.configured
+
+compile-targets: FORCE
+compile: FORCE compile-targets
+
+install-targets: FORCE
+install: FORCE install-targets
+
+clean-targets: FORCE
+clean: FORCE
+       @$(MAKE) clean-targets
        rm -rf $(PKG_BUILD_DIR)
 endif
 
-.PHONY: all source prepare compile install clean rebuild dumpinfo compile-targets install-targets clean-targets
+.PHONY: FORCE
+FORCE: