MICO = /paket/mico-2.3.3
IINCLUDES=-I$(MICO)/include
LINCLUDES=-L$(MICO)/lib 
CFLAGS = -fpermissive -g
LFLAGS = -rdynamic
# micocoss : Nameservice
LIBS   = -lmicocoss${MICOVERSION} -lmico${MICOVERSION} -ldl -lm 
CC     = g++

all: helloserver sharedinterceptor.so

helloserver: hello.o hello_impl.o insecurity.o
	$(CC) -o $@ $(CFLAGS) $(LFLAGS) $(IINCLUDES) $(LINCLUDES) hello.o hello_impl.o insecurity.o $(LIBS)

hello.o: hello.cc hello.h
hello_impl.o: hello_impl.cc hello_impl.h hello.h insecurity.h

hello.h hello.cc:
	idl --feed-ir --boa --no-poa --c++-impl hello.idl

sharedinterceptor.so: sharedinterceptor.cc insecurity.pic.o insecurity_impl.pic.o
	$(CC) -fPIC $(CFLAGS) -shared -rdynamic -o $@ sharedinterceptor.cc insecurity.pic.o insecurity_impl.pic.o -lmico${MICOVERSION}

insecurity.h insecurity.cc: insecurity.idl
	idl -I$(MICO)/include/mico --pseudo insecurity.idl

insecurity.pic.o: insecurity.cc insecurity.h
insecurity_impl.pic.o: insecurity_impl.cc insecurity_impl.h insecurity.h

insecurity.pic.o insecurity_impl.pic.o:
	$(CC) -fPIC $(IINCLUDES) -c $(@:.pic.o=.cc) -o $@

clean:
	rm -f *.o *~

clobber: clean
	rm -f hello.h hello.cc insecurity.h insecurity.cc
	rm -f helloserver sharedinterceptor.so

.cc.o:
	$(CC) -c $(IINCLUDES) $(CFLAGS) $<
