#!/usr/bin/make -f

ifneq ($(strip ${IPKG_RULES_INC}),)
  include $(IPKG_RULES_INC)
endif

##

LIBSNMP := ipkg/libsnmp
LIBSNMP_DEV := ipkg/libsnmp-dev
SNMP_UTILS_DIR := ipkg/snmp-utils
SNMPD := ipkg/snmpd
SNMPD_STATIC := ipkg/snmpd-static

BUILD_DEPS := \

INSTALL_DIR := ipkg-install

##

SNMP_MIB_MODULES_INCLUDED = \
 host/hr_device \
 host/hr_disk \
 host/hr_filesys \
 host/hr_network \
 host/hr_partition \
 host/hr_proc \
 host/hr_storage \
 host/hr_system \
 ieee802dot11 \
 mibII/at \
 mibII/icmp \
 mibII/interfaces \
 mibII/ip \
 mibII/snmp_mib \
 mibII/sysORTable \
 mibII/system_mib \
 mibII/tcp \
 mibII/udp \
 mibII/vacm_vars \
 snmpv3mibs \
 tunnel \
 ucd-snmp/loadave \
 ucd-snmp/memory \
 ucd-snmp/proc \
 ucd-snmp/vmstat \
 util_funcs \
 utilities/execute \

SNMP_MIB_MODULES_EXCLUDED = \
 agent_mibs \
 agentx \
 mibII \
 notification \
 snmpv3mibs \
 target \
 ucd_snmp \
 utilities \

SNMP_TRANSPORTS_INCLUDED = UDP

SNMP_TRANSPORTS_EXCLUDED = Callback TCP TCPv6 UDPv6 Unix


all: package

build: .stamp-built

install: .stamp-installed

clean:

	$(MAKE) clean
	rm -rf .stamp-*
	rm -rf $(INSTALL_DIR)
	rm -rf $(LIBSNMP)/usr
	rm -rf $(LIBSNMP_DEV)/usr
	rm -rf $(SNMP_UTILS_DIR)/usr
	rm -rf $(SNMPD)/usr
	rm -rf $(SNMPD_STATIC)/usr


control:

	@cat $(LIBSNMP)/CONTROL/control
	@echo
	@cat $(LIBSNMP_DEV)/CONTROL/control
	@echo
	@cat $(SNMP_UTILS_DIR)/CONTROL/control
	@echo
	@cat $(SNMPD)/CONTROL/control
	@echo
	@cat $(SNMPD_STATIC)/CONTROL/control
	@echo

binary package: .stamp-installed

	$(IPKG_BUILD) $(LIBSNMP) $(IPKG_TARGET_DIR)
	$(IPKG_BUILD) $(LIBSNMP_DEV) $(IPKG_TARGET_DIR)
	$(IPKG_BUILD) $(SNMP_UTILS_DIR) $(IPKG_TARGET_DIR)
	$(IPKG_BUILD) $(SNMPD) $(IPKG_TARGET_DIR)
	$(IPKG_BUILD) $(SNMPD_STATIC) $(IPKG_TARGET_DIR)


.stamp-configured: $(BUILD_DEPS)

	rm -rf config.cache
	$(TARGET_CONFIGURE_OPTS) \
	CFLAGS="$(TARGET_CFLAGS)" \
	./configure \
	  --target=$(GNU_TARGET_NAME) \
	  --host=$(GNU_TARGET_NAME) \
	  --build=$(GNU_HOST_NAME) \
	  --prefix=/usr \
	  --exec-prefix=/usr \
	  --bindir=/usr/bin \
	  --sbindir=/usr/sbin \
	  --includedir=/usr/include \
	  --libdir=/usr/lib \
	  --libexecdir=/usr/lib \
	  --datadir=/usr/share \
	  --infodir=/usr/share/info \
	  --mandir=/usr/share/man \
	  --localstatedir=/var \
	  --sysconfdir=/etc \
	  $(DISABLE_NLS) \
	  --enable-shared \
	  --enable-static \
	  --with-endianness=little \
	  --with-logfile=/var/log/snmpd.log \
	  --with-persistent-directory=/var/lib/snmp/ \
	  --with-default-snmp-version=1 \
	  --with-sys-contact=root@localhost \
	  --with-sys-location=Unknown \
	  --enable-applications \
	  --disable-debugging \
	  --disable-ipv6 \
	  --disable-manuals \
	  --disable-mib-loading \
	  --disable-mibs \
	  --disable-scripts \
	  --with-out-mib-modules="$(SNMP_MIB_MODULES_EXCLUDED)" \
	  --with-mib-modules="$(SNMP_MIB_MODULES_INCLUDED)" \
	  --with-out-transports="$(SNMP_TRANSPORTS_EXCLUDED)" \
	  --with-transports="$(SNMP_TRANSPORTS_INCLUDED)" \
	  --without-opaque-special-types \
	  --without-openssl \
	  --without-libwrap \
	  --without-rpm \
	  --without-zlib \

	touch .stamp-configured


.stamp-built: .stamp-configured

	$(MAKE)

	rm -rf agent/snmpd
	$(MAKE) \
	 LDFLAGS="-static"
	mv agent/snmpd agent/snmpd-static

	touch .stamp-built


.stamp-installed: .stamp-built

	mkdir -p $(INSTALL_DIR)

	$(MAKE) \
	  INSTALL_PREFIX="$(shell pwd)/$(INSTALL_DIR)" \
	 install

	mkdir -p $(LIBSNMP)/usr/lib
	cp -a $(INSTALL_DIR)/usr/lib/libnetsnmp.so.* $(LIBSNMP)/usr/lib/
	cp -a $(INSTALL_DIR)/usr/lib/libnetsnmpagent.so.* $(LIBSNMP)/usr/lib/
	cp -a $(INSTALL_DIR)/usr/lib/libnetsnmphelpers.so.* $(LIBSNMP)/usr/lib/
	cp -a $(INSTALL_DIR)/usr/lib/libnetsnmpmibs.so.* $(LIBSNMP)/usr/lib/
	$(STRIP) $(LIBSNMP)/usr/lib/lib*.so.*

	mkdir -p $(LIBSNMP_DEV)/usr/bin
	cp -af $(INSTALL_DIR)/usr/bin/net-snmp-config $(LIBSNMP_DEV)/usr/bin/
	mkdir -p $(LIBSNMP_DEV)/usr/include
	cp -af $(INSTALL_DIR)/usr/include/net-snmp $(LIBSNMP_DEV)/usr/include/
	mkdir -p $(LIBSNMP_DEV)/usr/lib
	cp -af $(INSTALL_DIR)/usr/lib/libnetsnmp.a $(LIBSNMP_DEV)/usr/lib/
	cp -af $(INSTALL_DIR)/usr/lib/libnetsnmpagent.a $(LIBSNMP_DEV)/usr/lib/
	cp -af $(INSTALL_DIR)/usr/lib/libnetsnmphelpers.a $(LIBSNMP_DEV)/usr/lib/
	cp -af $(INSTALL_DIR)/usr/lib/libnetsnmpmibs.a $(LIBSNMP_DEV)/usr/lib/
	cp -af $(INSTALL_DIR)/usr/lib/libnetsnmp.so* $(LIBSNMP_DEV)/usr/lib/
	cp -af $(INSTALL_DIR)/usr/lib/libnetsnmpagent.so* $(LIBSNMP_DEV)/usr/lib/
	cp -af $(INSTALL_DIR)/usr/lib/libnetsnmphelpers.so* $(LIBSNMP_DEV)/usr/lib/
	cp -af $(INSTALL_DIR)/usr/lib/libnetsnmpmibs.so* $(LIBSNMP_DEV)/usr/lib/

	mkdir -p $(SNMP_UTILS_DIR)/usr/bin
	cp -a $(INSTALL_DIR)/usr/bin/snmpbulkget $(SNMP_UTILS_DIR)/usr/bin/
	cp -a $(INSTALL_DIR)/usr/bin/snmpbulkwalk $(SNMP_UTILS_DIR)/usr/bin/
	cp -a $(INSTALL_DIR)/usr/bin/snmpdelta $(SNMP_UTILS_DIR)/usr/bin/
	cp -a $(INSTALL_DIR)/usr/bin/snmpdf $(SNMP_UTILS_DIR)/usr/bin/
	cp -a $(INSTALL_DIR)/usr/bin/snmpget $(SNMP_UTILS_DIR)/usr/bin/
	cp -a $(INSTALL_DIR)/usr/bin/snmpgetnext $(SNMP_UTILS_DIR)/usr/bin/
	cp -a $(INSTALL_DIR)/usr/bin/snmpinform $(SNMP_UTILS_DIR)/usr/bin/
	cp -a $(INSTALL_DIR)/usr/bin/snmpnetstat $(SNMP_UTILS_DIR)/usr/bin/
	cp -a $(INSTALL_DIR)/usr/bin/snmpset $(SNMP_UTILS_DIR)/usr/bin/
	cp -a $(INSTALL_DIR)/usr/bin/snmpstatus $(SNMP_UTILS_DIR)/usr/bin/
	cp -a $(INSTALL_DIR)/usr/bin/snmptable $(SNMP_UTILS_DIR)/usr/bin/
	cp -a $(INSTALL_DIR)/usr/bin/snmptest $(SNMP_UTILS_DIR)/usr/bin/
	cp -a $(INSTALL_DIR)/usr/bin/snmptranslate $(SNMP_UTILS_DIR)/usr/bin/
	cp -a $(INSTALL_DIR)/usr/bin/snmptrap $(SNMP_UTILS_DIR)/usr/bin/
	cp -a $(INSTALL_DIR)/usr/bin/snmpwalk $(SNMP_UTILS_DIR)/usr/bin/
	$(STRIP) $(SNMP_UTILS_DIR)/usr/bin/*

	mkdir -p $(SNMPD)/usr/sbin
	cp -a $(INSTALL_DIR)/usr/sbin/snmpd $(SNMPD)/usr/sbin/
	$(STRIP) $(SNMPD)/usr/sbin/*

	mkdir -p $(SNMPD_STATIC)/usr/sbin
	cp -a agent/snmpd-static $(SNMPD_STATIC)/usr/sbin/snmpd
	$(STRIP) $(SNMPD_STATIC)/usr/sbin/*

	chmod 0755 $(LIBSNMP)/CONTROL/
	chmod 0644 $(LIBSNMP)/CONTROL/control
	chmod 0755 $(LIBSNMP)/usr/
	chmod 0755 $(LIBSNMP)/usr/lib/
	chmod 0755 $(LIBSNMP)/usr/lib/lib*.so.*

	chmod 0755 $(LIBSNMP_DEV)/CONTROL/
	chmod 0644 $(LIBSNMP_DEV)/CONTROL/control
	chmod 0755 $(LIBSNMP_DEV)/usr/
	chmod 0755 $(LIBSNMP_DEV)/usr/bin/
	chmod 0755 $(LIBSNMP_DEV)/usr/bin/net-snmp-config
	chmod 0755 $(LIBSNMP_DEV)/usr/include/
	chmod 0755 $(LIBSNMP_DEV)/usr/include/net-snmp/
	chmod 0644 $(LIBSNMP_DEV)/usr/include/net-snmp/*.h
	chmod 0755 $(LIBSNMP_DEV)/usr/lib/
	chmod 0755 $(LIBSNMP_DEV)/usr/lib/lib*.so.*

	chmod 0755 $(SNMP_UTILS_DIR)/CONTROL/
	chmod 0644 $(SNMP_UTILS_DIR)/CONTROL/control
	chmod 0755 $(SNMP_UTILS_DIR)/usr/
	chmod 0755 $(SNMP_UTILS_DIR)/usr/bin/
	chmod 0755 $(SNMP_UTILS_DIR)/usr/bin/snmpbulkget
	chmod 0755 $(SNMP_UTILS_DIR)/usr/bin/snmpbulkwalk
	chmod 0755 $(SNMP_UTILS_DIR)/usr/bin/snmpdelta
	chmod 0755 $(SNMP_UTILS_DIR)/usr/bin/snmpdf
	chmod 0755 $(SNMP_UTILS_DIR)/usr/bin/snmpget
	chmod 0755 $(SNMP_UTILS_DIR)/usr/bin/snmpgetnext
	chmod 0755 $(SNMP_UTILS_DIR)/usr/bin/snmpinform
	chmod 0755 $(SNMP_UTILS_DIR)/usr/bin/snmpnetstat
	chmod 0755 $(SNMP_UTILS_DIR)/usr/bin/snmpset
	chmod 0755 $(SNMP_UTILS_DIR)/usr/bin/snmpstatus
	chmod 0755 $(SNMP_UTILS_DIR)/usr/bin/snmptable
	chmod 0755 $(SNMP_UTILS_DIR)/usr/bin/snmptest
	chmod 0755 $(SNMP_UTILS_DIR)/usr/bin/snmptranslate
	chmod 0755 $(SNMP_UTILS_DIR)/usr/bin/snmptrap
	chmod 0755 $(SNMP_UTILS_DIR)/usr/bin/snmpwalk

	chmod 0755 $(SNMPD)/CONTROL/
	chmod 0644 $(SNMPD)/CONTROL/control
	chmod 0644 $(SNMPD)/CONTROL/conffiles
	chmod 0755 $(SNMPD)/etc/
	chmod 0755 $(SNMPD)/etc/default/
	chmod 0644 $(SNMPD)/etc/default/snmpd
	chmod 0755 $(SNMPD)/etc/init.d/
	chmod 0755 $(SNMPD)/etc/init.d/snmpd
	chmod 0755 $(SNMPD)/etc/snmp/
	chmod 0644 $(SNMPD)/etc/snmp/snmpd.conf
	chmod 0755 $(SNMPD)/usr/
	chmod 0755 $(SNMPD)/usr/sbin/
	chmod 0755 $(SNMPD)/usr/sbin/snmpd
	
	chmod 0755 $(SNMPD_STATIC)/CONTROL/
	chmod 0644 $(SNMPD_STATIC)/CONTROL/control
	chmod 0644 $(SNMPD_STATIC)/CONTROL/conffiles
	chmod 0755 $(SNMPD_STATIC)/etc/
	chmod 0755 $(SNMPD_STATIC)/etc/default/
	chmod 0644 $(SNMPD_STATIC)/etc/default/snmpd
	chmod 0755 $(SNMPD_STATIC)/etc/init.d/
	chmod 0755 $(SNMPD_STATIC)/etc/init.d/snmpd
	chmod 0755 $(SNMPD_STATIC)/etc/snmp/
	chmod 0644 $(SNMPD_STATIC)/etc/snmp/snmpd.conf
	chmod 0755 $(SNMPD_STATIC)/usr/
	chmod 0755 $(SNMPD_STATIC)/usr/sbin/
	chmod 0755 $(SNMPD_STATIC)/usr/sbin/snmpd
	
	touch .stamp-installed


.PHONY: build install clean control binary package
