########################################
##
## Variables.
##
## Define the OTPHOME variable to point at your 
## OTP installation directory, either by command-line 
## or by un-commenting and changing the OTHOME line.
##
########################################

#OTPHOME	=
IGHOME		= $(OTPHOME)/usr
IGLIB		= $(IGHOME)/lib
IGINCL		= $(IGHOME)/include
EMULATOR	= jam

CC		= gcc
ERL		= erl
ERLC		= erlc
CFLAGS		= -I$(IGINCL) # -ansi -pedantic 
ECHO		= echo

CLDFLAGS	= -L$(IGLIB)


IGOFILES	= $(IGLIB)/igmain.o \
		  $(IGLIB)/igio.o -lerl_interface

IGSOCKFILES	= $(IGLIB)/igio.o $(IGLIB)/igsock.o -lsocket -lnsl -lresolv \
			-lerl_interface

EXEFILES	= m struct pointer bin var cback etime svar duplex
GENFILES	= m.erl struct.erl struct.hrl pointer.erl bin.erl \
			var.erl var.hrl cback.erl etime.erl etime.hrl \
			duplex.erl duplex.hrl def.hrl def.erl

########################################
## Targets
##

default: all

all: $(EXEFILES)

m: m.h m.o
	$(ERLC) m.h m.erl
	$(CC) $(CFLAGS) $(CLDFLAGS) -o $@ $@_stub.c $@.o $(IGOFILES)

struct: struct.h struct.o
	$(ERLC) struct.h struct.erl
	$(CC) $(CFLAGS) $(CLDFLAGS) -o $@ $@_stub.c $@.o $(IGOFILES)

pointer: pointer.h pointer.o
	$(ERLC) pointer.h pointer.erl
	$(CC) $(CFLAGS) $(CLDFLAGS) -o $@ $@_stub.c $@.o $(IGOFILES)

bin: bin.h bin.o
	$(ERLC) bin.h bin.erl
	$(CC) $(CFLAGS) $(CLDFLAGS) -o $@ $@_stub.c $@.o $(IGOFILES)

var: var.h var.o
	$(ERLC) var.h var.erl
	$(CC) $(CFLAGS) $(CLDFLAGS) -o $@ $@_stub.c $@.o $(IGOFILES)

def: def.h def.o
	$(ERLC) def.h def.erl
	$(CC) $(CFLAGS) $(CLDFLAGS) -o $@ $@_stub.c $@.o $(IGOFILES)

cback: cback.h cback.o
	$(ERLC) cback.h cback.erl cback_cb.erl
	$(CC) $(CFLAGS) $(CLDFLAGS) -o $@ $@_stub.c $@.o $(IGOFILES)

etime: etime.h igsock_client.o
	$(ERLC) +"{cback_mod, etime_cb}" etime.h etime.erl etime_cb.erl
	$(CC) $(CFLAGS) $(CLDFLAGS) -o $@ $@_stub.c \
		igsock_client.o  $(IGSOCKFILES)

svar: var igsock_server.o
	$(CC) $(CFLAGS) $(CLDFLAGS) -o $@ var_stub.c var.o \
		igsock_server.o $(IGSOCKFILES)

duplex: etime duplex.h duplex.o igsock_duplex.o
	$(ERLC) +"{cback_mod, duplex_cb}" \
		duplex.h duplex.erl duplex_cb.erl duplex_main.erl
	$(CC) $(CFLAGS) $(CLDFLAGS) -o $@ $@_stub.c $@.o \
		igsock_duplex.o $(IGSOCKFILES)

clean: 
	rm -f *.o *stub* *.jam $(EXEFILES) $(GENFILES)
