ifeq (Windows_NT,$(OS))
  WIN=1
  WINCMD=1
endif
ifeq (msys,$(OSTYPE))
  WIN=1
  WINCMD=0
endif

ifeq (1,$(WIN))
  EXE = dehsupp.exe
  CFLAGS = $(LOC) -Os -Wall -fomit-frame-pointer
else
  EXE = dehsupp
  CFLAGS = -Dstricmp=strcasecmp -Dstrnicmp=strncasecmp -Os -Wall -fomit-frame-pointer
endif

CCDV = @../../ccdv
CC = gcc
LDFLAGS = -s

RE2C = ../re2c/re2c
LEMON = ../lemon/lemon
LEMONFLAGS =
RE2CFLAGS = -s

OBJS = dehsupp.o parse.o scanner.o

all: $(EXE)

$(EXE): $(OBJS)
	$(CCDV) $(CC) $(LDFLAGS) -o $(EXE) $(OBJS)

.PHONY: clean

clean:
ifeq (1,$(WINCMD))
	-del /q /f $(EXE) 2>nul
	-del /q /f *.o 2>nul
else
	rm -f $(EXE)
	rm -f *.o
endif

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

parse.h parse.c: parse.y
	$(CCDV) $(LEMON) $(LEMONFLAGS) $<
	
scanner.c: scanner.re
	$(CCDV) $(RE2C) $(RE2CFLAGS) -o $@ $<

parse.tab.c: parse.y
	$(CCDV) $(BISON) $(BISONFLAGS) -o $@ $<
