include ../makeinfo
include ../mooix.conf

# Uncomment this line to get debugging to stderr.
#DEBUG=-DDEBUG
# Comment this line to disable assertion checking.
#ASSERT=-DASSERT
# Uncomment this line to enable method call profiling to mooprofile file.
#PROFILE=-DPROFILE

CFLAGS += -Winline -O3 -I ../libmooproxy -I ../libmoocallstack \
	$(DEBUG) $(ASSERT) $(PROFILE) -D_GNU_SOURCE
BINS=mood
MANS=mood.8
SOURCES=object.c socket.c clientcomm.c uids.c mood.c \
	proxy.c stackinfo.c profile.c perl.c noembed.c

ifeq (${EMBED_PYTHON},yes)
SOURCES += python.c
CFLAGS += -DEMBED_PYTHON -I$(PYTHON_INCDIR)
PYTHON_LINK=`$(PYTHON) -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LINKFORSHARED')"` $(LIBPYTHON)
endif

ifeq (${EMBED_RUBY},yes)
SOURCES += ruby.c
CFLAGS += -DEMBED_RUBY -I$(RUBY_INCDIR)
RUBY_LINK = $(LIBRUBY)
endif

OBJS=$(SOURCES:.c=.o)
PERL_LINK=`perl -MExtUtils::Embed -e ldopts`

piddir=$(localstatedir)/run
CPPFLAGS:=$(CPPFLAGS) -DRUNDIR="\"$(rundir)\"" -DPIDDIR="\"$(piddir)\"" \
	-DMOOFILE="\"$(MOOFILE)\"" -DLIBMOOPROXY="LIBDIR \"/libmooproxy.so\"" \
	-DMOOSOCK="VARDIR \"/run/mood\"" -DCONFFILE="SYSCONFDIR \"/mooix.conf\""

build: $(BINS)

# libmooproxy must be linked in first; it expects to be preloaded..
mood: $(OBJS)
	$(CC) $(CFLAGS) ../libmooproxy/libmooproxy.so \
		$(OBJS) $(PERL_LINK) $(PYTHON_LINK) $(RUBY_LINK) \
		../libmoocallstack/libmoocallstack.so \
		-o mood # -lefence

test:

clean:
	rm -f $(OBJS) $(BINS) *~

realclean:
	rm -f .depend mooprofile

install:
	$(INSTALL) -d $(PREFIX)/$(sbindir) $(PREFIX)/$(mandir)/man8 \
		$(PREFIX)/$(rundir) $(PREFIX)/$(piddir)
	$(INSTALL_PROGRAM) $(BINS) $(PREFIX)/$(sbindir)
	$(INSTALL) -m 0644 $(MANS) $(PREFIX)/$(mandir)/man8

uninstall:
	for bin in $(BINS); do \
		rm -f $(PREFIX)/$(sbindir)/$$bin; \
	done
	for man in $(MANS); do \
		rm -f $(PREFIX)/$(mandir)/man8/$$man; \
	done
	rm -f $(PREFIX)/$(rundir)/*.sock $(PREFIX)/$(rundir)/*.stack
	rm -f $(PREFIX)/$(rundir)/../mood $(PREFIX)/$(rundir)/../mood.pid
	-rmdir -p $(PREFIX)/$(sbindir) $(PREFIX)/$(mandir)/man8 \
		$(PREFIX)/$(rundir) $(PREFIX)/$(piddir)

perl.o:
	$(CC) $(CFLAGS) `perl -MExtUtils::Embed -e ccopts` -c -o perl.o perl.c

.depend: *.c *.h
	cc $(CFLAGS) `perl -MExtUtils::Embed -e perl_inc` -MM *.c > .depend

-include .depend
