# $Id: Makefile,v 1.37 2007/03/05 16:15:09 nanard Exp $
# MiniUPnP project
# http://miniupnp.free.fr/
# Author: Thomas Bernard
# I tried to make this Makefile compatible with both BSD Make and
# GNU Make. Let's see if I succeded.
CFLAGS = -Wall -Os
#CFLAGS = -Wall -O -g -DDEBUG
CC = gcc
RM = rm -f
MV = mv
INSTALL = install

STDOBJS = miniupnpd.o upnphttp.o upnpdescgen.o upnpsoap.o \
          upnpredirect.o getifaddr.o daemonize.o upnpglobalvars.o \
		  options.o upnppermissions.o minissdp.o
BSDOBJS = openbsd/obsdrdr.o openbsd/getifstats.o
MISCOBJS = upnpreplyparse.o minixml.o

ALLOBJS = $(STDOBJS) $(BSDOBJS) $(MISCOBJS)

TESTUPNPDESCGENOBJS = testupnpdescgen.o upnpdescgen.o
TESTGETIFSTATSOBJS = testgetifstats.o openbsd/getifstats.o
TESTUPNPPERMISSIONSOBJS = testupnppermissions.o upnppermissions.o
MINIUPNPDCTLOBJS = miniupnpdctl.o

EXECUTABLES = miniupnpd testupnpdescgen testgetifstats \
              testupnppermissions miniupnpdctl

LIBS = -lkvm

# set PREFIX variable to install in the wanted place

INSTALLBINDIR = $(PREFIX)/sbin
INSTALLETCDIR = $(PREFIX)/etc

all:	$(EXECUTABLES)

clean:
	$(RM) $(STDOBJS) $(BSDOBJS) $(EXECUTABLES) testupnpdescgen.o \
	$(MISCOBJS) config.h testgetifstats.o testupnppermissions.o

install:	miniupnpd genuuid
	strip miniupnpd
	$(INSTALL) -m 555 miniupnpd $(INSTALLBINDIR)
	$(INSTALL) miniupnpd.conf $(INSTALLETCDIR)

# genuuid is using the uuid cli tool available under OpenBSD 4.0 in
# the uuid-1.5.0 package
# any other cli tool returning a uuid on stdout should work.
UUID != if which uuidgen 2>&1 > /dev/null; then \
        echo `uuidgen` ; \
        elif which uuid 2>&1 > /dev/null; then \
        echo `uuid` ; \
        else echo "00000000-0000-0000-0000-000000000000"; \
        fi

genuuid:
	$(MV) miniupnpd.conf miniupnpd.conf.before
	sed -e "s/^uuid=[-0-9a-f]*/uuid=$(UUID)/" miniupnpd.conf.before > miniupnpd.conf
	$(RM) miniupnpd.conf.before

depend:	config.h
	mkdep $(ALLOBJS:.o=.c)

miniupnpd: config.h $(ALLOBJS)
	$(CC) $(CFLAGS) -o $@ $(ALLOBJS) $(LIBS)

# BSDmake :
#	$(CC) $(CFLAGS) -o $@ $> $(LIBS)

miniupnpdctl:	config.h $(MINIUPNPDCTLOBJS)
	$(CC) $(CFLAGS) -o $@ $(MINIUPNPDCTLOBJS)

testupnpdescgen:	config.h $(TESTUPNPDESCGENOBJS)
	$(CC) $(CFLAGS) -o $@ $(TESTUPNPDESCGENOBJS)

testgetifstats:	config.h $(TESTGETIFSTATSOBJS)
	$(CC) $(CFLAGS) -o $@ $(TESTGETIFSTATSOBJS) $(LIBS)

testupnppermissions:	config.h $(TESTUPNPPERMISSIONSOBJS)
	$(CC) $(CFLAGS) -o $@ $(TESTUPNPPERMISSIONSOBJS)

# gmake :
#	$(CC) $(CFLAGS) -o $@ $^
# BSDmake :
#	$(CC) $(CFLAGS) -o $@ $>

config.h:	genconfig.sh
	./genconfig.sh

.SUFFIXES:	.o .c
.c.o:
	$(CC) $(CFLAGS) -c -o $@ $<

#	$(CC) $(CFLAGS) -c -o $(.TARGET) $(.IMPSRC)

	
