.SUFFIXES: .c .o .h                    # makefile Ŏggqݒ

MAIN_DIR  = .
APL_DIR = ../../main/lc
CDMTR_DIR = ../../../bin
LIB_DIR = $(APL_DIR)/lib
INC_DIR = $(APL_DIR)/inc

SRCDIR = $(MAIN_DIR)/src
INCDIR = $(MAIN_DIR)/src
OBJDIR = $(MAIN_DIR)/obj

#
# DEBUG
#
GDB_DBG = 0
GCOV_TEST = 0
CDMTR_DBG = 0

ifeq ($(GDB_DBG), 1)
	GDB_DBG_FLAG = -g -O0 
else
	GDB_DBG_FLAG = -O2
endif

ifeq ($(GCOV_TEST), 1)
	CDMTR_GCOV_FLAG = -fprofile-arcs -ftest-coverage
else
	CDMTR_GCOV_FLAG = 
endif

ifeq ($(CDMTR_DBG), 1)
	CDMTR_DBG_FLAG = -DCDMTR_DEBUG
else
	CDMTR_DBG_FLAG = 
endif


CDMTR_FLAGS = \
 -Wall\
 -fno-strict-aliasing\
  $(STATIC_FLAGS)\
  $(GDB_DBG_FLAG)\
  $(CDMTR_GCOV_FLAG)\
  $(CDMTR_DBG_FLAG)\
 -I$(INC_DIR)\
 -I$(MAIN_DIR)/inc


CC = gcc                                   # RpC[̎w
CFLAGS	=  $(CDMTR_FLAGS)                  # RpCEIvV
LDFLAGS	=                                  # NEIvV
LIBS	= 

EXE = ncmvbparser
OBJS = \
 $(OBJDIR)/CDMtrVBBison.o \
 $(OBJDIR)/CDMtrVBCmn.o \
 $(OBJDIR)/CDMtrVBFlex.o \
 $(OBJDIR)/CDMtrVBIface.o \
 $(OBJDIR)/CDMtrVBMain.o

all: $(EXE)
	cp $(EXE) $(CDMTR_DIR)/$(EXE)

$(EXE) : $(OBJS)
	$(CC) $(STATIC_FLAGS) -o $(EXE) $(OBJS) $(LIB_DIR)/libcdmtr.a $(LIBS) $(CDMTR_GCOV_FLAG)

# ԃt@C폜Ȃ
.PRECIOUS: $(SRCDIR)/CDMtrVBFlex.c $(SRCDIR)/CDMtrVBBison.c

$(OBJS):
$(OBJDIR)/%.o: $(SRCDIR)/%.c
	@if test ! -d $(OBJDIR); then \
		mkdir $(OBJDIR); \
        flex -o$(SRCDIR)/CDMtrVBFlex.c -l -L -i $(SRCDIR)/CDMtrVBFlex.l; \
        bison -o$(SRCDIR)/CDMtrVBBison.c -d -y -l $(SRCDIR)/CDMtrVBBison.y; \
    fi
	$(CC) $(CFLAGS) -c $< -o $@

clean :
	rm -rf $(OBJDIR)
	rm -rf $(SRCDIR)/CDMtrVBFlex.c $(SRCDIR)/CDMtrVBBison.c $(SRCDIR)/CDMtrVBBison.h
	rm -f $(EXE)
