obrisane nepotrebne datoteke od zadnjeg builda
[ossec-hids.git] / src / Makefile
1
2 uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
3
4 EXTERNAL_JSON=external/cJSON/
5 EXTERNAL_LUA=external/lua-5.2.3/
6 EXTERNAL_ZLIB=external/zlib-1.2.11/
7 EXTERNAL_PCRE2=external/pcre2-10.32/
8 ZLIB_SYSTEM?=yes
9 PCRE2_SYSTEM?=no
10 LUA_PLAT=posix
11 LUA_ENABLE?=no
12 MAXAGENTS?=2048
13 REUSE_ID?=no
14 # XXX Becareful NO EXTRA Spaces here
15 PREFIX?=/var/ossec
16 PG_CONFIG?=pg_config
17 MY_CONFIG?=mysql_config
18 PRELUDE_CONFIG?=libprelude-config
19 OSSEC_GROUP?=ossec
20 OSSEC_USER?=ossec
21 OSSEC_USER_MAIL?=ossecm
22 OSSEC_USER_REM?=ossecr
23
24 INSTALL_CMD?=install -m $(1) -o $(2) -g $(3)
25 INSTALL_LOCALTIME?=yes
26 INSTALL_RESOLVCONF?=yes
27
28 USE_PRELUDE?=no
29 USE_ZEROMQ?=no
30 USE_GEOIP?=no
31 USE_INOTIFY=no
32 USE_PCRE2_JIT=yes
33
34 ifneq (${TARGET},winagent)
35         USE_OPENSSL?=auto
36 else
37         USE_OPENSSL?=no
38 endif
39
40 ONEWAY?=no
41 CLEANFULL?=no
42
43 export MYLDFLAGS= "${LDFLAGS}"
44 export MYCFLAGS= "${CFLAGS}"
45
46 DEFINES=-DMAX_AGENTS=${MAXAGENTS} -DOSSECHIDS
47 DEFINES+=-DDEFAULTDIR=\"${PREFIX}\"
48 DEFINES+=-DUSER=\"${OSSEC_USER}\"
49 DEFINES+=-DREMUSER=\"${OSSEC_USER_REM}\"
50 DEFINES+=-DGROUPGLOBAL=\"${OSSEC_GROUP}\"
51 DEFINES+=-DMAILUSER=\"${OSSEC_USER_MAIL}\"
52 DEFINES+=-D${uname_S}
53
54 # Uncomment the DEFINES statement below if you are
55 # running Linux and want to use AF_UNSPEC instead of
56 # AF_INET6 to fully support IPv4 addresses.
57 #DEFINES+=-DNOV4MAP
58
59 ifneq (,$(filter ${REUSE_ID},yes y Y 1))
60         DEFINES+=-DREUSE_ID
61 endif
62
63 OSSEC_LDFLAGS=${LDFLAGS} -lm
64
65 ifneq (${TARGET},winagent)
66 ifeq (${uname_S},Linux)
67                 DEFINES+=-DINOTIFY_ENABLED
68 #               DEFINES+=-DUSE_MAGIC
69                 OSSEC_LDFLAGS+=-lpthread
70 #               OSSEC_LDFLAGS+=-lmagic
71 else
72 ifeq (${uname_S},AIX)
73                 DEFINES+=-DAIX
74                 DEFINES+=-DHIGHFIRST
75                 PATH:=${PATH}:/usr/vac/bin
76 else
77 ifeq (${uname_S},SunOS)
78                 DEFINES+=-DSOLARIS
79                 DEFINES+=-DHIGHFIRST
80                 OSSEC_LDFLAGS+=-lsocket -lnsl -lresolv
81                 LUA_PLAT=solaris
82                 PATH:=${PATH}:/usr/ccs/bin:/usr/xpg4/bin:/opt/csw/gcc3/bin:/opt/csw/bin:/usr/sfw/bin
83
84 else
85 ifeq (${uname_S},Darwin)
86                 DEFINES+=-DDarwin
87                 DEFINES+=-DHIGHFIRST
88                 LUA_PLAT=macosx
89
90 else
91 ifeq (${uname_S},FreeBSD)
92                 DEFINES+=-DFreeBSD
93                 OSSEC_LDFLAGS+=-pthread
94                 LUA_PLAT=freebsd
95                 CFLAGS+=-I/usr/local/include
96                 OSSEC_LDFLAGS+=-L/usr/local/lib
97 else
98 ifeq (${uname_S},NetBSD)
99                 DEFINES+=-DNetBSD
100                 OSSEC_LDFLAGS+=-pthread
101                 LUA_PLAT=posix
102                 CFLAGS+=-I/usr/local/include
103                 OSSEC_LDFLAGS+=-L/usr/local/lib
104 else
105 ifeq (${uname_S},OpenBSD)
106 #               DEFINES+=-DOpenBSD
107                 DEFINES+=-pthread
108                 LUA_PLAT=posix
109                 CFLAGS+=-I/usr/local/include
110                 OSSEC_LDFLAGS+=-L/usr/local/lib
111 else
112 ifeq (${uname_S},HP-UX)
113                 DEFINES+=-DHPUX
114                 DEFINES+=-D_XOPEN_SOURCE_EXTENDED
115                 DEFINES+=-DHIGHFIRST
116                 DEFINES+=-D_REENTRANT
117 else
118             $(warning Unknown platform)
119 endif # HPUX
120 endif # OpenBSD
121 endif # NetBSD
122 endif # FreeBSD
123 endif # Darwin
124 endif # SunOS
125 endif # AIX
126 endif # Linux
127 endif # winagent
128
129 ifdef DEBUGAD
130         DEFINES+=+DDEBUGAD
131 endif
132
133 OSSEC_CFLAGS=${CFLAGS}
134 #ANALYSISD_FLAGS="-lsqlite3"
135
136 ifdef DEBUG
137         OSSEC_CFLAGS+=-g
138 endif #DEBUG
139
140 ifneq (,$(filter ${CLEANFULL},yes y Y 1))
141         DEFINES+=-DCLEANFULL
142 endif
143
144 ifneq (,$(filter ${ONEWAY},yes y Y 1))
145         DEFINES+=-DONEWAY_ENABLED
146 endif
147
148 ifneq (${ZLIB_SYSTEM},no)
149         DEFINES+=-DZLIB_SYSTEM
150 endif
151
152 ifeq (${PCRE2_SYSTEM},no)
153         PCRE2_INCLUDE=-I./${EXTERNAL_PCRE2}/install/include/
154         DEFINES+=${PCRE2_INCLUDE}
155         DEFINES+=-DPCRE2_STATIC
156 else
157         PCRE2_LOCATION?=$(shell pcre2-config --prefix)/lib
158         OSSEC_LDFLAGS+=-lpcre2-8
159 endif
160
161
162 OSSEC_CFLAGS+=${DEFINES}
163 OSSEC_CFLAGS+=-Wall -Wextra
164 OSSEC_CFLAGS+=-I./ -I./headers/
165
166 CCCOLOR="\033[34m"
167 LINKCOLOR="\033[34;1m"
168 SRCCOLOR="\033[33m"
169 BINCOLOR="\033[37;1m"
170 MAKECOLOR="\033[32;1m"
171 ENDCOLOR="\033[0m"
172
173 MING_BASE:=
174 ifeq (${TARGET}, winagent)
175 CC=gcc
176 ZLIB_SYSTEM=no
177 PCRE2_SYSTEM=no
178 ifneq (,$(shell which amd64-mingw32msvc-gcc))
179         MING_BASE:=amd64-mingw32msvc-
180 else
181 ifneq (,$(shell which i686-pc-mingw32-gcc))
182         MING_BASE:=i686-pc-mingw32-
183 else
184 ifneq (,$(shell which i686-w64-mingw32-gcc))
185         MING_BASE:=i686-w64-mingw32-
186 else
187 $(error No windows cross-compiler found!) #MING_BASE:=unknown-
188 endif
189 endif
190 endif
191 endif #winagent
192
193
194 OSSEC_CC      =${QUIET_CC}${MING_BASE}${CC}
195 OSSEC_CCBIN   =${QUIET_CCBIN}${MING_BASE}${CC}
196 OSSEC_LINK    =${QUIET_LINK}${MING_BASE}ar -crs
197 OSSEC_RANLIB  =${QUIET_RANLIB}${MING_BASE}ranlib
198 OSSEC_WINDRES =${QUIET_CCBIN}${MING_BASE}windres
199
200
201 ifneq (,$(filter ${USE_PCRE2_JIT},yes y Y 1))
202         DEFINES+=-DUSE_PCRE2_JIT
203         PCRE2_CONFIGURE_JIT=--enable-jit
204 else
205         PCRE2_CONFIGURE_JIT=--disable-jit
206 endif
207
208 ifneq (,$(filter ${USE_INOTIFY},auto yes y Y 1))
209         DEFINES+=-DINOTIFY_ENABLED
210         ifeq (${uname_S},FreeBSD)
211                 OSSEC_LDFLAGS+=-linotify -L/usr/local/lib -I/usr/local/include
212                 OSSEC_CFLAGS+=-I/usr/local/include
213         endif
214 endif
215
216 ifneq (,$(filter ${USE_PRELUDE},auto yes y Y 1))
217         DEFINES+=-DPRELUDE_OUTPUT_ENABLED
218         OSSEC_LDFLAGS+=-lprelude
219         OSSEC_LDFLAGS+=$(shell sh -c '${PRELUDE_CONFIG} --pthread-cflags')
220         OSSEC_LDFLAGS+=$(shell sh -c '${PRELUDE_CONFIG} --libs')
221 endif # USE_PRELUDE
222
223 ifneq (,$(filter ${USE_ZEROMQ},auto yes y Y 1))
224         DEFINES+=-DZEROMQ_OUTPUT_ENABLED
225         #LDFLAGS+=-L/usr/local/lib -I/usr/local/include -lzmq -lczmq
226         OSSEC_LDFLAGS+=-lzmq -lczmq -lm
227 endif # USE_ZEROMQ
228
229 ifneq (,$(filter ${USE_GEOIP},auto yes y Y 1))
230         DEFINES+=-DLIBGEOIP_ENABLED
231         OSSEC_LDFLAGS+=-lGeoIP
232 endif # USE_GEOIP
233
234 ifneq (,$(filter ${USE_SQLITE},auto yes y Y 1))
235         DEFINES+=-DSQLITE_ENABLED
236         ANALYSISD_FLAGS="-lsqlite3"
237 endif # USE_SQLITE
238
239 MI :=
240 PI :=
241 ifdef DATABASE
242
243         ifeq (${DATABASE},mysql)
244                 DEFINES+=-DMYSQL_DATABASE_ENABLED
245
246                 ifdef MYSQL_CFLAGS
247                         MI = ${MYSQL_CFLAGS}
248                 else
249                         MI := $(shell sh -c '${MY_CONFIG} --include 2>/dev/null || echo ')
250
251                         ifeq (${MI},) # BEGIN MI manual detection
252                                 ifneq (,$(wildcard /usr/include/mysql/mysql.h))
253                                         MI="-I/usr/include/mysql/"
254                                 else
255                                         ifneq (,$(wildcard /usr/local/include/mysql/mysql.h))
256                                                 MI="-I/usr/local/include/mysql/"
257                                         endif  #
258                                 endif  #MI
259
260                         endif
261                 endif # MYSQL_CFLAGS
262
263                 ifdef MYSQL_LIBS
264                         ML = ${MYSQL_LIBS}
265                 else
266                         ML := $(shell sh -c '${MY_CONFIG} --libs 2>/dev/null || echo ')
267
268                         ifeq (${ML},)
269                                 ifneq (,$(wildcard /usr/lib/mysql/*))
270                                         ML="-L/usr/lib/mysql -lmysqlclient"
271                                 else
272                                         ifneq (,$(wildcard /usr/lib64/mysql/*))
273                                                 ML="-L/usr/lib64/mysql -lmysqlclient"
274                                         else
275                                                 ifneq (,$(wildcard /usr/local/lib/mysql/*))
276                                                         ML="-L/usr/local/lib/mysql -lmysqlclient"
277                                                 else
278                                                         ifneq (,$(wildcard /usr/local/lib64/mysql/*))
279                                                                 ML="-L/usr/local/lib64/mysql -lmysqlclient"
280                                                         endif # local/lib64
281                                                 endif # local/lib
282                                         endif # lib54
283                                 endif # lib
284                         endif
285                 endif # MYSQL_LIBS
286
287                 OSSEC_LDFLAGS+=${ML}
288
289         else # DATABASE
290
291                 ifeq (${DATABASE}, pgsql)
292                         DEFINES+=-DPGSQL_DATABASE_ENABLED
293
294                         ifneq (${PGSQL_LIBS},)
295                                 PL:=${PGSQL_LIBS}
296                         else
297                                 PL:=$(shell sh -c '(${PG_CONFIG} --libdir --pkglibdir 2>/dev/null | sed "s/^/-L/g" | xargs ) || echo ')
298                         endif
299
300                         ifneq (${PGSQL_CFLAGS},)
301                                 PI:=${PGSQL_CFLAGS}
302                         else
303                                 PI:=$(shell sh -c '(${PG_CONFIG} --includedir --pkgincludedir 2>/dev/null | sed "s/^/-I/g" | xargs ) || echo ')
304                         endif
305
306                         # XXX need some basic autodetech stuff here.
307
308                         OSSEC_LDFLAGS+=${PL}
309                         OSSEC_LDFLAGS+=-lpq
310
311                 endif # pgsql
312         endif # mysql
313 endif # DATABASE
314
315
316 # openssl ###########
317 ifeq (${USE_OPENSSL},auto)
318         ifneq (,$(wildcard /usr/include/openssl/ssl.h))
319                 DEFINES+=-DLIBOPENSSL_ENABLED
320                 OSSEC_LDFLAGS+=-lssl -lcrypto
321         else
322                 ifneq (,$(wildcard /usr/local/include/openssl/ssl.h))
323                         DEFINES+=-DLIBOPENSSL_ENABLED
324                         OSSEC_LDFLAGS+=-lssl -lcrypto
325                 endif
326         endif
327 endif # USE_OPENSSL
328
329 ifneq (,$(filter ${USE_OPENSSL},yes y Y 1))
330         DEFINES+=-DLIBOPENSSL_ENABLED
331         ifeq (${OPENSSL_LIBS},)
332                 OSSEC_LDFLAGS+=-lssl -lcrypto
333         else
334                 OSSEC_LDFLAGS+=${OPENSSL_LIBS}
335         endif
336
337         ifneq (${OPENSSL_CFLAGS},)
338                 OSSEC_CFLAGS+=${OPENSSL_CFLAGS}
339         endif
340 endif
341
342 ####################
343 #### Target ########
344 ####################
345
346 OSSEC_CONTROL_SRC=./init/ossec-server.sh
347 OSSEC_CONF_SRC=../etc/ossec-server.conf
348
349 ifndef TARGET
350         TARGET=failtarget
351 endif # TARGET
352
353 ifeq (${TARGET},agent)
354         DEFINES+=-DCLIENT
355         OSSEC_CONTROL_SRC=./init/ossec-client.sh
356         OSSEC_CONF_SRC=../etc/ossec-agent.conf
357 endif
358
359 ifeq (${TARGET},local)
360         DEFINES+=-DLOCAL
361         OSSEC_CONTROL_SRC=./init/ossec-local.sh
362         OSSEC_CONF_SRC=../etc/ossec-local.conf
363 endif
364
365
366 .PHONY: build
367 build: ${TARGET}
368 ifneq (${TARGET},failtarget)
369         ${MAKE} settings
370         @echo
371         ${QUIET_NOTICE}
372         @echo "Done building ${TARGET}"
373         ${QUIET_ENDCOLOR}
374 endif
375         @echo
376
377
378 .PHONY: install install-agent install-server install-local install-hybrid
379 install: install-${TARGET}
380
381 install-agent: install-common
382         $(call INSTALL_CMD,0550,root,0) ossec-agentd ${PREFIX}/bin
383         $(call INSTALL_CMD,0550,root,0) agent-auth ${PREFIX}/bin
384
385         $(call INSTALL_CMD,0750,${OSSEC_USER},${OSSEC_GROUP}) -d ${PREFIX}/queue/rids
386
387 install-local: install-server-generic
388
389 install-hybrid: install-server-generic
390
391 install-server: install-server-generic
392
393 install-common: build
394         ./init/adduser.sh ${OSSEC_USER} ${OSSEC_USER_MAIL} ${OSSEC_USER_REM} ${OSSEC_GROUP} ${PREFIX}
395         $(call INSTALL_CMD,0550,root,${OSSEC_GROUP}) -d ${PREFIX}/
396         $(call INSTALL_CMD,0750,${OSSEC_USER},${OSSEC_GROUP}) -d ${PREFIX}/logs
397         $(call INSTALL_CMD,0660,${OSSEC_USER},${OSSEC_GROUP}) /dev/null ${PREFIX}/logs/ossec.log
398
399         $(call INSTALL_CMD,0550,root,0) -d ${PREFIX}/bin
400         $(call INSTALL_CMD,0550,root,0) ossec-logcollector ${PREFIX}/bin
401         $(call INSTALL_CMD,0550,root,0) ossec-syscheckd ${PREFIX}/bin
402         $(call INSTALL_CMD,0550,root,0) ossec-execd ${PREFIX}/bin
403         $(call INSTALL_CMD,0550,root,0) manage_agents ${PREFIX}/bin
404         $(call INSTALL_CMD,0550,root,0) ../contrib/util.sh ${PREFIX}/bin/
405         $(call INSTALL_CMD,0550,root,0) ${OSSEC_CONTROL_SRC} ${PREFIX}/bin/ossec-control
406
407 ifeq (${LUA_ENABLE},yes)
408         $(call INSTALL_CMD,0550,root,0) -d ${PREFIX}/lua
409         $(call INSTALL_CMD,0550,root,0) -d ${PREFIX}/lua/native
410         $(call INSTALL_CMD,0550,root,0) -d ${PREFIX}/lua/compiled
411         $(call INSTALL_CMD,0550,root,0) ${EXTERNAL_LUA}src/ossec-lua ${PREFIX}/bin/
412         $(call INSTALL_CMD,0550,root,0) ${EXTERNAL_LUA}src/ossec-luac ${PREFIX}/bin/
413 endif
414
415         $(call INSTALL_CMD,0550,root,${OSSEC_GROUP}) -d ${PREFIX}/queue
416         $(call INSTALL_CMD,0770,${OSSEC_USER},${OSSEC_GROUP}) -d ${PREFIX}/queue/alerts
417         $(call INSTALL_CMD,0750,${OSSEC_USER},${OSSEC_GROUP}) -d ${PREFIX}/queue/ossec
418         $(call INSTALL_CMD,0750,${OSSEC_USER},${OSSEC_GROUP}) -d ${PREFIX}/queue/syscheck
419         $(call INSTALL_CMD,0750,${OSSEC_USER},${OSSEC_GROUP}) -d ${PREFIX}/queue/diff
420
421         $(call INSTALL_CMD,0550,root,${OSSEC_GROUP}) -d ${PREFIX}/etc
422 ifeq (${INSTALL_LOCALTIME},yes)
423         $(call INSTALL_CMD,0440,root,${OSSEC_GROUP}) /etc/localtime ${PREFIX}/etc
424 endif
425 ifeq (${INSTALL_RESOLVCONF},yes)
426         $(call INSTALL_CMD,0440,root,${OSSEC_GROUP}) /etc/resolv.conf ${PREFIX}/etc
427 endif
428
429         $(call INSTALL_CMD,1550,root,${OSSEC_GROUP}) -d ${PREFIX}/tmp
430
431 ifneq (,$(wildcard /etc/TIMEZONE))
432         $(call INSTALL_CMD,440,root,${OSSEC_GROUP}) /etc/TIMEZONE ${PREFIX}/etc/
433 endif
434 # Solaris Needs some extra files
435 ifeq (${uname_S},SunOS)
436         $(call INSTALL_CMD,0550,root,${OSSEC_GROUP}) -d ${PREFIX}/usr/share/lib/zoneinfo/
437         cp -r /usr/share/lib/zoneinfo/* ${PREFIX}/usr/share/lib/zoneinfo/
438 endif
439         $(call INSTALL_CMD,0640,root,${OSSEC_GROUP}) -b ../etc/internal_options.conf ${PREFIX}/etc/
440 ifeq (,$(wildcard ${PREFIX}/etc/local_internal_options.conf))
441         $(call INSTALL_CMD,0640,root,${OSSEC_GROUP}) ../etc/local_internal_options.conf ${PREFIX}/etc/local_internal_options.conf
442 endif
443 ifeq (,$(wildcard ${PREFIX}/etc/client.keys))
444         $(call INSTALL_CMD,0640,root,${OSSEC_GROUP}) /dev/null ${PREFIX}/etc/client.keys
445 endif
446 ifeq (,$(wildcard ${PREFIX}/etc/ossec.conf))
447 ifneq (,$(wildcard ../etc/ossec.mc))
448         $(call INSTALL_CMD,0640,root,${OSSEC_GROUP}) ../etc/ossec.mc ${PREFIX}/etc/ossec.conf
449 else
450         $(call INSTALL_CMD,0640,root,${OSSEC_GROUP}) ${OSSEC_CONF_SRC} ${PREFIX}/etc/ossec.conf
451 endif
452 endif
453
454         $(call INSTALL_CMD,0770,root,${OSSEC_GROUP}) -d ${PREFIX}/etc/shared
455         $(call INSTALL_CMD,0640,${OSSEC_USER},${OSSEC_GROUP}) rootcheck/db/*.txt ${PREFIX}/etc/shared/
456
457         $(call INSTALL_CMD,0550,root,${OSSEC_GROUP}) -d ${PREFIX}/active-response
458         $(call INSTALL_CMD,0550,root,${OSSEC_GROUP}) -d ${PREFIX}/active-response/bin
459         $(call INSTALL_CMD,0550,root,${OSSEC_GROUP}) -d ${PREFIX}/agentless
460         $(call INSTALL_CMD,0550,root,${OSSEC_GROUP}) agentlessd/scripts/* ${PREFIX}/agentless/
461
462         $(call INSTALL_CMD,0700,root,${OSSEC_GROUP}) -d ${PREFIX}/.ssh
463
464         $(call INSTALL_CMD,0550,root,${OSSEC_GROUP}) ../active-response/*.sh ${PREFIX}/active-response/bin/
465         $(call INSTALL_CMD,0550,root,${OSSEC_GROUP}) ../active-response/firewalls/*.sh ${PREFIX}/active-response/bin/
466
467         $(call INSTALL_CMD,0550,root,${OSSEC_GROUP}) -d ${PREFIX}/var
468         $(call INSTALL_CMD,0770,root,${OSSEC_GROUP}) -d ${PREFIX}/var/run
469
470         ./init/fw-check.sh execute
471
472
473
474 install-server-generic: install-common
475         $(call INSTALL_CMD,0660,${OSSEC_USER},${OSSEC_GROUP}) /dev/null ${PREFIX}/logs/active-responses.log
476         $(call INSTALL_CMD,0750,${OSSEC_USER},${OSSEC_GROUP}) -d ${PREFIX}/logs/archives
477         $(call INSTALL_CMD,0750,${OSSEC_USER},${OSSEC_GROUP}) -d ${PREFIX}/logs/alerts
478         $(call INSTALL_CMD,0750,${OSSEC_USER},${OSSEC_GROUP}) -d ${PREFIX}/logs/firewall
479
480         $(call INSTALL_CMD,0550,root,0) ossec-agentlessd ${PREFIX}/bin
481         $(call INSTALL_CMD,0550,root,0) ossec-analysisd ${PREFIX}/bin
482         $(call INSTALL_CMD,0550,root,0) ossec-monitord ${PREFIX}/bin
483         $(call INSTALL_CMD,0550,root,0) ossec-reportd ${PREFIX}/bin
484         $(call INSTALL_CMD,0550,root,0) ossec-maild ${PREFIX}/bin
485         $(call INSTALL_CMD,0550,root,0) ossec-remoted ${PREFIX}/bin
486         $(call INSTALL_CMD,0550,root,0) ossec-logtest ${PREFIX}/bin
487         $(call INSTALL_CMD,0550,root,0) ossec-csyslogd ${PREFIX}/bin
488         $(call INSTALL_CMD,0550,root,0) ossec-authd ${PREFIX}/bin
489         $(call INSTALL_CMD,0550,root,0) ossec-dbd ${PREFIX}/bin
490         $(call INSTALL_CMD,0550,root,0) ossec-makelists ${PREFIX}/bin
491         $(call INSTALL_CMD,0550,root,0) verify-agent-conf ${PREFIX}/bin/
492         $(call INSTALL_CMD,0550,root,0) clear_stats ${PREFIX}/bin/
493         $(call INSTALL_CMD,0550,root,0) list_agents ${PREFIX}/bin/
494         $(call INSTALL_CMD,0550,root,0) ossec-regex ${PREFIX}/bin/
495         $(call INSTALL_CMD,0550,root,0) syscheck_update ${PREFIX}/bin/
496         $(call INSTALL_CMD,0550,root,0) agent_control ${PREFIX}/bin/
497         $(call INSTALL_CMD,0550,root,0) syscheck_control ${PREFIX}/bin/
498         $(call INSTALL_CMD,0550,root,0) rootcheck_control ${PREFIX}/bin/
499
500         $(call INSTALL_CMD,0750,${OSSEC_USER},${OSSEC_GROUP}) -d ${PREFIX}/stats
501         $(call INSTALL_CMD,0550,root,${OSSEC_GROUP}) -d ${PREFIX}/rules
502 ifneq (,$(wildcard ${PREFIX}/rules/local_rules.xml))
503         cp ${PREFIX}/rules/local_rules.xml ${PREFIX}/rules/local_rules.xml.installbackup
504         $(call INSTALL_CMD,0640,root,${OSSEC_GROUP}) -b ../etc/rules/*.xml ${PREFIX}/rules
505         $(call INSTALL_CMD,0640,root,${OSSEC_GROUP}) ${PREFIX}/rules/local_rules.xml.installbackup ${PREFIX}/rules/local_rules.xml
506         rm ${PREFIX}/rules/local_rules.xml.installbackup
507 else
508         $(call INSTALL_CMD,0640,root,${OSSEC_GROUP}) -b ../etc/rules/*.xml ${PREFIX}/rules
509 endif
510
511         $(call INSTALL_CMD,0750,${OSSEC_USER},${OSSEC_GROUP}) -d ${PREFIX}/queue/fts
512
513         $(call INSTALL_CMD,0750,${OSSEC_USER},${OSSEC_GROUP}) -d ${PREFIX}/queue/rootcheck
514
515         $(call INSTALL_CMD,0750,${OSSEC_USER_REM},${OSSEC_GROUP}) -d ${PREFIX}/queue/agent-info
516         $(call INSTALL_CMD,0750,${OSSEC_USER},${OSSEC_GROUP}) -d ${PREFIX}/queue/agentless
517
518         $(call INSTALL_CMD,0750,${OSSEC_USER_REM},${OSSEC_GROUP}) -d ${PREFIX}/queue/rids
519
520         $(call INSTALL_CMD,0640,root,${OSSEC_GROUP}) ../etc/decoder.xml ${PREFIX}/etc/
521
522         rm -f ${PREFIX}/etc/shared/merged.mg
523
524
525 .PHONY: failtarget
526 failtarget:
527         @echo "TARGET is required: "
528         @echo "   make TARGET=server   to build the server"
529         @echo "   make TARGET=local      - local version of server"
530         @echo "   make TARGET=hybrid     - hybrid version of server"
531         @echo "   make TARGET=agent    to build the unix agent"
532         @echo "   make TARGET=winagent to build the windows agent"
533
534 .PHONY: help
535 help: failtarget
536         @echo
537         @echo "General options: "
538         @echo "   make V=1              Display full compiler messages"
539         @echo "   make DEBUG=1          Build with symbols and without optimization"
540         @echo "   make PREFIX=/path     Install OSSEC to '/path'. Defaults to /var/ossec"
541         @echo "   make MAXAGENTS=NUMBER Set the number of maximum agents to NUMBER. Defaults to 2048"
542         @echo "   make REUSE_ID=yes     Enables agent ID re-use"
543         @echo
544         @echo "Database options: "
545         @echo "   make DATABASE=mysql   Build with MYSQL Support"
546         @echo "                         Use MYSQL_CFLAGS and MYSQL_LIBS to override defaults"
547         @echo "   make DATABASE=pgsql   Build with PostgreSQL Support "
548         @echo "                         Use PGSQL_CFLAGS and PGSQL_LIBS to override defaults"
549         @echo
550         @echo "Geoip support: "
551         @echo "   make USE_GEOIP=1      Build with GeoIP support"
552         @echo
553         @echo "External source options: "
554         @echo "   make LUA_ENABLE=no    Disable LUA build"
555         @echo "   make ZLIB_SYSTEM=yes  Use zlib sources from system"
556         @echo "   make PCRE2_SYSTEM=yes Use pcre2 sources from system"
557         @echo
558         @echo "Examples: Client with debugging enabled"
559         @echo "   make TARGET=agent DEBUG=1"
560
561 .PHONY: settings
562 settings:
563         @echo
564         @echo "General settings:"
565         @echo "    TARGET:           ${TARGET}"
566         @echo "    V:                ${V}"
567         @echo "    DEBUG:            ${DEBUG}"
568         @echo "    DEBUGAD:          ${DEBUGAD}"
569         @echo "    PREFIX:           ${PREFIX}"
570         @echo "    MAXAGENTS:        ${MAXAGENTS}"
571         @echo "    REUSE_ID:         ${REUSE_ID}"
572         @echo "    DATABASE:         ${DATABASE}"
573         @echo "    ONEWAY:           ${ONEWAY}"
574         @echo "    CLEANFULL:        ${CLEANFULL}"
575         @echo "User settings:"
576         @echo "    OSSEC_GROUP:      ${OSSEC_GROUP}"
577         @echo "    OSSEC_USER:       ${OSSEC_USER}"
578         @echo "    OSSEC_USER_MAIL:  ${OSSEC_USER_MAIL}"
579         @echo "    OSSEC_USER_REM:   ${OSSEC_USER_REM}"
580         @echo "ZLIB settings:"
581         @echo "    ZLIB_SYSTEM:      ${ZLIB_SYSTEM}"
582         @echo "    ZLIB_INCLUDE:     ${ZLIB_INCLUDE}"
583         @echo "    ZLIB_LIB:         ${ZLIB_LIB}"
584         @echo "PCRE2 settings:"
585         @echo "    PCRE2_SYSTEM:     ${PCRE2_SYSTEM}"
586         @echo "    PCRE2_INCLUDE:    ${PCRE2_INCLUDE}"
587         @echo "Lua settings:"
588         @echo "    LUA_PLAT:         ${LUA_PLAT}"
589         @echo "    LUA_ENABLE:       ${LUA_ENABLE}"
590         @echo "USE settings:"
591         @echo "    USE_ZEROMQ:       ${USE_ZEROMQ}"
592         @echo "    USE_GEOIP:        ${USE_GEOIP}"
593         @echo "    USE_PRELUDE:      ${USE_PRELUDE}"
594         @echo "    USE_OPENSSL:      ${USE_OPENSSL}"
595         @echo "    USE_INOTIFY:      ${USE_INOTIFY}"
596         @echo "    USE_SQLITE:       ${USE_SQLITE}"
597         @echo "    USE_PCRE2_JIT:    ${USE_PCRE2_JIT}"
598         @echo "Mysql settings:"
599         @echo "    includes:         ${MI}"
600         @echo "    libs:             ${ML}"
601         @echo "Pgsql settings:"
602         @echo "    includes:         ${PI}"
603         @echo "    libs:             ${PL}"
604         @echo "Defines:"
605         @echo "    ${DEFINES}"
606         @echo "Compiler:"
607         @echo "    CFLAGS          ${OSSEC_CFLAGS}"
608         @echo "    LDFLAGS         ${OSSEC_LDFLAGS}"
609         @echo "    CC              ${CC}"
610         @echo "    MAKE            ${MAKE}"
611
612
613 BUILD_SERVER+=external
614 BUILD_SERVER+=ossec-maild
615 BUILD_SERVER+=ossec-csyslogd
616 BUILD_SERVER+=ossec-agentlessd
617 BUILD_SERVER+=ossec-execd
618 BUILD_SERVER+=ossec-logcollector
619 BUILD_SERVER+=ossec-remoted
620 BUILD_SERVER+=ossec-agentd
621 BUILD_SERVER+=manage_agents
622 BUILD_SERVER+=utils
623 BUILD_SERVER+=ossec-syscheckd
624 BUILD_SERVER+=ossec-monitord
625 BUILD_SERVER+=ossec-reportd
626 ifneq (,$(filter ${USE_OPENSSL},auto yes))
627 BUILD_SERVER+=ossec-authd
628 endif
629 BUILD_SERVER+=ossec-analysisd
630 BUILD_SERVER+=ossec-logtest
631 BUILD_SERVER+=ossec-makelists
632 BUILD_SERVER+=ossec-dbd
633
634 BUILD_AGENT+=external
635 BUILD_AGENT+=ossec-agentd
636 ifneq (,$(filter ${USE_OPENSSL},auto yes))
637 BUILD_AGENT+=agent-auth
638 endif
639 BUILD_AGENT+=ossec-logcollector
640 BUILD_AGENT+=ossec-syscheckd
641 BUILD_AGENT+=ossec-execd
642 BUILD_AGENT+=manage_agents
643
644 .PHONY: server local hybrid agent
645 ifeq (${MAKECMDGOALS},server)
646 $(error Do not use 'server' directly, use 'TARGET=server')
647 endif
648 server: ${BUILD_SERVER}
649
650 ifeq (${MAKECMDGOALS},local)
651 $(error Do not use 'local' directly, use 'TARGET=local')
652 endif
653 local: ${BUILD_SERVER}
654
655 ifeq (${MAKECMDGOALS},hybrid)
656 $(error Do not use 'hybrid' directly, use 'TARGET=hybrid')
657 endif
658 hybrid: ${BUILD_SERVER}
659
660 ifeq (${MAKECMDGOALS},agent)
661 $(error Do not use 'agent' directly, use 'TARGET=agent')
662 endif
663 agent: ${BUILD_AGENT}
664
665
666 WINDOWS_BINS:=win32/ossec-agent.exe win32/ossec-agent-eventchannel.exe win32/ossec-rootcheck.exe win32/manage_agents.exe win32/setup-windows.exe win32/setup-syscheck.exe win32/setup-iis.exe win32/add-localfile.exe win32/os_win32ui.exe win32/agent-auth.exe
667
668 ifeq (${MAKECMDGOALS},winagent)
669 $(error Do not use 'winagent' directly, use 'TARGET=winagent')
670 endif
671 .PHONY: winagent
672 winagent:
673         ${MAKE} ${WINDOWS_BINS} CFLAGS="-DCLIENT -DWIN32 -I./${EXTERNAL_ZLIB} -I./${EXTERNAL_PCRE2}/install/include" LDFLAGS="-lwsock32 -lwevtapi -lshlwapi -lcomctl32 -lws2_32"
674         #cd ${EXTERNAL_LUA}src/ && ${MAKE} CC=${MING_BASE}${CC} -f Makefile.mingw mingw
675         #cp ${EXTERNAL_LUA}src/ossec-lua.exe win32/
676         #cp ${EXTERNAL_LUA}src/ossec-luac.exe win32/
677         cd win32/ && ./unix2dos.pl ossec.conf > default-ossec.conf
678         cd win32/ && ./unix2dos.pl help.txt > help_win.txt
679         cd win32/ && ./unix2dos.pl ../../etc/internal_options.conf > internal_options.conf
680         cd win32/ && ./unix2dos.pl ../../etc/local_internal_options-win.conf > default-local_internal_options.conf
681         cd win32/ && ./unix2dos.pl ../../LICENSE > LICENSE.txt
682         cd win32/ && ./unix2dos.pl ../../active-response/win/route-null.cmd > route-null.cmd
683         cd win32/ && ./unix2dos.pl ../../active-response/win/restart-ossec.cmd > restart-ossec.cmd
684         cd win32/ && makensis ossec-installer.nsi
685
686
687 ####################
688 #### External ######
689 ####################
690
691 .PHONY: external lua
692 ifeq (${PCRE2_SYSTEM},no)
693 external: libcJSON.a ${EXTERNAL_ZLIB}libz.a lua libpcre2-8.a
694 else
695 external: libcJSON.a ${EXTERNAL_ZLIB}libz.a lua
696 endif
697
698 lua:
699 ifeq (${LUA_ENABLE},yes)
700         cd ${EXTERNAL_LUA} && ${MAKE} ${LUA_PLAT}
701 endif
702
703 ${EXTERNAL_ZLIB}libz.a:
704 ifeq (${TARGET},winagent)
705         cd ${EXTERNAL_ZLIB} && cp zconf.h.in zconf.h && ${MAKE} -f win32/Makefile.gcc PREFIX=${MING_BASE} libz.a
706 else
707 ifeq (${ZLIB_SYSTEM},no)
708         cd ${EXTERNAL_ZLIB} && ./configure && ${MAKE} libz.a
709 endif
710 endif
711
712 #### zlib ##########
713
714 ifeq (${ZLIB_SYSTEM},no)
715 ZLIB_LIB=os_zlib.a ${EXTERNAL_ZLIB}libz.a
716 ZLIB_INCLUDE=-I./${EXTERNAL_ZLIB}
717 else
718 ZLIB_LIB=os_zlib.a
719 ZLIB_INCLUDE=
720 OSSEC_LDFLAGS+=-lz
721 endif
722
723 os_zlib_c := os_zlib/os_zlib.c
724 os_zlib_o := $(os_zlib_c:.c=.o)
725
726 os_zlib/%.o: os_zlib/%.c
727         ${OSSEC_CC} ${OSSEC_CFLAGS} -c $< -o $@
728
729 os_zlib.a: ${os_zlib_o}
730         ${OSSEC_LINK} $@ $^
731         ${OSSEC_RANLIB} $@
732
733
734
735 #### cJSON #########
736
737 JSON_LIB=libcJSON.a
738 JSON_INCLUDE=-I./${EXTERNAL_JSON}
739
740 cjson_c := ${EXTERNAL_JSON}cJSON.c
741 cjson_o := $(cjson_c:.c=.o)
742
743 ${EXTERNAL_JSON}%.o: ${EXTERNAL_JSON}%.c
744         ${OSSEC_CC} ${OSSEC_CFLAGS} -c $^ -o $@
745
746 libcJSON.a: ${cjson_o}
747         ${OSSEC_LINK} $@ $^
748         ${OSSEC_RANLIB} $@
749
750
751
752 #### pcre2 ##########
753
754 ifeq (${PCRE2_SYSTEM},no)
755 libpcre2-8.a: ${EXTERNAL_PCRE2}/install/lib/libpcre2-8.a
756         cp $< $@
757         ${OSSEC_RANLIB} $@
758
759 ${EXTERNAL_PCRE2}/install/lib/libpcre2-8.a:
760 ifeq (${TARGET}, winagent)
761         cd ${EXTERNAL_PCRE2} && \
762         CC= ./configure \
763                 --prefix=$(shell pwd)/${EXTERNAL_PCRE2}/install \
764                 ${PCRE2_CONFIGURE_JIT} \
765                 --disable-shared \
766                 --enable-static \
767                 --host=${MING_BASE:%-=%} && \
768         make install-libLTLIBRARIES install-nodist_includeHEADERS
769 else
770         cd ${EXTERNAL_PCRE2} && \
771         ./configure \
772                 --prefix=$(shell pwd)/${EXTERNAL_PCRE2}/install \
773                 ${PCRE2_CONFIGURE_JIT} \
774                 --disable-shared \
775                 --enable-static && \
776         make install-libLTLIBRARIES install-nodist_includeHEADERS
777 endif
778 endif
779
780
781 ####################
782 #### OSSEC Libs ####
783 ####################
784
785 ossec_libs = os_crypto.a config.a shared.a os_net.a os_regex.a os_xml.a
786
787 #### os_xml ########
788
789 os_xml_c := $(wildcard os_xml/*.c)
790 os_xml_o := $(os_xml_c:.c=.o)
791
792 os_xml/%.o: os_xml/%.c
793         ${OSSEC_CC} ${OSSEC_CFLAGS} -c $^ -o $@
794
795 os_xml.a: ${os_xml_o}
796         ${OSSEC_LINK} $@ $^
797         ${OSSEC_RANLIB} $@
798
799
800 #### os_regex ######
801
802 os_regex_c := $(wildcard os_regex/*.c)
803 os_regex_o := $(os_regex_c:.c=.o)
804
805 os_regex/%.o: os_regex/%.c
806         ${OSSEC_CC} ${OSSEC_CFLAGS} -c $^ -o $@
807
808 ifeq (${PCRE2_SYSTEM},no)
809 os_regex.a: ${os_regex_o} libpcre2-8.a
810         (mkdir -p libpcre2_objs && cd libpcre2_objs && ${QUIET_LINK}${MING_BASE}ar -x ../libpcre2-8.a)
811         ${OSSEC_LINK} $@ ${os_regex_o} $(addprefix libpcre2_objs/,$(shell ${MING_BASE}ar -t libpcre2-8.a))
812         ${OSSEC_RANLIB} $@
813         rm -rf libpcre2_objs
814 else
815 os_regex.a: ${os_regex_o}
816         ${OSSEC_LINK} $@ $^
817         ${OSSEC_RANLIB} $@
818 endif
819
820 #### os_net ##########
821
822 os_net_c := $(wildcard os_net/*.c)
823 os_net_o := $(os_net_c:.c=.o)
824
825 os_net/%.o: os_net/%.c
826         ${OSSEC_CC} ${OSSEC_CFLAGS} -c $^ -o $@
827
828 os_net.a: ${os_net_o}
829         ${OSSEC_LINK} $@ $^
830         ${OSSEC_RANLIB} $@
831
832 #### Shared ##########
833
834 shared_c := $(wildcard shared/*.c)
835 shared_o := $(shared_c:.c=.o)
836
837 shared/%.o: shared/%.c
838         ${OSSEC_CC} ${OSSEC_CFLAGS} -c $^ -o $@
839
840 shared.a: ${shared_o}
841         ${OSSEC_LINK} $@ $^
842         ${OSSEC_RANLIB} $@
843
844 #### Config ##########
845
846 config_c := $(wildcard config/*.c)
847 config_o := $(config_c:.c=.o)
848
849 config/%.o: config/%.c
850         ${OSSEC_CC} ${OSSEC_CFLAGS} -c $^ -o $@
851
852 config.a: ${config_o}
853         ${OSSEC_LINK} $@ $^
854         ${OSSEC_RANLIB} $@
855
856 #### crypto ##########
857
858 crypto_blowfish_c := os_crypto/blowfish/bf_op.c \
859                                                                                 os_crypto/blowfish/bf_skey.c \
860                                                                                 os_crypto/blowfish/bf_enc.c
861 crypto_blowfish_o := $(crypto_blowfish_c:.c=.o)
862
863 os_crypto/blowfish/%.o: os_crypto/blowfish/%.c
864         ${OSSEC_CC} ${OSSEC_CFLAGS} -Wno-implicit-fallthrough -c $^ -o $@
865
866 crypto_md5_c := os_crypto/md5/md5.c \
867                                                          os_crypto/md5/md5_op.c
868 crypto_md5_o := $(crypto_md5_c:.c=.o)
869
870 os_crypto/md5/%.o: os_crypto/md5/%.c
871         ${OSSEC_CC} ${OSSEC_CFLAGS} -c $^ -o $@
872
873 crypto_sha1_c := os_crypto/sha1/sha1_op.c
874 crypto_sha1_o := $(crypto_sha1_c:.c=.o)
875
876 os_crypto/sha1/%.o: os_crypto/sha1/%.c
877         ${OSSEC_CC} ${OSSEC_CFLAGS} -Wno-implicit-fallthrough -c $^ -o $@
878
879 crypto_md5_sha1_c := os_crypto/md5_sha1/md5_sha1_op.c
880 crypto_md5_sha1_o := $(crypto_md5_sha1_c:.c=.o)
881
882 os_crypto/md5_sha1/%.o: os_crypto/md5_sha1/%.c
883         ${OSSEC_CC} ${OSSEC_CFLAGS} -c $^ -o $@
884
885 crypto_shared_c := $(wildcard os_crypto/shared/*.c)
886 crypto_shared_o := $(crypto_shared_c:.c=.o)
887
888 os_crypto/shared/%.o: os_crypto/shared/%.c ${ZLIB_LIB}
889         ${OSSEC_CC} ${OSSEC_CFLAGS} -c $< -o $@
890
891
892 crypto_o := ${crypto_blowfish_o} \
893                                          ${crypto_md5_o} \
894                                          ${crypto_sha1_o} \
895                                          ${crypto_shared_o} \
896                                          ${crypto_md5_sha1_o}
897
898 os_crypto.a: ${crypto_o}
899         ${OSSEC_LINK} $@ $^
900         ${OSSEC_RANLIB} $@
901
902
903 #### os_mail #########
904
905 os_maild_c := $(wildcard os_maild/*.c)
906 os_maild_o := $(os_maild_c:.c=.o)
907
908 os_maild/%.o: os_maild/%.c
909         ${OSSEC_CC} ${OSSEC_CFLAGS} -DARGV0=\"ossec-maild\" -c $^ -o $@
910
911 ossec-maild: ${os_maild_o} ${ossec_libs}
912         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
913
914 #### os_dbd ##########
915
916 os_dbd_c := $(wildcard os_dbd/*.c)
917 os_dbd_o := $(os_dbd_c:.c=.o)
918
919 os_dbd/%.o: os_dbd/%.c
920         ${OSSEC_CC} ${OSSEC_CFLAGS} ${MI} ${PI} -DARGV0=\"ossec-dbd\" -c $^ -o $@
921
922 ossec-dbd: ${os_dbd_o} ${ossec_libs}
923         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} ${MI} ${PI} ${JSON_INCLUDE} $^ -lm ${OSSEC_LDFLAGS} -o $@
924
925
926 #### os_csyslogd #####
927
928 os_csyslogd_c := $(wildcard os_csyslogd/*.c)
929 os_csyslogd_o := $(os_csyslogd_c:.c=.o)
930
931 os_csyslogd/%.o: os_csyslogd/%.c
932         ${OSSEC_CC} ${OSSEC_CFLAGS} ${JSON_INCLUDE} -DARGV0=\"ossec-csyslogd\" -c $^ -o $@
933
934 ossec-csyslogd: ${os_csyslogd_o} ${ossec_libs} ${JSON_LIB}
935         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} ${JSON_INCLUDE} $^ -lm ${OSSEC_LDFLAGS} -o $@
936
937
938 #### agentlessd ####
939
940 os_agentlessd_c := $(wildcard agentlessd/*.c)
941 os_agentlessd_o := $(os_agentlessd_c:.c=.o)
942
943 agentlessd/%.o: agentlessd/%.c
944         ${OSSEC_CC} ${OSSEC_CFLAGS} -DARGV0=\"ossec-agentlessd\" -c $^ -o $@
945
946 ossec-agentlessd: ${os_agentlessd_o} ${ossec_libs}
947         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
948
949 #### os_execd #####
950
951 os_execd_c := $(wildcard os_execd/*.c)
952 os_execd_o := $(os_execd_c:.c=.o)
953
954 os_execd/%.o: os_execd/%.c
955         ${OSSEC_CC} ${OSSEC_CFLAGS} -DARGV0=\"ossec-execd\" -c $^ -o $@
956
957 ossec-execd: ${os_execd_o} ${ossec_libs} ${JSON_LIB}
958         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} ${JSON_INCLUDE} $^ -lm ${OSSEC_LDFLAGS} -o $@
959
960
961 #### logcollectord ####
962
963 os_logcollector_c := $(wildcard logcollector/*.c)
964 os_logcollector_o := $(os_logcollector_c:.c=.o)
965 os_logcollector_eventchannel_o := $(os_logcollector_c:.c=-event.o)
966
967 logcollector/%.o: logcollector/%.c
968         ${OSSEC_CC} ${OSSEC_CFLAGS} -DARGV0=\"ossec-logcollector\" -c $^ -o $@
969
970 logcollector/%-event.o: logcollector/%.c
971         ${OSSEC_CC} ${OSSEC_CFLAGS} -DEVENTCHANNEL_SUPPORT -DARGV0=\"ossec-logcollector\" -c $^ -o $@
972
973 ossec-logcollector: ${os_logcollector_o} ${ossec_libs}
974         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
975
976 #### remoted #########
977
978 remoted_c := $(wildcard remoted/*.c)
979 remoted_o := $(remoted_c:.c=.o)
980
981 remoted/%.o: remoted/%.c
982         ${OSSEC_CC} ${OSSEC_CFLAGS} -I./remoted ${ZLIB_INCLUDE} -DARGV0=\"ossec-remoted\" -c $^ -o $@
983
984 ossec-remoted: ${remoted_o} ${ossec_libs} ${ZLIB_LIB}
985         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} ${ZLIB_INCLUDE} $^ ${OSSEC_LDFLAGS} -o $@
986
987 #### ossec-agentd ####
988
989 client_agent_c := $(wildcard client-agent/*.c)
990 client_agent_o := $(client_agent_c:.c=.o)
991
992 client-agent/%.o: client-agent/%.c
993         ${OSSEC_CC} ${OSSEC_CFLAGS} -I./client-agent ${ZLIB_INCLUDE} -DARGV0=\"ossec-agentd\" -c $^ -o $@
994
995 ossec-agentd: ${client_agent_o} ${ossec_libs} ${ZLIB_LIB}
996         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} ${ZLIB_INCLUDE} $^ ${OSSEC_LDFLAGS} -o $@
997
998 #### addagent ######
999
1000 addagent_c := $(wildcard addagent/*.c)
1001 addagent_o := $(addagent_c:.c=.o)
1002
1003 addagent/%.o: addagent/%.c
1004         ${OSSEC_CC} ${OSSEC_CFLAGS} -I./addagent ${ZLIB_INCLUDE} -DARGV0=\"manage_agents\" -c $^ -o $@
1005
1006
1007 manage_agents: ${addagent_o} ${ossec_libs} ${ZLIB_LIB} ${JSON_LIB}
1008         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} ${ZLIB_INCLUDE} ${JSON_INCLUDE} $^ ${OSSEC_LDFLAGS} -o $@
1009
1010 #### Util ##########
1011
1012 util_programs = syscheck_update clear_stats list_agents agent_control syscheck_control rootcheck_control verify-agent-conf ossec-regex ossec-regex-convert
1013
1014 .PHONY: utils
1015 utils: ${util_programs}
1016
1017 util_c := $(wildcard util/*.c)
1018 util_o := $(util_c:.c=.o)
1019
1020 util/%.o: util/%.c
1021         ${OSSEC_CC} ${OSSEC_CFLAGS} -I./util ${ZLIB_INCLUDE} -DARGV0=\"utils\" -c $^ -o $@
1022
1023 syscheck_update: util/syscheck_update.o addagent/validate.o ${ossec_libs} ${ZLIB_LIB} ${JSON_LIB}
1024         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} ${ZLIB_INCLUDE} ${JSON_INCLUDE} $^ ${OSSEC_LDFLAGS} -o $@
1025
1026 clear_stats: util/clear_stats.o ${ossec_libs} ${ZLIB_LIB}
1027         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} ${ZLIB_INCLUDE} $^ ${OSSEC_LDFLAGS} -o $@
1028
1029 list_agents: util/list_agents.o ${ossec_libs} ${ZLIB_LIB} ${JSON_LIB}
1030         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} ${ZLIB_INCLUDE} $^ ${OSSEC_LDFLAGS} -o $@
1031
1032 verify-agent-conf: util/verify-agent-conf.o ${ossec_libs} ${ZLIB_LIB}
1033         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} ${ZLIB_INCLUDE} $^ ${OSSEC_LDFLAGS} -o $@
1034
1035 agent_control: util/agent_control.o addagent/validate.o ${ossec_libs} ${ZLIB_LIB} ${JSON_LIB}
1036         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} ${ZLIB_INCLUDE} ${JSON_INCLUDE} $^ -lm ${OSSEC_LDFLAGS} -o $@
1037
1038 syscheck_control: util/syscheck_control.o addagent/validate.o ${ossec_libs} ${ZLIB_LIB} ${JSON_LIB}
1039         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} ${ZLIB_INCLUDE} ${JSON_INCLUDE} $^ ${OSSEC_LDFLAGS} -o $@
1040
1041 rootcheck_control: util/rootcheck_control.o addagent/validate.o ${ossec_libs} ${ZLIB_LIB} ${JSON_LIB}
1042         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} ${ZLIB_INCLUDE} ${JSON_INCLUDE} $^ ${OSSEC_LDFLAGS} -o $@
1043
1044 ossec-regex: util/ossec-regex.o ${ossec_libs} ${ZLIB_LIB}
1045         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} ${ZLIB_INCLUDE} $^ ${OSSEC_LDFLAGS} -o $@
1046
1047 ossec-regex-convert: util/ossec-regex-convert.o ${ossec_libs} ${ZLIB_LIB}
1048         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
1049
1050 #### rootcheck #####
1051
1052 rootcheck_c := $(wildcard rootcheck/*.c)
1053 rootcheck_o := $(rootcheck_c:.c=.o)
1054 rootcheck_rk_o := $(rootcheck_c:.c=_rk.o)
1055 rootcheck_o_lib := $(filter-out rootcheck/rootcheck-config.o, ${rootcheck_o})
1056 rootcheck_o_cmd := $(filter-out rootcheck/config.o, ${rootcheck_o})
1057
1058
1059 rootcheck/%.o: rootcheck/%.c
1060         ${OSSEC_CC} ${OSSEC_CFLAGS} -DARGV0=\"rootcheck\" -c $^ -o $@
1061
1062 rootcheck/%_rk.o: rootcheck/%.c
1063         ${OSSEC_CC} ${OSSEC_CFLAGS} -DARGV0=\"rootcheck\" -UOSSECHIDS -c $^ -o $@
1064
1065
1066 rootcheck.a: ${rootcheck_o_lib}
1067         ${OSSEC_LINK} $@ $^
1068         ${OSSEC_RANLIB} $@
1069
1070 #ossec-rootcheck: rootcheck/rootcheck-config.o rootcheck.a ${ossec_libs}
1071 #       @echo ${rootcheck_o_cmd}
1072 #       @echo ${rootcheck_o_lib}
1073 #       @echo ${rootcheck_o}
1074 #       ${OSSEC_CC} ${OSSEC_CFLAGS} ${ZLIB_INCLUDE} rootcheck/rootcheck-config.o rootcheck.a rootcheck/rootcheck.c ${ZLIB_LIB} ${ossec_libs}  -o $@
1075
1076 #### syscheck ######
1077
1078
1079 syscheck_c := $(wildcard syscheckd/*.c)
1080 syscheck_o := $(syscheck_c:.c=.o)
1081
1082 syscheckd/%.o: syscheckd/%.c
1083         ${OSSEC_CC} ${OSSEC_CFLAGS} -DARGV0=\"ossec-syscheckd\" -c $^ -o $@
1084
1085 ossec-syscheckd: ${syscheck_o} rootcheck.a ${ossec_libs} ${ZLIB_LIB}
1086         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} ${ZLIB_INCLUDE} $^ ${OSSEC_LDFLAGS} -o $@
1087
1088 #### Monitor #######
1089
1090 monitor_c := $(wildcard monitord/*.c)
1091 monitor_o := $(monitor_c:.c=.o)
1092
1093 monitord/%.o: monitord/%.c ${ZLIB_LIB}
1094         ${OSSEC_CC} ${OSSEC_CFLAGS} -DARGV0=\"ossec-monitord\" -c $< -o $@
1095
1096 ossec-monitord: ${monitor_o} ${ossec_libs} ${ZLIB_LIB} ${JSON_LIB}
1097         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} ${ZLIB_INCLUDE} $^ ${OSSEC_LDFLAGS} -o $@
1098
1099
1100 #### reportd #######
1101
1102 report_c := reportd/report.c
1103 report_o := $(report_c:.c=.o)
1104
1105 reportd/%.o: reportd/%.c
1106         ${OSSEC_CC} ${OSSEC_CFLAGS} -DARGV0=\"ossec-reportd\" -c $^ -o $@
1107
1108 ossec-reportd: ${report_o} ${ossec_libs}
1109         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
1110
1111
1112 #### os_auth #######
1113
1114 os_auth_c := ${wildcard os_auth/*.c}
1115 os_auth_o := $(os_auth_c:.c=.o)
1116
1117 os_auth/%.o: os_auth/%.c
1118         ${OSSEC_CC} ${OSSEC_CFLAGS}  -I./os_auth -DARGV0=\"ossec-authd\" -c $^ -o $@
1119
1120 agent-auth: addagent/validate.o os_auth/main-client.o os_auth/ssl.o os_auth/check_cert.o ${ossec_libs} ${ZLIB_LIB} ${JSON_LIB}
1121         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} ${JSON_INCLUDE} -I./os_auth $^ ${OSSEC_LDFLAGS} -o $@
1122
1123 ossec-authd: addagent/validate.o os_auth/main-server.o os_auth/ssl.o os_auth/check_cert.o ${ossec_libs} ${ZLIB_LIB} ${JSON_LIB}
1124         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} ${JSON_INCLUDE} -I./os_auth $^ ${OSSEC_LDFLAGS} -o $@
1125
1126 #### analysisd #####
1127
1128 cdb_c := ${wildcard analysisd/cdb/*.c}
1129 cdb_o := $(cdb_c:.c=.o)
1130 all_analysisd_o += ${cdb_o}
1131 all_analysisd_libs += cdb.a
1132
1133 analysisd/cdb/%.o: analysisd/cdb/%.c
1134         ${OSSEC_CC} ${OSSEC_CFLAGS} -DARGV0=\"ossec-analysisd\" -I./analysisd -I./analysisd/cdb -c $^ -o $@
1135
1136 cdb.a: ${cdb_o}
1137         ${OSSEC_LINK} $@ $^
1138         ${OSSEC_RANLIB} $@
1139
1140
1141 alerts_c := ${wildcard analysisd/alerts/*.c}
1142 alerts_o := $(alerts_c:.c=.o)
1143 all_analysisd_o += ${alerts_o}
1144 all_analysisd_libs += alerts.a
1145
1146 analysisd/alerts/%.o: analysisd/alerts/%.c
1147         ${OSSEC_CC} ${OSSEC_CFLAGS} -DARGV0=\"ossec-analysisd\" -I./analysisd -I./analysisd/alerts -c $^ -o $@
1148
1149 alerts.a: ${alerts_o}
1150         ${OSSEC_LINK} $@ $^
1151
1152 decoders_c := ${wildcard analysisd/decoders/*.c} ${wildcard analysisd/decoders/plugins/*.c} ${wildcard analysisd/compiled_rules/*.c}
1153 decoders_o := $(decoders_c:.c=.o)
1154 ## XXX Nasty hack
1155 decoders_test_o := $(decoders_c:.c=-test.o)
1156 decoders_live_o := $(decoders_c:.c=-live.o)
1157
1158 all_analysisd_o += ${decoders_o} ${decoders_test_o} ${decoders_live_o}
1159 all_analysisd_libs += decoders.a decoders-test.a decoders-live.a
1160
1161
1162 analysisd/decoders/%-test.o: analysisd/decoders/%.c
1163         ${OSSEC_CC} ${OSSEC_CFLAGS} -DTESTRULE -DARGV0=\"ossec-analysisd\" -I./analysisd -I./analysisd/decoders -c $^ -o $@
1164
1165
1166 analysisd/decoders/%-live.o: analysisd/decoders/%.c
1167         ${OSSEC_CC} ${OSSEC_CFLAGS} -DARGV0=\"ossec-analysisd\" -I./analysisd -I./analysisd/decoders -c $^ -o $@
1168
1169 analysisd/decoders/plugins/%-test.o: analysisd/decoders/plugins/%.c
1170         ${OSSEC_CC} ${OSSEC_CFLAGS} -DTESTRULE -DARGV0=\"ossec-analysisd\" -I./analysisd -I./analysisd/decoders -c $^ -o $@
1171
1172
1173 analysisd/decoders/plugins/%-live.o: analysisd/decoders/plugins/%.c
1174         ${OSSEC_CC} ${OSSEC_CFLAGS} -DARGV0=\"ossec-analysisd\" -I./analysisd -I./analysisd/decoders -c $^ -o $@
1175
1176 analysisd/compiled_rules/compiled_rules.h: analysisd/compiled_rules/.function_list analysisd/compiled_rules/register_rule.sh
1177         ./analysisd/compiled_rules/register_rule.sh build
1178
1179 analysisd/compiled_rules/%-test.o: analysisd/compiled_rules/%.c
1180         ${OSSEC_CC} ${OSSEC_CFLAGS} -DTESTRULE -DARGV0=\"ossec-analysisd\" -I./analysisd -I./analysisd/decoders -c $^ -o $@
1181
1182 analysisd/compiled_rules/%-live.o: analysisd/compiled_rules/%.c
1183         ${OSSEC_CC} ${OSSEC_CFLAGS} -DARGV0=\"ossec-analysisd\" -I./analysisd -I./analysisd/decoders -c $^ -o $@
1184
1185 decoders-live.a: ${decoders_live_o}
1186         ${OSSEC_LINK} $@ $^
1187
1188 decoders-test.a: ${decoders_test_o}
1189         ${OSSEC_LINK} $@ $^
1190
1191 format_c := ${wildcard analysisd/format/*.c}
1192 format_o := ${format_c:.c=.o}
1193 all_analysisd_o += ${format_o}
1194
1195 analysisd/format/%.o: analysisd/format/%.c
1196         ${OSSEC_CC} ${OSSEC_CFLAGS} ${JSON_INCLUDE} -DARGV0=\"ossec-analysisd\" -I./analysisd -I./analysisd/decoders -c $^ -o $@
1197
1198 output_c := ${wildcard analysisd/output/*c}
1199 output_o := ${output_c:.c=.o}
1200 all_analysisd_o += ${output_o}
1201
1202 analysisd/output/%.o: analysisd/output/%.c
1203         ${OSSEC_CC} ${OSSEC_CFLAGS} -DARGV0=\"ossec-analysisd\" -I./analysisd -I./analysisd/decoders -c $^ -o $@
1204
1205
1206
1207 analysisd_c := ${filter-out analysisd/analysisd.c, ${filter-out analysisd/testrule.c, ${filter-out analysisd/makelists.c, ${wildcard analysisd/*.c}}}}
1208 analysisd_o := ${analysisd_c:.c=.o}
1209 all_analysisd_o += ${analysisd_o}
1210
1211 analysisd_test_o := $(analysisd_o:.o=-test.o)
1212 analysisd_live_o := $(analysisd_o:.o=-live.o)
1213 all_analysisd_o += ${analysisd_test_o} ${analysisd_live_o} analysisd/testrule-test.o analysisd/analysisd-live.o analysisd/analysisd-test.o analysisd/makelists-live.o
1214
1215 analysisd/%-live.o: analysisd/%.c analysisd/compiled_rules/compiled_rules.h
1216         ${OSSEC_CC} ${OSSEC_CFLAGS} -DARGV0=\"ossec-analysisd\" -I./analysisd -c $< -o $@
1217
1218 analysisd/%-test.o: analysisd/%.c analysisd/compiled_rules/compiled_rules.h
1219         ${OSSEC_CC} ${OSSEC_CFLAGS} -DTESTRULE -DARGV0=\"ossec-analysisd\" -I./analysisd -c $< -o $@
1220
1221
1222 ossec-logtest: ${analysisd_test_o} ${output_o} ${format_o} analysisd/testrule-test.o analysisd/analysisd-test.o alerts.a cdb.a decoders-test.a ${ossec_libs} ${ZLIB_LIB} ${JSON_LIB}
1223         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} -DTESTRULE $^ ${OSSEC_LDFLAGS} ${ANALYSISD_FLAGS} -o $@
1224
1225 ossec-analysisd: ${analysisd_live_o} analysisd/analysisd-live.o ${output_o} ${format_o} alerts.a cdb.a decoders-live.a ${ossec_libs} ${ZLIB_LIB} ${JSON_LIB}
1226         ${OSSEC_CCBIN} ${OSSEC_CFLAGS}  $^ ${OSSEC_LDFLAGS} ${ANALYSISD_FLAGS} -o $@
1227
1228 ossec-makelists: analysisd/makelists-live.o ${analysisd_live_o} ${format_o} alerts.a cdb.a decoders-live.a ${ossec_libs} ${ZLIB_LIB} ${JSON_LIB}
1229         ${OSSEC_CCBIN} ${OSSEC_CFLAGS}  $^ ${OSSEC_LDFLAGS} -o $@
1230
1231
1232 ####################
1233 #### test ##########
1234 ####################
1235
1236 CFLAGS_TEST = -g -O0 --coverage
1237
1238 LDFLAGS_TEST = -lcheck -lm -pthread -lrt
1239
1240 ifdef TEST
1241         OSSEC_CFLAGS+=${CFLAGS_TEST}
1242         OSSEC_LDFLAGS+=${LDFLAGS_TEST}
1243 endif #TEST
1244
1245 test_programs = test_os_zlib test_os_xml test_os_regex test_os_crypto test_shared
1246
1247 .PHONY: test run_tests build_tests test_valgrind test_coverage
1248
1249 test: build_tests
1250         ${MAKE} run_tests
1251
1252 run_tests:
1253         @$(foreach bin,${test_programs},./${bin} || exit 1;)
1254
1255 build_tests: external
1256         ${MAKE} DEBUG=1 TEST=1 ${test_programs}
1257
1258 test_c := $(wildcard tests/*.c)
1259 test_o := $(test_c:.c=.o)
1260
1261 tests/%.o: tests/%.c
1262         ${OSSEC_CC} ${OSSEC_CFLAGS} -c $^ -o $@
1263
1264 test_os_zlib: tests/test_os_zlib.o ${ZLIB_LIB}
1265         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
1266
1267 test_os_xml: tests/test_os_xml.o os_xml.a
1268         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
1269
1270 test_os_regex: tests/test_os_regex.c os_regex.a
1271         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
1272
1273 test_os_crypto: tests/test_os_crypto.c os_crypto.a shared.a os_xml.a os_net.a os_regex.a ${ZLIB_LIB}  ${JSON_LIB}
1274         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
1275
1276 #test_os_net: tests/test_os_net.c os_net.a shared.a os_regex.a os_xml.a
1277 #       ${OSSEC_CCBIN} ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
1278
1279 test_shared: tests/test_shared.c shared.a os_xml.a os_net.a os_regex.a ${JSON_LIB}
1280         ${OSSEC_CCBIN} ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
1281
1282 test_valgrind: build_tests
1283         valgrind --leak-check=full --track-origins=yes --trace-children=yes --vgdb=no --error-exitcode=1 --gen-suppressions=all --suppressions=tests/valgrind.supp ${MAKE} run_tests
1284
1285
1286 test_coverage: build_tests
1287         lcov --base-directory . --directory . --zerocounters --rc lcov_branch_coverage=1 --quiet
1288         @echo "Running tests\n"
1289
1290         ${MAKE} run_tests
1291
1292         @echo "\nTests finished."
1293
1294         lcov --base-directory . --directory . --capture --quiet --rc lcov_branch_coverage=1 --output-file ossec.test
1295
1296         rm -rf coverage-report/
1297         genhtml --branch-coverage --output-directory coverage-report/ --title "ossec test coverage" --show-details --legend --num-spaces 4 --quiet ossec.test
1298
1299 ####################
1300 #### RUule Tests ###
1301 ####################
1302
1303 test-rules:
1304         ( cd ../contrib/ossec-testing && sudo python runtests.py)
1305
1306
1307 ####################
1308 #### windows #######
1309 ####################
1310
1311 win32/icon.o: win32/icofile.rc
1312         ${OSSEC_WINDRES} -i $< -o $@
1313
1314 win32_c := $(wildcard win32/*.c)
1315 win32_o := $(win32_c:.c=.o)
1316
1317 win32/%.o: win32/%.c
1318         ${OSSEC_CC} ${OSSEC_CFLAGS} -DARGV0=\"ossec-agent\" -c $^ -o $@
1319
1320 win32/%_rk.o: win32/%.c
1321         ${OSSEC_CC} ${OSSEC_CFLAGS} -UOSSECHIDS -DARGV0=\"ossec-agent\" -c $^ -o $@
1322
1323 win32_ui_c := $(wildcard win32/ui/*.c)
1324 win32_ui_o := $(win32_ui_c:.c=.o)
1325
1326 win32/ui/%.o: win32/ui/%.c
1327         ${OSSEC_CC} ${OSSEC_CFLAGS} -UOSSECHIDS -DARGV0=\"ossec-win32ui\" -c $^ -o $@
1328
1329 win32/ossec-agent.exe: win32/icon.o win32/win_agent.o win32/win_service.o $(filter-out syscheckd/seechanges.o, ${syscheck_o}) ${rootcheck_o} $(filter-out client-agent/main.o, $(filter-out client-agent/agentd.o, $(filter-out client-agent/event-forward.o, ${client_agent_o}))) $(filter-out logcollector/main.o, ${os_logcollector_o}) ${os_execd_o} ${ossec_libs} ${ZLIB_LIB}
1330         ${OSSEC_CCBIN} -DARGV0=\"ossec-agent\" -DOSSECHIDS ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
1331
1332 win32/ossec-agent-eventchannel.exe: win32/icon.o win32/win_agent.o win32/win_service.o $(filter-out syscheckd/seechanges.o, ${syscheck_o}) ${rootcheck_o} $(filter-out client-agent/main.o, $(filter-out client-agent/agentd.o, $(filter-out client-agent/event-forward.o, ${client_agent_o}))) $(filter-out logcollector/main-event.o, ${os_logcollector_eventchannel_o}) ${os_execd_o} ${ossec_libs} ${ZLIB_LIB}
1333         ${OSSEC_CCBIN} -DARGV0=\"ossec-agent\" -DOSSECHIDS -DEVENTCHANNEL_SUPPORT ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
1334
1335 win32/ossec-rootcheck.exe: win32/icon.o win32/win_service_rk.o ${rootcheck_rk_o} ${ossec_libs}
1336         ${OSSEC_CCBIN} -DARGV0=\"ossec-rootcheck\" ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
1337
1338 win32/manage_agents.exe: win32/win_service_rk.o ${addagent_o} ${ossec_libs} ${ZLIB_LIB} ${JSON_LIB}
1339         ${OSSEC_CCBIN} -DARGV0=\"manage-agents\" -DMA ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
1340
1341 win32/setup-windows.exe: win32/win_service_rk.o win32/setup-win.o win32/setup-shared.o ${ossec_libs}
1342         ${OSSEC_CCBIN} -DARGV0=\"setup-windows\" ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
1343
1344 win32/setup-syscheck.exe: win32/setup-syscheck.o win32/setup-shared.o ${ossec_libs}
1345         ${OSSEC_CCBIN} -DARGV0=\"setup-syscheck\" ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
1346
1347 win32/setup-iis.exe: win32/setup-iis.o ${ossec_libs}
1348         ${OSSEC_CCBIN} -DARGV0=\"setup-iis\" ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
1349
1350 win32/add-localfile.exe: win32/add-localfile.o ${ossec_libs}
1351         ${OSSEC_CCBIN} -DARGV0=\"add-localfile\" ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -o $@
1352
1353 win32/resource.o: win32/ui/win32ui.rc
1354         ${OSSEC_WINDRES} -i $< -o $@
1355
1356 win32/os_win32ui.exe: win32/resource.o win32/win_service_rk.o ${win32_ui_o} addagent/b64.o ${ossec_libs}
1357         ${OSSEC_CCBIN} -DARGV0=\"ossec-win32ui\" ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -mwindows -o $@
1358
1359 win32/agent-auth.exe: win32/win_service_rk.o addagent/validate.c win32/agent_auth.c ${ossec_libs} ${ZLIB_LIB} ${JSON_LIB}
1360         ${OSSEC_CCBIN} -DARGV0=\"agent-auth\" -DOSSECHIDS ${OSSEC_CFLAGS} $^ ${OSSEC_LDFLAGS} -lshlwapi -lwsock32 -lsecur32 -flto -o $@
1361
1362
1363
1364
1365 ####################
1366 #### Clean #########
1367 ####################
1368
1369 clean: clean-test clean-internals clean-external clean-windows
1370
1371 clean-test:
1372         rm -f ${test_o} ${test_programs} ossec.test
1373         rm -Rf coverage-report/
1374         find . -name "*.gcno" -exec rm {} \;
1375         find . -name "*.gcda" -exec rm {} \;
1376
1377 clean-external:
1378         rm -f ${cjson_o} libcJSON.a libpcre2-8.a
1379         cd ${EXTERNAL_ZLIB} && ${MAKE} -f Makefile.in distclean
1380         cd ${EXTERNAL_LUA} && ${MAKE} clean
1381         #cd ${EXTERNAL_PCRE2} && ${MAKE} distclean
1382
1383
1384 clean-internals:
1385         rm -f ${os_zlib_o} os_zlib.a
1386         rm -f ${os_xml_o} os_xml.a
1387         rm -f ${os_regex_o} os_regex.a
1388         rm -f ${os_net_o} os_net.a
1389         rm -f ${shared_o} shared.a
1390         rm -f ${config_o} config.a
1391         rm -f ${os_maild_o} ossec-maild
1392         rm -f ${crypto_o} os_crypto.a
1393         rm -f ${os_csyslogd_o} ossec-csyslogd
1394         rm -f ${os_dbd_o} ossec-dbd
1395         rm -f ${os_agentlessd_o} ossec-agentlessd
1396         rm -f ${os_execd_o} ossec-execd
1397         rm -f ${os_logcollector_o} ${os_logcollector_eventchannel_o} ossec-logcollector
1398         rm -f ${remoted_o} ossec-remoted
1399         rm -f ${report_o} ossec-reportd
1400         rm -f ${client_agent_o} ossec-agentd
1401         rm -f ${addagent_o} manage_agents
1402         rm -f ${util_o} ${util_programs}
1403         rm -f ${rootcheck_o} ${rootcheck_rk_o} rootcheck.a
1404         rm -f ${syscheck_o} ossec-syscheckd
1405         rm -f ${monitor_o} ossec-monitord
1406         rm -f ${os_auth_o} ossec-authd agent-auth
1407         rm -f ${all_analysisd_o} ${all_analysisd_libs} analysisd/compiled_rules/compiled_rules.h
1408         rm -f ossec-logtest ossec-analysisd ossec-makelists
1409
1410 clean-windows:
1411         rm -f win32/LICENSE.txt
1412         rm -f win32/help_win.txt
1413         rm -f win32/internal_options.conf
1414         rm -f win32/default-local_internal_options.conf
1415         rm -f win32/default-ossec.conf
1416         rm -f win32/restart-ossec.cmd
1417         rm -f win32/route-null.cmd
1418         rm -f ${win32_o} ${win32_ui_o} win32/win_service_rk.o
1419         rm -f win32/icon.o win32/resource.o
1420         rm -f ${WINDOWS_BINS}
1421         #rm -f ${EXTERNAL_LUA}src/lua52.dll
1422         #rm -f ${EXTERNAL_LUA}src/ossec-lua.exe
1423         #rm -f ${EXTERNAL_LUA}src/ossec-luac.exe
1424         #rm -f win32/ossec-lua.exe
1425         #rm -f win32/ossec-luac.exe
1426         rm -f win32/ossec-win32-agent.exe