]> arthur.barton.de Git - netdata.git/blob - src/Makefile
added available entropy
[netdata.git] / src / Makefile
1 ifndef BIN_DIR
2 BIN_DIR = "."
3 endif
4
5 ifndef CONFIG_DIR
6 CONFIG_DIR = "conf.d"
7 endif
8
9 ifndef LOG_DIR
10 LOG_DIR = "log"
11 endif
12
13 ifndef PLUGINS_DIR
14 PLUGINS_DIR = "plugins.d"
15 endif
16
17 ifndef nomath
18 STORAGE_WITH_MATH = 1
19 endif
20
21 ifdef nofork
22 NETDATA_NO_DAEMON = 1
23 endif
24
25 COMMON_FLAGS = BIN_DIR='$(BIN_DIR)' CONFIG_DIR='$(CONFIG_DIR)' LOG_DIR='$(LOG_DIR)' PLUGINS_DIR='$(PLUGINS_DIR)'
26
27 proc_sources = proc_net_dev.c proc_net_ip_vs_stats.c proc_diskstats.c proc_meminfo.c proc_net_netstat.c proc_net_snmp.c proc_net_stat_conntrack.c proc_stat.c proc_vmstat.c proc_net_rpc_nfsd.c proc_sys_kernel_random_entropy_avail.c
28 sources = avl.c dictionary.c procfile.c common.c log.c popen.c url.c config.c web_buffer.c storage_number.c web_client.c global_statistics.c rrd.c rrd2json.c web_server.c plugins_d.c daemon.c plugin_tc.c plugin_checks.c plugin_idlejitter.c plugin_proc.c unit_test.c main.c
29 libs    = -pthread -lz
30
31 ifdef debug
32 COMMON_FLAGS += debug=1
33 CFLAGS = -Wall -Wextra -O -ggdb -DBIN_DIR='$(BIN_DIR)' -DCONFIG_DIR='$(CONFIG_DIR)' -DLOG_DIR='$(LOG_DIR)' -DPLUGINS_DIR='$(PLUGINS_DIR)' -fno-omit-frame-pointer
34 # CFLAGS := -Wall -Wextra -O -g -DBIN_DIR='$(BIN_DIR)' -DCONFIG_DIR='$(CONFIG_DIR)' -DLOG_DIR='$(LOG_DIR)' -DPLUGINS_DIR='$(PLUGINS_DIR)' -fsanitize=thread -fno-omit-frame-pointer -fPIE
35 # libs += -pie -ltsan
36 else
37 CFLAGS := -Wall -Wextra -O3 -DBIN_DIR='$(BIN_DIR)' -DCONFIG_DIR='$(CONFIG_DIR)' -DLOG_DIR='$(LOG_DIR)' -DPLUGINS_DIR='$(PLUGINS_DIR)' -fomit-frame-pointer
38 endif
39
40 CC = gcc
41
42 ifdef STORAGE_WITH_MATH
43 CFLAGS += -DSTORAGE_WITH_MATH=1
44 libs += -lm
45 endif
46
47 ifdef NETDATA_NO_DAEMON
48 CFLAGS += -DNETDATA_NO_DAEMON=1
49 endif
50
51 # nfacct requires root access, so we prefer it as a plugin.d external plugin
52 ifdef INTERNAL_PLUGIN_NFACCT
53 CFLAGS += -DINTERNAL_PLUGIN_NFACCT=1
54 sources += plugin_nfacct.c
55 libs += -lmnl -lnetfilter_acct
56 endif
57
58 headers = $(patsubst %.c,%.h,$(sources))
59 objects = $(patsubst %.c,%.o,$(sources) $(proc_sources))
60
61 all: show_options netdata plugins
62
63 %.o: %.c ${headers}
64         $(CC) $(CFLAGS) -c $< -o $@
65
66 netdata: $(objects)
67         $(CC) -o netdata $(objects) $(libs)
68
69 show_options:
70         @echo "    COMPILING WITH OPTIONS: $(CFLAGS)"
71
72 plugins:
73         $(MAKE) -C plugins.d $(COMMON_FLAGS) all
74
75 clean:
76         $(MAKE) -C plugins.d clean
77         rm -f *.o netdata core
78
79 install: all
80         $(MAKE) -C plugins.d $(COMMON_FLAGS) install
81         @echo; \
82         echo "    INSTALLING netdata to $(BIN_DIR)"; \
83         if [ -f $(BIN_DIR)/netdata ]; \
84         then \
85                 mv -f $(BIN_DIR)/netdata $(BIN_DIR)/netdata.old; \
86         fi; \
87         cp -f netdata $(BIN_DIR)/; \
88         echo
89
90 .PHONY: all show_options plugins clean install