1.ONESHELL: 2 3SHELL := cmd 4BUILDDIR := $(subst /,\,$(CURDIR)) 5TOPDIR := $(BUILDDIR)\..\.. 6OUTPUTDIR := output 7 8MODULEDIR = $(TOPDIR)\src\go 9TARGETDIR = $(TOPDIR)\src\go\cmd\zabbix_agent2 10TARGETPKG=zabbix.com/cmd/zabbix_agent2 11 12CC = gcc 13WINDRES = windres.exe 14 15OBJS = \ 16 $(OUTPUTDIR)\threads.o \ 17 $(OUTPUTDIR)\str.o \ 18 $(OUTPUTDIR)\misc.o \ 19 $(OUTPUTDIR)\fatal.o \ 20 $(OUTPUTDIR)\disk.o \ 21 $(OUTPUTDIR)\iprange.o \ 22 $(OUTPUTDIR)\md5.o \ 23 $(OUTPUTDIR)\sysinfo.o \ 24 $(OUTPUTDIR)\vector.o \ 25 $(OUTPUTDIR)\zbxregexp.o \ 26 $(OUTPUTDIR)\persistent_state.o \ 27 $(OUTPUTDIR)\logfiles.o \ 28 $(OUTPUTDIR)\file.o \ 29 $(OUTPUTDIR)\alias.o \ 30 $(OUTPUTDIR)\algodefs.o \ 31 $(OUTPUTDIR)\sysinfo_system.o \ 32 $(OUTPUTDIR)\sysinfo_dns.o \ 33 $(OUTPUTDIR)\sysinfo_dir.o \ 34 $(OUTPUTDIR)\eventlog.o \ 35 $(TARGETDIR)\resource.syso 36 37CFLAGS := $(CFLAGS) -O2 -g -DHAVE_STDINT_H=1 -DZBX_BUILD_AGENT2=1 -DHAVE_THREAD_LOCAL=1 \ 38 -I$(TOPDIR)\build\win32\include -I$(TOPDIR)\build\mingw -I$(TOPDIR)\include 39 40RFLAGS := $(RFLAGS) --input-format=rc -O coff 41GOPATH := $(GOPATH);$(TOPDIR)\go 42TAGS := 43 44ifeq ("$(ARCH)", "") 45 ARCH := $(PROCESSOR_ARCHITECTURE) 46endif 47 48ifeq ("$(ARCH)", "x86") 49 CFLAGS := $(CFLAGS) -m32 50 CGO_CFLAGS := $(CGO_CFLAGS) -m32 51 GOARCH := 386 52 TARGETBIN=$(TOPDIR)\bin\win32\zabbix_agent2.exe 53 RFLAGS := $(RFLAGS) --target=pe-i386 54 55else 56 TARGETBIN=$(TOPDIR)\bin\win64\zabbix_agent2.exe 57 GOARCH := amd64 58 RFLAGS := $(RFLAGS) --target=pe-x86-64 59endif 60 61ifneq ("$(OPENSSL)", "") 62 CFLAGS := $(CFLAGS) -DHAVE_OPENSSL=1 -DHAVE_OPENSSL_WITH_PSK=1 63 ifneq (,$(wildcard $(OPENSSL))) 64 CFLAGS := $(CFLAGS) -I$(OPENSSL)\include 65 LDFLAGS := $(LDFLAGS) -L$(OPENSSL)\lib 66 TAGS += openssl 67 OBJS += $(OUTPUTDIR)\tls_version.o 68 endif 69endif 70 71ifneq ("$(PCRE)", "") 72 CFLAGS := $(CFLAGS) -I$(PCRE)\include 73 LDFLAGS := $(LDFLAGS) -L$(PCRE)\lib 74endif 75 76CGO_CFLAGS += $(CFLAGS) 77CGO_LDFLAGS += $(LDFLAGS) 78 79PKG=zabbix.com/pkg/version 80 81GOLDFLAGS = -X $(PKG).titleMessage=zabbix_agent2 82GOLDFLAGS += -X $(PKG).compileOs=windows 83GOLDFLAGS += -X $(PKG).compileArch=$(GOARCH) 84GOLDFLAGS += -X main.confDefault=zabbix_agent2.win.conf 85 86all: $(TARGETBIN) 87 88$(OUTPUTDIR)\misc.o: $(TOPDIR)\src\libs\zbxcommon\misc.c 89 $(CC) $(CFLAGS) -DUNICODE -c $^ -o $@ 90 91$(OUTPUTDIR)\iprange.o: $(TOPDIR)\src\libs\zbxcommon\iprange.c 92 $(CC) $(CFLAGS) -DUNICODE -c $^ -o $@ 93 94$(OUTPUTDIR)\str.o: $(TOPDIR)\src\libs\zbxcommon\str.c 95 $(CC) $(CFLAGS) -DUNICODE -c $^ -o $@ 96 97$(OUTPUTDIR)\file.o: $(TOPDIR)\src\libs\zbxcommon\file.c 98 $(CC) $(CFLAGS) -DUNICODE -c $^ -o $@ 99 100$(OUTPUTDIR)\alias.o: $(TOPDIR)\src\libs\zbxcommon\alias.c 101 $(CC) $(CFLAGS) -DUNICODE -c $^ -o $@ 102 103$(OUTPUTDIR)\tls_version.o: $(TOPDIR)\src\libs\zbxcrypto\tls_version.c 104 $(CC) $(CFLAGS) -DUNICODE -c $^ -o $@ 105 106$(OUTPUTDIR)\fatal.o: $(TOPDIR)\src\libs\zbxwin32\fatal.c 107 $(CC) $(CFLAGS) -DUNICODE -c $^ -o $@ 108 109$(OUTPUTDIR)\disk.o: $(TOPDIR)\src\libs\zbxwin32\disk.c 110 $(CC) $(CFLAGS) -DUNICODE -c $^ -o $@ 111 112$(OUTPUTDIR)\threads.o: $(TOPDIR)\src\libs\zbxsys\threads.c 113 $(CC) $(CFLAGS) -DUNICODE -c $^ -o $@ 114 115$(OUTPUTDIR)\md5.o: $(TOPDIR)\src\libs\zbxcrypto\md5.c 116 $(CC) $(CFLAGS) -DUNICODE -c $^ -o $@ 117 118$(OUTPUTDIR)\sysinfo.o: $(TOPDIR)\src\libs\zbxsysinfo\sysinfo.c 119 $(CC) $(CFLAGS) -DUNICODE -DWITH_COMMON_METRICS -c $^ -o $@ 120 121$(OUTPUTDIR)\sysinfo_system.o: $(TOPDIR)\src\libs\zbxsysinfo\common\system.c 122 $(CC) $(CFLAGS) -DUNICODE -c $^ -o $@ 123 124$(OUTPUTDIR)\sysinfo_dns.o: $(TOPDIR)\src\libs\zbxsysinfo\common\dns.c 125 $(CC) $(CFLAGS) -DUNICODE -c $^ -o $@ 126 127$(OUTPUTDIR)\sysinfo_dir.o: $(TOPDIR)\src\libs\zbxsysinfo\common\dir.c 128 $(CC) $(CFLAGS) -DUNICODE -c $^ -o $@ 129 130$(OUTPUTDIR)\vector.o: $(TOPDIR)\src\libs\zbxalgo\vector.c 131 $(CC) $(CFLAGS) -DUNICODE -c $^ -o $@ 132 133$(OUTPUTDIR)\algodefs.o: $(TOPDIR)\src\libs\zbxalgo\algodefs.c 134 $(CC) $(CFLAGS) -DUNICODE -c $^ -o $@ 135 136$(OUTPUTDIR)\zbxregexp.o: $(TOPDIR)\src\libs\zbxregexp\zbxregexp.c 137 $(CC) $(CFLAGS) -DUNICODE -DPCRE_STATIC -c $^ -o $@ 138 139$(OUTPUTDIR)\persistent_state.o: $(TOPDIR)\src\zabbix_agent\logfiles\persistent_state.c 140 $(CC) $(CFLAGS) -DUNICODE -c $^ -o $@ 141 142$(OUTPUTDIR)\logfiles.o: $(TOPDIR)\src\zabbix_agent\logfiles\logfiles.c 143 $(CC) $(CFLAGS) -DUNICODE -c $^ -o $@ 144 145$(OUTPUTDIR)\eventlog.o: $(TOPDIR)\src\zabbix_agent\eventlog.c 146 $(CC) $(CFLAGS) -DUNICODE -c $^ -I$(TOPDIR)\go\win64 -o $@ 147 148$(TARGETDIR)\resource.syso: $(TOPDIR)\build\win32\project\resource.rc 149 $(WINDRES) $^ $(RFLAGS) -D _WINDOWS -D ZABBIX_AGENT2 -o $@ 150 151.FORCE: 152$(TARGETBIN): $(OBJS) .FORCE 153 set CGO_CFLAGS=$(CGO_CFLAGS) 154 set CGO_LDFLAGS=$(CGO_LDFLAGS) 155 set GOARCH=$(GOARCH) 156 set CGO_ENABLED=1 157 158 for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j 159 set BUILD_DATE=%ldt:~0,4%-%ldt:~4,2%-%ldt:~6,2% 160 set BUILD_TIME=%ldt:~8,2%:%ldt:~10,2%:%ldt:~12,2% 161 162 set GOLDFLAGS=$(GOLDFLAGS) -X $(PKG).compileDate=%BUILD_DATE% 163 set GOLDFLAGS=%GOLDFLAGS% -X $(PKG).compileTime=%BUILD_TIME% 164 cd $(MODULEDIR) 165 166 go build -tags "$(TAGS)" -ldflags="%GOLDFLAGS%" -o $(TARGETBIN) zabbix.com/cmd/zabbix_agent2 167 168clean: 169 go clean -cache 170 del $(TOPDIR)\include\config.h "$(TARGETBIN)" $(OUTPUTDIR)\*.o $(TARGETDIR)\*.syso 2>NUL 171