include ../Makefile.common

all: initng libinitng.so.0.0

%.o: %.c
	$(CC) -fPIC $(CFLAGS) -c $<


kill:
	killall -9 initng; killall valgrind; killall ngdc; true

initng: main.o initng_global.o libinitng.so
	$(CC) $(LDFLAGS) -o initng $(LIBING) -ldl $^

libinitng.so: libinitng.so.0.0
	ln -f -s libinitng.so.0.0 libinitng.so

libinitng.so.0.0: string_tools.o process_db.o service_db.o initng_execute.o\
initng_signal.o initng_handler.o open_read_close.o\
initng_history.o active_db.o initng_main.o\
initng_load_module.o initng_toolbox.o service_data_types.o\
initng_plugin_hook.o initng_kill_handler.o initng_common.o\
initng_plugin_callers.o struct_data.o
	$(CC) $(LDFLAGS) -shared -lc -Wl,-soname,libinitng.so.0.0 \
-o libinitng.so.0.0 $^
	ln -s -f libinitng.so.0.0 libinitng.so.0
	ln -s -f libinitng.so.0 libinitng.so



install: all
	install libinitng.so.0.0 libinitng.so.0 libinitng.so $(DESTDIR)/lib
	install initng $(DESTDIR)/sbin
link-install: all
	install -d $(DESTDIR)/lib/initng
	install -d $(DESTDIR)/sbin
	ln -s -f `pwd`/libinitng.so.0.0 $(DESTDIR)/lib/libinitng.so.0.0
	ln -s -f `pwd`/libinitng.so.0 $(DESTDIR)/lib/libinitng.so.0
	ln -s -f `pwd`/libinitng.so $(DESTDIR)/lib/libinitng.so
	ln -s -f `pwd`/initng $(DESTDIR)/sbin/initng
uninstall:
	rm -f $(DESTDIR)/lib/libinitng.so.0.0 $(DESTDIR)/lib/libinitng.so.0 $(DESTDIR)/lib/libinitng.so $(DESTDIR)/sbin/initng


initng_toolbox.o: initng_toolbox.c initng.h initng_global.h
active_db.o: active_db.c active_db.h process_db.h service_db.h service_data_types.h initng.h initng_global.h
initng_plugin_hook.o: initng_plugin_hook.c initng_plugin_hook.h
initng_global.o: initng_global.h initng.h initng_global.h
initng_execute.o: initng_execute.c initng_execute.h process_db.h main.h string_tools.h  initng.h initng_global.h
initng_handler.o: initng_handler.c initng_handler.h active_db.h service_db.h service_data_types.h initng_execute.h service_db.h service_data_types.h initng_history.h string_tools.h initng.h process_db.h main.h initng_global.h
initng_history.o: initng_history.c initng_history.h initng.h initng_global.h
initng_signal.o: initng_signal.c initng_signal.h initng_handler.h initng.h initng_global.h
main.o: main.c main.h process_db.h initng_signal.h initng_handler.h active_db.h initng_history.h initng.h initng_handler.h initng_global.h
process_db.o: process_db.c process_db.h initng.h initng_global.h
service_db.o: service_db.c service_db.h service_data_types.h initng.h initng_global.h
open_read_close.o: open_read_close.c open_read_close.h initng.h initng_global.h
string_tools.o: string_tools.c string_tools.h initng.h initng_global.h
service_data_types.o: service_data_types.c service_data_types.h initng.h


clean:
	-rm *~
	-rm *.o
	-rm libinitng.so*
	-rm initng

memcheck: initng
	valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./initng

memcheck-v: initng
	valgrind --tool=memcheck --leak-check=yes --show-reachable=yes -v ./initng

