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