CC=gcc
LD=ld
-CFLAGS=-Wall -O2 -g
+CFLAGS=-Wall -O2 -g -fPIC -D_GNU_SOURCE
-RRDD_OBJS= main.o process.o draw_graphs.o parser.o scheduler.o string.o \
- debug.o
+RRDD_OBJS= main.o process.o rrdtool.o parser.o built_in_parsers.o string.o \
+ debug.o config.o plugin_manager.o
+
+ONEWIRE_PARSER_OBJS = onewire_parser.o
+
+ALL_PARSERS = onewire_parser.so
+
+ALL_OBJS = $(RRDD_OBJS) $(ONEWIRE_PARSER_OBJS)
+ALL_DEBS = $(patsubst %.o,.%.o.d,$(ALL_OBJS))
+
+ifeq ($(V),1)
+ Q =
+ QUIET_CC =
+ QUIET_LINK =
+else
+ Q = @
+ QUIET_CC = @echo " CC " $@;
+ QUIET_LINK = @echo " LINK " $@;
+endif
+
+default: rrdd
+
+all: rrdd $(ALL_PARSERS)
rrdd: $(RRDD_OBJS)
- @echo -e "\tLD\t" rrdd
- @$(CC) -o rrdd $(RRDD_OBJS)
+ $(QUIET_LINK)$(CC) -o rrdd $(RRDD_OBJS) -lconfig -ldl -rdynamic \
+ -lpthread
-all: rrdd
+onewire_parser.so: $(ONEWIRE_PARSER_OBJS)
+ $(QUIET_LINK)$(CC) $(CFLAGS) -lownet -shared -fPIC $< -o $@
clean:
- rm -vf rrdd *~ *.o .*.d
+ rm -vf rrdd *~ *.o .*.d *.so .version version.h .compiler_check*
+
+%.o: %.c .compiler_check
+ $(QUIET_CC)$(CC) -MMD -MF .$@.d $(CFLAGS) -c $< -o $@
+ $(Q)cp .$@.d .$@.P; \
+ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
+ -e '/^$$/ d' -e 's/$$/ :/' < .$@.d >> .$@.P; \
+ mv .$@.P .$@.d
+
+version.h .compiler_check: FORCE
+ $(Q)./mkcompile_h "$(CC) $(CFLAGS)"
+
+FORCE:
-.c.o:
- @echo -e "\tCC\t" $@
- @$(CC) -MMD -MF .$@.d $(CFLAGS) -c $< -o $@
TAGS:
- etags *.[ch]
+ @echo -e "\tTAGS\t"
+ @etags *.[ch]
.PHONY: all clean TAGS
--include .*.d
-
+-include $(ALL_DEBS)