CC = gcc -g
LD = gcc -g

EXE=
CFLAGS = \
  -L../../../lib \
  -I../../../include

LIBS = -lluc4c_nc -llucky_nc -lgmp -lm -ldl -lstdc++ 
LUC2C=../../../bin/luc2c

ifeq ($(HOSTTYPE),win32)
  EXE=.exe
  CFLAGS = \
    -L../../../lib -L/cygdrive/c/TEMP/MinGW/lib \
    -I../../../include \
    -Winline -Wimplicit-function-declaration 

  LIBS = -lluc4c_nc -llucky_nc -lgmp -lws2_32 -lm -lstdc++ 
  LUC2C=../../../bin/luc2c$(EXE) 
endif
ifeq ($(HOSTTYPE),mac)
	LD = g++ -g
	LIBS = -lluc4c_nc -llucky_nc -lgmp -lm -ldl
endif

################################################################
# Calling lucky from Lustre

# SOURCE_FILES = call_foo.lus foo.luc

foo.c: foo.luc
	$(LUC2C) --lustre "call_foo" --seed 42 foo.luc

foo.o : foo.c
	$(CC) -c $(CFLAGS) foo.c

call_foo.ec:
	lus2ec call_foo.lus call_foo

call_foo.c: call_foo.ec
	ec2c  -loop call_foo.ec

call_foo.o: call_foo.c
	$(CC) -c $(CFLAGS) call_foo.c

call_foo_loop.o: call_foo_loop.c
	$(CC) -c $(CFLAGS) call_foo_loop.c

call_foo_ext_func.o: call_foo_ext_func.c
	$(CC) -c $(CFLAGS) call_foo_ext_func.c

foo: foo.o call_foo.o call_foo_ext_func.o call_foo_loop.o 
	$(LD) $(CFLAGS) -o $@ $^  $(LIBS) 



################################################################

clean:
	rm -f run *.o *~  call_foo_ext* call_foo.c call_foo.h call_foo_loop.c call_foo_loop.h foo.h foo.c *.gp *.plot *.rif *.ec foo$(EXE) #*

test : clean foo
ifeq ($(HOSTTYPE),win32)
	foo$(EXE) 
else
	touch test.rif ; rm test.rif
	echo "1 1 1 1 1 1 1 1 1 1 1" | ./foo > test.rif
	rm -f test.res && diff -u -i  test.rif.exp test.rif > test.res
	[ ! -s test.res ] && make clean 
endif

utest:
	cp test.rif test.rif.exp 


