CYCC=cyclone
CC = gcc

ifdef DEBUG
CFLAGS = -g -pp -save-c $(EXTRACFLAGS)
else
CFLAGS = -O3 -nogc $(EXTRACFLAGS)
endif

ENCODE_OBJS := encode.o model.o arithcode.o
DECODE_OBJS := decode.o model.o arithcode.o
NC_ENCODE_OBJS := $(addprefix nc_,$(ENCODE_OBJS))
NC_DECODE_OBJS := $(addprefix nc_,$(DECODE_OBJS))

build: encode$(EXE) decode$(EXE)
build-nocheck: encode-nochk$(EXE) decode-nochk$(EXE)

encode$(EXE): $(ENCODE_OBJS)
	$(CYCC) $(CFLAGS) -o $@ $^

decode$(EXE): $(DECODE_OBJS)
	$(CYCC) $(CFLAGS) -o $@ $^

encode-nochk$(EXE): $(NC_ENCODE_OBJS)
	$(CYCC) $(CFLAGS) --nochecks -o $@ $^

decode-nochk$(EXE): $(NC_DECODE_OBJS)
	$(CYCC) $(CFLAGS) --nochecks -o $@ $^

%.o : %.cyc
	$(CYCC) $(CFLAGS) -c $< 

nc_%.o : %.cyc
	$(CYCC) $(CFLAGS) --nochecks -c $< -o $@

%.o : %.c
	$(CC) $(CFLAGS) -c $<

clean: 
	rm -f *.o encode$(EXE) encode-nochk$(EXE) decode$(EXE) decode-nochk$(EXE)
