Example loadable plugin
Source
xxxxxxxxxx
branch=`(git symbolic-ref -q HEAD > /dev/null && echo 1) || (git tag -l --points-at HEAD| grep "."| grep -q -v "-" && echo 2) || echo 1`; \
.ONESHELL:
PACKAGE=zabbix-agent2-plugin-example
TOPDIR := $(CURDIR)
ifeq ($(OS),Windows_NT)
SHELL := cmd
TOPDIR := $(subst /,\,$(CURDIR))
PACKAGE:=$(PACKAGE).exe
WINDRES = windres.exe
ifneq ("$(shell findstr ZABBIX_RC_NUM $(TOPDIR)\windres\resource.h)","")
ifeq ("$(WINDRES_FLAGS)","")
WINDRES_FLAGS := \
-D ZABBIX_LICENSE_YEARS='\"$(word 3,$(shell findstr Copyright $(TOPDIR)\main.go | findstr 2001-20))\"' \
-D ZABBIX_VERSION_MAJOR=$(lastword $(shell findstr VERSION_MAJOR $(TOPDIR)\main.go | findstr =)) \
-D ZABBIX_VERSION_MINOR=$(lastword $(shell findstr VERSION_MINOR $(TOPDIR)\main.go | findstr =)) \
-D ZABBIX_VERSION_PATCH=$(lastword $(shell findstr VERSION_PATCH $(TOPDIR)\main.go | findstr =)) \
-D ZABBIX_VERSION_RC='\"$(lastword $(shell findstr VERSION_RC $(TOPDIR)\main.go | findstr =))\"' \
-D ZABBIX_VERSION_RC_NUM=1000
endif
endif
RFLAGS := $(RFLAGS) --input-format=rc -O coff
ifeq ("$(ARCH)", "")
ARCH := $(PROCESSOR_ARCHITECTURE)
endif
endif
ifeq ("$(ARCH)", "x86")
GOARCH := 386
RFLAGS := $(RFLAGS) --target=pe-i386
else
GOARCH := amd64
RFLAGS := $(RFLAGS) --target=pe-x86-64
endif
DISTFILES = \
ChangeLog \
go.mod \
go.sum \
LICENSE \
main.go \
Makefile \
example.conf \
README.md
DIST_SUBDIRS = \
plugin \
windres \
vendor
.build_rc:
ifneq ("$(WINDRES)","")
$(WINDRES) $(TOPDIR)\windres\resource.rc $(WINDRES_FLAGS) $(RFLAGS) \
-D VER_FILEDESCRIPTION_STR='\"$(PACKAGE)\"' \
-D _WINDOWS -o "$(TOPDIR)\$(PACKAGE).syso"
endif
build: .build_rc
set GOARCH=$(GOARCH)
go build -o "$(TOPDIR)/$(PACKAGE)"
clean:
ifeq ($(OS),Windows_NT)
if exist "$(TOPDIR)\vendor" rmdir /S /Q "$(TOPDIR)\vendor"
del /F "$(TOPDIR)\$(PACKAGE)*"
else
rm -rf "$(TOPDIR)/vendor"
rm -rf "$(TOPDIR)/$(PACKAGE)"*
endif
go clean "$(TOPDIR)/..."
check:
go test -v "$(TOPDIR)/..."
style:
golangci-lint run --new-from-rev=$(NEW_FROM_REV) "$(TOPDIR)/..."
format:
go fmt "$(TOPDIR)/..."
dist:
ifneq ($(OS),Windows_NT)
cd $(TOPDIR); \
go mod vendor; \
major_verison=$(lastword $(shell grep 'PLUGIN_VERSION_MAJOR =' ./main.go)); \
minor_verison=$(lastword $(shell grep 'PLUGIN_VERSION_MINOR =' ./main.go)); \
patch_verison=$(lastword $(shell grep 'PLUGIN_VERSION_PATCH =' ./main.go)); \
alphatag=$(lastword $(shell grep 'PLUGIN_VERSION_RC =' ./main.go)); \