ifndef BIN_DIR
-BIN_DIR = "$(PWD)"
+BIN_DIR = "."
endif
ifndef CONFIG_DIR
PLUGINS_DIR = "plugins.d"
endif
+ifndef nomath
+STORAGE_WITH_MATH = 1
+endif
+
COMMON_FLAGS = BIN_DIR='$(BIN_DIR)' CONFIG_DIR='$(CONFIG_DIR)' LOG_DIR='$(LOG_DIR)' PLUGINS_DIR='$(PLUGINS_DIR)'
+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
+sources = avl.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
+libs = -pthread -lz
+
ifdef debug
COMMON_FLAGS += debug=1
-CFLAGS = -Wall -Wextra -ggdb -DBIN_DIR='$(BIN_DIR)' -DCONFIG_DIR='$(CONFIG_DIR)' -DLOG_DIR='$(LOG_DIR)' -DPLUGINS_DIR='$(PLUGINS_DIR)'
+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
+# 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
+# libs += -pie -ltsan
else
-CFLAGS = -Wall -Wextra -O3 -DBIN_DIR='$(BIN_DIR)' -DCONFIG_DIR='$(CONFIG_DIR)' -DLOG_DIR='$(LOG_DIR)' -DPLUGINS_DIR='$(PLUGINS_DIR)'
+CFLAGS := -Wall -Wextra -O3 -DBIN_DIR='$(BIN_DIR)' -DCONFIG_DIR='$(CONFIG_DIR)' -DLOG_DIR='$(LOG_DIR)' -DPLUGINS_DIR='$(PLUGINS_DIR)' -fomit-frame-pointer
endif
CC = gcc
-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
-sources = 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
-libs = -pthread -lz -lm
+ifdef STORAGE_WITH_MATH
+CFLAGS += -DSTORAGE_WITH_MATH=1
+libs += -lm
+endif
# nfacct requires root access, so we prefer it as a plugin.d external plugin
ifdef INTERNAL_PLUGIN_NFACCT
headers = $(patsubst %.c,%.h,$(sources))
objects = $(patsubst %.c,%.o,$(sources) $(proc_sources))
-.PHONY: options
-options:
- @echo " COMPILING WITH OPTIONS: $(CFLAGS)"
+all: show_options netdata plugins
-all: options netdata plugins
+%.o: %.c ${headers}
+ $(CC) $(CFLAGS) -c $< -o $@
netdata: $(objects)
- @echo " $(CC) netdata"
- @$(CC) -o netdata $(objects) $(libs)
+ $(CC) -o netdata $(objects) $(libs)
+
+show_options:
+ @echo " COMPILING WITH OPTIONS: $(CFLAGS)"
-.PHONY: plugins
plugins:
$(MAKE) -C plugins.d $(COMMON_FLAGS) all
-%.o: %.c ${headers}
- @echo " $(CC) $<"
- @$(CC) $(CFLAGS) -c $< -o $@
-
-.PHONY: clean
clean:
$(MAKE) -C plugins.d clean
rm -f *.o netdata core
fi; \
cp -f netdata $(BIN_DIR)/; \
echo
+
+.PHONY: all show_options plugins clean install