5 kx
5 kx #
5 kx # Makefile.in (at the root of net-snmp)
5 kx #
5 kx
5 kx VPATH = @srcdir@
5 kx
5 kx SUBDIRS = snmplib @MAINSUBS@
5 kx FTSUBDIRS = @FTMAINSUBS@ snmplib
5 kx TESTDIRS = testing
5 kx
5 kx CPP = @CPP@ \
5 kx -Iinclude -I$(srcdir)/include -I$(srcdir)/agent/mibgroup -I. -I$(srcdir) \
5 kx -DDONT_INC_STRUCTS -DBINDIR=$(bindir) \
5 kx $(EXTRACPPFLAGS)
5 kx
5 kx INSTALLHEADERS=version.h net-snmp-features.h
5 kx INCLUDESUBDIR=system
5 kx INCLUDESUBDIRHEADERS= aix.h bsd.h bsdi3.h bsdi4.h bsdi.h cygwin.h \
5 kx darwin.h darwin7.h darwin8.h darwin9.h darwin10.h darwin11.h darwin12.h \
5 kx darwin13.h darwin14.h darwin15.h darwin16.h darwin17.h \
5 kx dragonfly.h dynix.h \
5 kx freebsd2.h freebsd3.h freebsd4.h freebsd5.h freebsd6.h \
5 kx freebsd7.h freebsd8.h freebsd9.h freebsd10.h freebsd11.h \
5 kx freebsd12.h freebsd13.h freebsd14.h freebsd.h \
5 kx generic.h \
5 kx hpux.h irix.h linux.h mingw32.h mingw32msvc.h mips.h \
5 kx netbsd.h nto-qnx6.h osf5.h \
5 kx openbsd.h openbsd6.h openbsd5.h openbsd4.h \
5 kx solaris2.3.h solaris2.4.h solaris2.5.h solaris2.6.h \
5 kx solaris.h sunos.h svr5.h sysv.h ultrix4.h
5 kx INCLUDESUBDIR2=machine
5 kx INCLUDESUBDIRHEADERS2=generic.h
5 kx INSTALLBUILTHEADERS=include/net-snmp/net-snmp-config.h
5 kx INSTALLBUILTINCLUDEHEADERS=@FEATUREHEADERS@
5 kx INSTALLBINSCRIPTS=net-snmp-config net-snmp-create-v3-user
5 kx INSTALLUCDHEADERS=ucd-snmp-config.h version.h mib_module_config.h
5 kx INSTALL_PKGCONFIG=netsnmp.pc netsnmp-agent.pc
5 kx
5 kx #
5 kx # other install rules.
5 kx #
5 kx OTHERINSTALL=copypersistentfiles @PERLINSTALLTARGS@ @PYTHONINSTALLTARGS@
5 kx OTHERUNINSTALL=@PERLUNINSTALLTARGS@ @PYTHONUNINSTALLTARGS@
5 kx COPY_PERSISTENT_FILES=@COPY_PERSISTENT_FILES@
5 kx PERSISTENT_DIRECTORY=@PERSISTENT_DIRECTORY@
5 kx UCDPERSISTENT_DIRECTORY=@UCDPERSISTENT_DIRECTORY@
5 kx
5 kx #
5 kx # perl specific
5 kx #
5 kx # yes, order matters here. default_store must occur before anything else
5 kx PERLMODULES=default_store SNMP ASN OID agent TrapReceiver
5 kx PERLMODULEFTS=perl/default_store/netsnmp-feature-definitions.ft \
5 kx perl/SNMP/netsnmp-feature-definitions.ft \
5 kx perl/ASN/netsnmp-feature-definitions.ft \
5 kx perl/OID/netsnmp-feature-definitions.ft \
5 kx perl/agent/netsnmp-feature-definitions.ft \
5 kx perl/TrapReceiver/netsnmp-feature-definitions.ft
5 kx PERLARGS=@PERLARGS@
5 kx
5 kx #
5 kx # python specific
5 kx #
5 kx PYTHONARGS=@PYTHONARGS@
5 kx PYTHONMODULEFTS=python/netsnmp/netsnmp-feature-definitions.ft
5 kx
5 kx #
5 kx # libtool
5 kx #
5 kx LIBTOOL_DEPS = @LIBTOOL_DEPS@
5 kx
5 kx #
5 kx # feature checks for optional components
5 kx #
5 kx FTOTHERTARGS=@PERLFEATURES@ @PYTHONFEATURES@
5 kx
5 kx #
5 kx # targets
5 kx #
5 kx all: sedscript EXAMPLE.conf @FEATURETARGS@ standardall net-snmp-config-x net-snmp-create-v3-user @PERLTARGS@ @PYTHONTARGS@
5 kx
5 kx start-flag:
5 kx @touch build-in-progress-flag
5 kx
5 kx end-flag:
5 kx @rm -f build-in-progress-flag > /dev/null 2>&1
5 kx
5 kx libtool: $(LIBTOOL_DEPS)
5 kx $(SHELL) ./config.status --recheck
5 kx
5 kx
5 kx snmplib: @FEATURETARGS@
5 kx @(cd snmplib; $(MAKE) )
5 kx
5 kx agent: @FEATURETARGS@
5 kx @(cd snmplib; $(MAKE) )
5 kx @(cd agent; $(MAKE) )
5 kx
5 kx apps: @FEATURETARGS@
5 kx @(cd snmplib; $(MAKE) )
5 kx @(cd agent; $(MAKE) libs)
5 kx @(cd apps; $(MAKE) )
5 kx
5 kx snmpget snmpbulkget snmpwalk snmpbulkwalk snmptranslate snmpstatus snmpdelta snmptable snmptest snmpset snmpusm snmpvacm snmpgetnext encode_keychange snmpdf snmptrap snmptls: @FEATURETARGS@
5 kx @(cd snmplib; $(MAKE) )
5 kx @(cd apps; $(MAKE) $@ )
5 kx
5 kx agentxtrap snmptrapd: @FEATURETARGS@
5 kx @(cd snmplib; $(MAKE) )
5 kx @(cd agent; $(MAKE) libs)
5 kx @(cd apps; $(MAKE) $@ )
5 kx
5 kx #
5 kx # local build rules
5 kx #
5 kx sedscript: sedscript.in include/net-snmp/net-snmp-config.h $(srcdir)/agent/mibgroup/mibdefs.h
5 kx $(CPP) $(srcdir)/sedscript.in | egrep '^s[/#]' | sed 's/REMOVEME//g;s# */#/#g;s/ *#/#/g;s#/ *#/#g;s/# g/#g/;' > sedscript
5 kx echo 's/VERSIONINFO/$(VERSION)/g' >> sedscript
5 kx echo 's#DATADIR#$(datadir)#g' >> sedscript
5 kx echo 's#LIBDIR#$(libdir)#g' >> sedscript
5 kx echo 's#BINDIR#$(bindir)#g' >> sedscript
5 kx echo 's#PERSISTENT_DIRECTORY#$(PERSISTENT_DIRECTORY)#g' >> sedscript
5 kx echo 's#SYSCONFDIR#@sysconfdir@#g' >> sedscript
5 kx
5 kx EXAMPLE.conf: sedscript EXAMPLE.conf.def
5 kx $(SED) -f sedscript $(srcdir)/EXAMPLE.conf.def > EXAMPLE.conf
5 kx
5 kx docs: docsdir
5 kx
5 kx docsdir: docsdox
5 kx
5 kx docsdox: doxygen.conf
5 kx srcdir=$(srcdir) VERSION=$(VERSION) doxygen $(srcdir)/doxygen.conf
5 kx
5 kx net-snmp-config-x: net-snmp-config
5 kx chmod a+x net-snmp-config
5 kx touch net-snmp-config-x
5 kx
5 kx net-snmp-create-v3-user-x: net-snmp-create-v3-user
5 kx chmod a+x net-snmp-create-v3-user
5 kx touch net-snmp-create-v3-user-x
5 kx
5 kx #
5 kx # extra install rules
5 kx #
5 kx
5 kx copypersistentfiles:
5 kx @if test "$(COPY_PERSISTENT_FILES)" = "yes" -a -d $(UCDPERSISTENT_DIRECTORY) -a ! -d $(PERSISTENT_DIRECTORY) ; then \
5 kx cp -pr $(UCDPERSISTENT_DIRECTORY) $(PERSISTENT_DIRECTORY) ; \
5 kx echo "copying $(UCDPERSISTENT_DIRECTORY) to $(PERSISTENT_DIRECTORY)" ; \
5 kx fi
5 kx #
5 kx # test targets
5 kx #
5 kx test test-mibs testall testfailed testsimple: all testdirs
5 kx ( cd testing; $(MAKE) $@ )
5 kx
5 kx testdirs:
5 kx for i in $(TESTDIRS) ; do \
5 kx ( cd $$i ; $(MAKE) ) ; \
5 kx if test $$? != 0 ; then \
5 kx exit 1 ; \
5 kx fi \
5 kx done
5 kx
5 kx distall: ${srcdir}/configure ${srcdir}/include/net-snmp/net-snmp-config.h
5 kx
5 kx OTHERCLEANTARGETS=EXAMPLE.conf sedscript
5 kx OTHERCLEANTODOS=perlclean @PYTHONCLEANTARGS@ cleanfeatures perlcleanfeatures pythoncleanfeatures
5 kx
5 kx #
5 kx # perl specific build rules
5 kx #
5 kx # override LD_RUN_PATH to avoid dependencies on the build directory
5 kx perlmodules: perlmakefiles subdirs
5 kx @(cd perl ; $(MAKE) LD_RUN_PATH="$(libdir):`$(PERL) -e 'use Config; print qq($$Config{archlibexp}/CORE);'`") ; \
5 kx if test $$? != 0 ; then \
5 kx exit 1 ; \
5 kx fi
5 kx
5 kx perlmakefiles: perl/Makefile net-snmp-config-x
5 kx
5 kx perl/Makefile: perl/Makefile.PL
5 kx dir=`pwd` && \
5 kx cd perl && \
5 kx if false; then \
5 kx carp=-MCarp::Always; \
5 kx fi && \
5 kx export PERL5LIB="$$dir/perl" && \
5 kx $(PERL) $$carp Makefile.PL -NET-SNMP-IN-SOURCE=true \
5 kx -NET-SNMP-CONFIG="sh $$dir/net-snmp-config" $(PERLARGS)
5 kx
5 kx perlinstall:
5 kx @(cd perl ; $(MAKE) install) ; \
5 kx if test $$? != 0 ; then \
5 kx exit 1 ; \
5 kx fi
5 kx
5 kx perluninstall:
5 kx echo "WARNING: perl doesn't support uninstall"
5 kx
5 kx perltest:
5 kx @(cd perl ; $(MAKE) test) ; \
5 kx if test $$? != 0 ; then \
5 kx exit 1 ; \
5 kx fi
5 kx
5 kx perlclean:
5 kx @if test -f perl/Makefile; then \
5 kx ( cd perl ; $(MAKE) clean ) ; \
5 kx fi
5 kx
5 kx perlrealclean:
5 kx @if test -f perl/Makefile; then \
5 kx ( cd perl ; $(MAKE) realclean ) ; \
5 kx fi
5 kx
5 kx .h.ft:
5 kx $(FEATURECHECK) --feature-global $(top_builddir)/include/net-snmp/feature-details.h `dirname $<` $< $@ $(CC) -I $(top_builddir)/include -I $(top_srcdir)/include -E $(CPPFLAGS) $(CFLAGS) -c
5 kx
5 kx perlfeatures: $(PERLMODULEFTS)
5 kx
5 kx perlcleanfeatures:
5 kx $(RM) $(PERLMODULEFTS)
5 kx
5 kx #
5 kx # python specific build rules:
5 kx #
5 kx # EXTRA_PYTHON_CFLAGS additional compiler flags to pass when building Python
5 kx # library
5 kx # EXTRA_PYTHON_LDFLAGS additional linker flags to pass when building Python
5 kx # library
5 kx #
5 kx # PYTHON_CC cross compiler for Python extension module, for example:
5 kx # /opt/toolchains/ppc64-POWER8-linux-glibc/1.2.3/bin/ppc64-power8-linux-gnu-gcc \
5 kx # --sysroot=PATH_TO_DEVENV_SYSROOT
5 kx # used to define 'CC' environment variable for build Python extensions
5 kx #
5 kx # PYTHON_LDSHARED cross linker for Python extension module, for example:
5 kx # /opt/toolchains/ppc64-POWER8-linux-glibc/1.2.3/bin/ppc64-power8-linux-gnu-gcc \
5 kx # --sysroot=PATH_TO_DEVENV_SYSROOT -shared
5 kx # used to define 'LDSHARED' venvironmen varionle for build Python
5 kx #
5 kx # PYTHON_CCSHARED cross linker for Python extension module, for example:
5 kx # /opt/toolchains/ppc64-POWER8-linux-glibc/1.2.3/bin/ppc64-power8-linux-gnu-gcc \
5 kx # --sysroot=PATH_TO_DEVENV_SYSROOT -shared
5 kx # used to define 'LDSHARED' venvironmen varionle for build Python
5 kx #
5 kx # PYTHON_PATH path to Python lib-dinload directory where placed the sysconfig file
5 kx # got build machine Python, for example:
5 kx # PYTHON_PATH=PATH_TO_DEVENV_SYSROOT/usr/lib/python3.10/lib-dynload
5 kx # if your build machine is an x86_64 Linux machine then the file:
5 kx # _sysconfigdata_m_linux_x86_64-linux-gnu.py
5 kx # will be used by Python setup tools to get system variables to
5 kx # build extension module. For example the suffix of shared library
5 kx # defined by EXT_SUFFIX variable in the _sysconfigdata_* file
5 kx #
5 kx PYMAKE = CC="$(PYTHON_CC)" LDSHARED="$(PYTHON_LDSHARED)" CCSHARED="$(PYTHON_CCSHARED)" \
5 kx CFLAGS="$(EXTRA_PYTHON_CFLAGS)" LDFLAGS="$(EXTRA_PYTHON_LDFLAGS)" \
5 kx PYTHONPATH=$(PYTHON_PATH) $(PYTHON) setup.py $(PYTHONARGS)
5 kx pythonmodules: subdirs
5 kx @(dir=`pwd`; cd python; $(PYMAKE) build --basedir=$$dir) ; \
5 kx if test $$? != 0 ; then \
5 kx exit 1 ; \
5 kx fi
5 kx
5 kx pythoninstall:
5 kx @(dir=`pwd`; cd python; $(PYMAKE) install --basedir=$$dir --root=$(DESTDIR) --prefix=$(prefix)) ; \
5 kx if test $$? != 0 ; then \
5 kx exit 1 ; \
5 kx fi
5 kx
5 kx pythonuninstall:
5 kx echo "WARNING: python doesn't support uninstall"
5 kx
5 kx pythontest:
5 kx @(dir=`pwd`; cd python; $(PYMAKE) test --basedir=$$dir) ; \
5 kx if test $$? != 0 ; then \
5 kx exit 1 ; \
5 kx fi
5 kx
5 kx pythonclean:
5 kx @(dir=`pwd`; cd python; $(PYMAKE) clean --basedir=$$dir)
5 kx
5 kx pythonfeatures: $(PYTHONMODULEFTS)
5 kx
5 kx pythoncleanfeatures:
5 kx $(RM) $(PYTHONMODULEFTS)
5 kx
5 kx #
5 kx # make distclean completely removes all traces of building including
5 kx # any files generated by configure itself.
5 kx #
5 kx distclean: perlrealclean clean configclean tarclean
5 kx
5 kx makefileclean:
5 kx rm -f Makefile snmplib/Makefile \
5 kx agent/Makefile agent/mibgroup/Makefile \
5 kx agent/helpers/Makefile \
5 kx apps/Makefile apps/snmpnetstat/Makefile \
5 kx man/Makefile mibs/Makefile ov/Makefile \
5 kx local/Makefile testing/Makefile
5 kx
5 kx configclean: makefileclean
5 kx rm -f config.cache config.status config.log \
5 kx libtool include/net-snmp/net-snmp-config.h \
5 kx net-snmp-config net-snmp-config-x configure-summary \
5 kx net-snmp-create-v3-user net-snmp-create-v3-user-x
5 kx rm -f *.pc
5 kx rm -f mibs/.index
5 kx rm -f include/net-snmp/agent/mib_module_config.h \
5 kx include/net-snmp/agent/agent_module_config.h \
5 kx include/net-snmp/library/snmpv3-security-includes.h \
5 kx include/net-snmp/feature-details.h \
5 kx snmplib/snmpsm_init.h snmplib/snmpsm_shutdown.h \
5 kx snmplib/transports/snmp_transport_inits.h \
5 kx agent/mibgroup/agent_module_includes.h \
5 kx agent/mibgroup/agent_module_inits.h \
5 kx agent/mibgroup/agent_module_shutdown.h \
5 kx agent/mibgroup/agent_module_dot_conf.h \
5 kx agent/mibgroup/mib_module_includes.h \
5 kx agent/mibgroup/mib_module_inits.h \
5 kx agent/mibgroup/mib_module_shutdown.h \
5 kx agent/mibgroup/mib_module_dot_conf.h \
5 kx local/snmpconf
5 kx rm -rf mk
5 kx rm -f *.core
5 kx
5 kx #
5 kx # Configure script related targets
5 kx #
5 kx touchit:
5 kx touch configure include/net-snmp/net-snmp-config.h.in
5 kx touch config.status
5 kx touch stamp-h stamp-h.in
5 kx
5 kx Makefile: Makefile.in config.status Makefile.rules Makefile.top
5 kx @if test "x$(NOAUTODEPS)" = "x"; then \
5 kx echo "running config.status because the following file(s) changed:"; \
5 kx echo " $?"; \
5 kx ./config.status; \
5 kx else \
5 kx echo "WARNING: not running config.status"; \
5 kx fi
5 kx
5 kx configure_ac = configure.ac \
5 kx configure.d/config_modules_agent \
5 kx configure.d/config_modules_lib \
5 kx configure.d/config_net_snmp_config_h \
5 kx configure.d/config_os_functions \
5 kx configure.d/config_os_headers \
5 kx configure.d/config_os_libs1 \
5 kx configure.d/config_os_libs2 \
5 kx configure.d/config_os_misc1 \
5 kx configure.d/config_os_misc2 \
5 kx configure.d/config_os_misc3 \
5 kx configure.d/config_os_misc4 \
5 kx configure.d/config_os_progs \
5 kx configure.d/config_os_struct_members \
5 kx configure.d/config_project_ipv6_types \
5 kx configure.d/config_project_manual \
5 kx configure.d/config_project_paths \
5 kx configure.d/config_project_perl_python \
5 kx configure.d/config_project_types \
5 kx configure.d/config_project_with_enable
5 kx
5 kx $(srcdir)/include/net-snmp/net-snmp-config.h.in: stamp-h.in
5 kx $(srcdir)/stamp-h.in: $(configure_ac)
5 kx @if test "x$(NOAUTODEPS)" = "x" -a "x$(AUTOHEADER)" != "x:"; then \
5 kx cd ${srcdir} && LC_COLLATE=C $(AUTOHEADER); \
5 kx echo timestamp > ${srcdir}/stamp-h.in; \
5 kx else \
5 kx echo "WARNING: not running autoheader"; \
5 kx fi
5 kx
5 kx include/net-snmp/net-snmp-config.h: stamp-h
5 kx stamp-h: include/net-snmp/net-snmp-config.h.in config.status
5 kx @if test "x$(NOAUTODEPS)" = "x"; then \
5 kx echo "running config.status because the following file(s) changed:"; \
5 kx echo " $?"; \
5 kx ./config.status; \
5 kx echo timestamp > stamp-h; \
5 kx else \
5 kx echo "WARNING: not running config.status"; \
5 kx fi
5 kx
5 kx $(srcdir)/configure: $(configure_ac) aclocal.m4
5 kx @if test "x$(NOAUTODEPS)" = "x" -a "x$(AUTOCONF)" != "x:"; then \
5 kx cd ${srcdir} && $(AUTOCONF); \
5 kx echo "Please run configure now."; \
5 kx sh -c exit 2; \
5 kx else \
5 kx echo "WARNING: not running autoconf"; \
5 kx fi
5 kx
5 kx gendir=dist/generation-scripts
5 kx generation-scripts: generation-scripts-dirs $(gendir)/gen-transport-headers $(gendir)/gen-security-headers
5 kx
5 kx $(gendir)/gen-variables: $(gendir)/gen-variables.in
5 kx ./config.status
5 kx
5 kx generation-scripts-dirs:
5 kx @if [ ! -d dist ] ; then \
5 kx mkdir dist ; \
5 kx fi
5 kx @if [ ! -d dist/generation-scripts ] ; then \
5 kx mkdir dist/generation-scripts ; \
5 kx fi
5 kx
5 kx $(gendir)/gen-transport-headers: $(gendir)/gen-transport-headers.in $(gendir)/gen-variables
5 kx rm -f $@
5 kx autoconf -o $@ $<
5 kx chmod a+x $@
5 kx
5 kx $(gendir)/gen-security-headers: $(gendir)/gen-security-headers.in $(gendir)/gen-variables
5 kx rm -f $@
5 kx autoconf -o $@ $<
5 kx chmod a+x $@
5 kx
5 kx config.status: configure
5 kx @if test "x$(NOAUTODEPS)" = "x"; then \
5 kx echo "running config.status because $? changed"; \
5 kx ./config.status --recheck; \
5 kx else \
5 kx echo "WARNING: not running config.status --recheck"; \
5 kx fi
5 kx
5 kx #
5 kx # Emacs TAGS file
5 kx #
5 kx TAGS:
5 kx $(FIND) $(srcdir) -path $(srcdir)/dist/rpm -prune -o -name '*.[ch]' -print | etags -
5 kx
5 kx #
5 kx # Internal distribution packaging, etc.
5 kx #
5 kx #tag:
5 kx # @if test "x$(VERSION)" = "x"; then \
5 kx # echo "you need to supply a VERSION string."; \
5 kx # exit 2; \
5 kx # fi
5 kx # ${srcdir}/agent/mibgroup/versiontag $(VERSION) tag
5 kx
5 kx tar:
5 kx @if test "x$(VERSION)" = "x"; then \
5 kx echo "you need to supply a VERSION string."; \
5 kx exit 2; \
5 kx fi
5 kx ${srcdir}/agent/mibgroup/versiontag $(VERSION) tar
5 kx
5 kx tarclean:
5 kx @if test -x ${srcdir}/agent/mibgroup/versiontag ; then \
5 kx ${srcdir}/agent/mibgroup/versiontag Ext clean ; \
5 kx fi
5 kx
5 kx checks:
5 kx $(MAKE) -k makefilecheck commentcheck warningcheck dependcheck \
5 kx assertcheck perlcalloccheck
5 kx
5 kx dependcheck:
5 kx @echo "Checking for full paths in dependency files..."
5 kx @if grep -n -E "^/" `$(FIND) $(top_srcdir) -name Makefile.depend`; then false; fi
5 kx
5 kx warningcheck:
5 kx @echo "Checking for cpp warnings..."
5 kx @if grep -n "#warning" `$(FIND) $(top_srcdir) -name \*.\[ch\]`; then false; fi
5 kx
5 kx assertcheck:
5 kx @echo "Checking for non-snmp asserts..."
5 kx @if grep -n -w "assert" `$(FIND) $(top_srcdir) -name \*.\[ch\] | grep -v snmp_assert.h`; then false; fi
5 kx
5 kx commentcheck:
5 kx @echo "Checking for C++ style comments..."
5 kx @if grep -n -E "([^:)n]|^)//" `$(FIND) $(top_srcdir) -path './win32' -prune -o -name \*.\[ch\] | grep -v agent/mibgroup/winExtDLL.c`; then false; fi
5 kx
5 kx makefilecheck:
5 kx @echo "Checking for non-portable Makefile constructs..."
5 kx @if grep -n "\.c=" `$(FIND) $(top_srcdir) -name .svn -prune -o -path ./Makefile.in -prune -o -name "Makefile.*" -print`; then false; fi
5 kx
5 kx # Invoking calloc() directly or indirectly from a Perl XSUB and freeing that
5 kx # memory by calling free() from the XSUB is a sure way to trigger "Free to
5 kx # wrong pool" errors on Windows.
5 kx perlcalloccheck:
5 kx @echo "Checking for calloc() in Perl's external subroutines ..."
5 kx @if grep -nwE 'calloc|SNMP_MALLOC_STRUCT|SNMP_MALLOC_TYPEDEF' `$(FIND) $(top_srcdir) -name '*.xs'`; then false; fi
5 kx
5 kx dist: tar
5 kx
5 kx FAQ.html:
5 kx local/FAQ2HTML FAQ
5 kx
5 kx .PHONY: docs docsdir mancp testdirs test TAGS
5 kx # note: tags and docs are phony to force rebulding
5 kx .PHONY: snmplib agent apps \
5 kx snmpget snmpbulkget snmpwalk snmpbulkwalk snmptranslate snmpstatus \
5 kx snmpdelta snmptable snmptest snmpset snmpusm snmpvacm snmpgetnext \
5 kx encode_keychange snmpdf snmptrap snmptrapd
5 kx .PHONY: perlfeatures pythonfeatures