batman-adv: automatically rebuild components when the config changes
[openwrt/svn-archive/archive.git] / net / batman-advanced / Makefile
index f7ebfbbb995cd2371bd7f16b7a9c69d83d497f07..9c778de9b0e7b117fcc39b4d7a6cd723f2d149ac 100644 (file)
 
 include $(TOPDIR)/rules.mk
 
-PKG_NAME:=batmand-adv
-PKG_REV:=989
+PKG_NAME:=batman-adv
+PKG_REV:=1568
 PKG_VERSION:=r$(PKG_REV)
 PKG_RELEASE:=1
-PKG_BRANCH:=batman-adv-userspace
 
-PKG_SOURCE_PROTO:=svn
-PKG_SOURCE_VERSION:=$(PKG_REV)
-PKG_SOURCE_SUBDIR:=batman-adv-$(PKG_VERSION)
-PKG_SOURCE_URL:=http://downloads.open-mesh.net/svn/batman/trunk/
-PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)
 
-PKG_KMOD_BUILD_DIR:=$(PKG_BUILD_DIR)/batman-adv-kernelland/batman-core
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
+PKG_TOOL_VERSION=$(PKG_REV)
 
-PKG_TOOL_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-battool-install
-PKG_TOOL_BUILD_DIR:=$(PKG_BUILD_DIR)/battool
+ifneq ($(CONFIG_BATMAN_ADV_DEV),)
+       PKG_KMOD_VERSION=060c4d34077550d57cd57c5375dd5f8758391eb5
+       PKG_KMOD_FNAME=batman-adv-dev-$(PKG_REV).tar.gz
+       PKG_TOOL_URL=http://downloads.open-mesh.org/svn/batman/trunk/batctl
+       PKG_TOOL_FNAME:=batctl-dev-$(PKG_TOOL_VERSION).tar.gz
+else
+       PKG_KMOD_VERSION=1b58d49b4342caabb9624243bc76e037eaac2673
+       PKG_KMOD_FNAME=batman-adv-maint-$(PKG_REV).tar.gz
+       PKG_TOOL_URL=http://downloads.open-mesh.org/svn/batman/branches/batctl-0.2.x/
+       PKG_TOOL_FNAME:=batctl-maint-$(PKG_TOOL_VERSION).tar.gz
+endif
+
+PKG_KMOD_BUILD_DIR:=$(PKG_BUILD_DIR)/batman-adv-kernelland
+PKG_TOOL_BUILD_DIR:=$(PKG_BUILD_DIR)/batctl
 
 include $(INCLUDE_DIR)/package.mk
 include $(INCLUDE_DIR)/kernel.mk
 
+# have to set this variable after including the Makefiles
+ifneq ($(CONFIG_BATMAN_ADV_DEV),)
+       STAMP_PREPARED:=$(STAMP_PREPARED)_dev
+else
+       STAMP_PREPARED:=$(STAMP_PREPARED)_maint
+endif
+STAMP_PREPARED:=$(STAMP_PREPARED)$(if $(CONFIG_KMOD_BATMAN_ADV_BATCTL),_batctl)
+STAMP_BUILT:=$(STAMP_BUILT)$(if $(CONFIG_KMOD_BATMAN_ADV_DEBUG_LOG),_debug)
+
 define Package/batman-adv/Default
-  URL:=https://www.open-mesh.net/
+  URL:=http://www.open-mesh.org/
   MAINTAINER:=Marek Lindner <lindner_marek@yahoo.de>
 endef
 
-define Package/batmand-adv
+define KernelPackage/batman-adv-kernelland
 $(call Package/batman-adv/Default)
-  SECTION:=net
-  CATEGORY:=Network
-  DEPENDS:=+libpthread +kmod-tun
-  TITLE:=B.A.T.M.A.N. layer 2 routing daemon
+  SUBMENU:=Network Support
+  DEPENDS:=@LINUX_2_6
+  TITLE:=B.A.T.M.A.N. layer 2
+  FILES:=$(PKG_KMOD_BUILD_DIR)/batman-adv.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,50,batman-adv)
 endef
 
-define Package/batmand-adv/description
-B.A.T.M.A.N. layer 2 routing daemon
+define KernelPackage/batman-adv-kernelland/config
+       source "$(SOURCE)/Config.in"
 endef
 
-define Package/battool
-$(call Package/batman-adv/Default)
-  SECTION:=net
-  CATEGORY:=Network
-  TITLE:=B.A.T.M.A.N. layer 2 debug tools
+define KernelPackage/batman-adv-kernelland/description
+B.A.T.M.A.N. layer 2
 endef
 
-define Package/battool/description
-B.A.T.M.A.N. layer 2 debug tools
+define Download/batman-adv-kernelland
+  FILE:=$(PKG_KMOD_FNAME)
+  URL:=http://git.open-mesh.org/snapshot/$(PKG_KMOD_VERSION)/
 endef
-
-define KernelPackage/batman-adv-core
-$(call Package/batman-adv/Default)
-  SUBMENU:=Network Support
-  DEPENDS:=@LINUX_2_6
-  TITLE:=Kernel routing module for B.A.T.M.A.N. layer 2
-  FILES:=$(PKG_KMOD_BUILD_DIR)/batman-adv-core.$(LINUX_KMOD_SUFFIX)
-  AUTOLOAD:=$(call AutoLoad,50,batman-adv-core)
+$(eval $(call Download,batman-adv-kernelland))
+
+ifneq ($(DEVELOPER)$(CONFIG_KMOD_BATMAN_ADV_BATCTL),)
+define Download/batctl
+  FILE:=$(PKG_TOOL_FNAME)
+  URL:=$(PKG_TOOL_URL)
+  PROTO:=svn
+  VERSION:=$(PKG_TOOL_VERSION)
+  SUBDIR:=$(PKG_SOURCE_SUBDIR)/batctl
 endef
-
-
-define KernelPackage/batman-adv-core/description
-Kernel routing module for B.A.T.M.A.N. layer 2
+$(eval $(call Download,batctl))
+endif
+
+ifneq ($(DEVELOPER)$(CONFIG_KMOD_BATMAN_ADV_BATCTL),)
+ifneq ($(DEVELOPER)$(CONFIG_BATMAN_ADV_DEV),)
+define Download/batman
+  FILE:=batman-$(PKG_REV).tar.gz
+  URL:=http://downloads.open-mesh.org/svn/batman/trunk/batman
+  PROTO:=svn
+  VERSION:=$(PKG_REV)
+  SUBDIR:=$(PKG_SOURCE_SUBDIR)/batman
+endef
+$(eval $(call Download,batman))
+endif
+endif
+
+define Build/Prepare
+       tar xzf "$(DL_DIR)/$(PKG_KMOD_FNAME)" -C "$(PKG_BUILD_DIR)"
+ifneq ($(DEVELOPER)$(CONFIG_KMOD_BATMAN_ADV_BATCTL),)
+       tar xzf "$(DL_DIR)/$(PKG_TOOL_FNAME)" -C "$(BUILD_DIR)"
+ifneq ($(DEVELOPER)$(CONFIG_BATMAN_ADV_DEV),)
+       tar xzf "$(DL_DIR)/batman-$(PKG_REV).tar.gz" -C "$(BUILD_DIR)"
+endif
+endif
+       mv "$(PKG_BUILD_DIR)/batman-adv" "$(PKG_KMOD_BUILD_DIR)"
+       cp $(PKG_KMOD_BUILD_DIR)/Makefile.kbuild $(PKG_KMOD_BUILD_DIR)/Makefile
+       $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR),)
+ifneq ($(CONFIG_BATMAN_ADV_DEV),)
+       $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/dev,)
+else
+       $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/maint,)
+endif
 endef
 
-MAKE_ARGS += \
-       CFLAGS="$(TARGET_CFLAGS)" \
-       CCFLAGS="$(TARGET_CFLAGS)" \
-       OFLAGS="$(TARGET_CFLAGS)" \
-       REVISION="$(PKG_REV)" \
-       CC="$(TARGET_CC)" \
-       NODEBUG=1 \
-       UNAME="Linux" \
-       INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \
-       STRIP="/bin/true" \
-       batmand-adv install
+MAKE_BATADV_KERNELLAND_ARGS += \
+       CROSS_COMPILE="$(TARGET_CROSS)" \
+       ARCH="$(LINUX_KARCH)" \
+       PATH="$(TARGET_PATH)" \
+       $(if $(CONFIG_KMOD_BATMAN_ADV_DEBUG_LOG),EXTRA_CFLAGS="-DCONFIG_BATMAN_ADV_DEBUG") \
+       SUBDIRS="$(PKG_KMOD_BUILD_DIR)" \
+       LINUX_VERSION="$(LINUX_VERSION)" \
+       REVISION="$(PKG_REV)" modules
 
-MAKE_TOOL_ARGS += \
+MAKE_BATCTL_ARGS += \
        CFLAGS="$(TARGET_CFLAGS)" \
        CCFLAGS="$(TARGET_CFLAGS)" \
        OFLAGS="$(TARGET_CFLAGS)" \
@@ -94,36 +134,35 @@ MAKE_TOOL_ARGS += \
        UNAME="Linux" \
        INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \
        STRIP="/bin/true" \
-       battool install
+       batctl install
 
 define Build/Configure
 endef
 
+ifneq ($(DEVELOPER)$(CONFIG_PACKAGE_kmod-batman-adv-kernelland),)
+        BUILD_KMOD_ADV = $(MAKE) -C "$(LINUX_DIR)" $(MAKE_BATADV_KERNELLAND_ARGS)
+        BUILD_BATCTL = $(MAKE) -C $(PKG_TOOL_BUILD_DIR) $(MAKE_BATCTL_ARGS)
+endif
+
 define Build/Compile
-       $(MAKE) -C $(PKG_BUILD_DIR)/batman-adv-userspace $(MAKE_ARGS)
-       $(MAKE) -C $(PKG_TOOL_BUILD_DIR) $(MAKE_TOOL_ARGS)
-       cp $(PKG_KMOD_BUILD_DIR)/Makefile.kbuild $(PKG_KMOD_BUILD_DIR)/Makefile
-       $(MAKE) -C "$(LINUX_DIR)" \
-               CROSS_COMPILE="$(TARGET_CROSS)" \
-               ARCH="$(LINUX_KARCH)" \
-               PATH="$(TARGET_PATH)" \
-               SUBDIRS="$(PKG_KMOD_BUILD_DIR)" \
-               LINUX_VERSION="$(LINUX_VERSION)" \
-               REVISION="$(PKG_REV)" modules
+       $(BUILD_KMOD_ADV)
+ifneq ($(DEVELOPER)$(CONFIG_KMOD_BATMAN_ADV_BATCTL),)
+       $(BUILD_BATCTL)
+endif
 endef
 
-define Package/batmand-adv/install
-       $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/config $(1)/etc/init.d
-       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/batmand-adv $(1)/usr/sbin/
-       $(INSTALL_BIN) ./files/etc/init.d/batmand-adv $(1)/etc/init.d
-       $(INSTALL_DATA) ./files/etc/config/batmand-adv $(1)/etc/config
+define Build/Clean
+        rm -rf $(PKG_KMOD_BUILD_DIR)
 endef
 
-define Package/battool/install
+define KernelPackage/batman-adv-kernelland/install
+       $(INSTALL_DIR) $(1)/etc/config $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/etc/init.d/batman-adv-kernelland $(1)/etc/init.d
+       $(INSTALL_DATA) ./files/etc/config/batman-adv-kernelland $(1)/etc/config
+ifneq ($(DEVELOPER)$(CONFIG_KMOD_BATMAN_ADV_BATCTL),)
        $(INSTALL_DIR) $(1)/usr/sbin
-       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/battool $(1)/usr/sbin/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/batctl $(1)/usr/sbin/
+endif
 endef
 
-$(eval $(call BuildPackage,batmand-adv))
-$(eval $(call BuildPackage,battool))
-$(eval $(call KernelPackage,batman-adv-core))
+$(eval $(call KernelPackage,batman-adv-kernelland))