#                          Alliance VLSI CAD System
#
#     Product : OVER-THE-CELL ROUTER
#     File    : Makefile
#
#		Date	  : 24/04/2000

# Alliance Shared Libraries and Include Files for Makefiles
include $(ALLIANCE_TOP)/etc/$(ALLIANCE_OS).mk
include $(ALLIANCE_TOP)/etc/libraries.mk

# Tools
TAGS = ctags
RM   = rm -fr
AR   = ar -rv

# Directory
TARGET_DIR  = $(HOME)/local/$(ALLIANCE_OS)/bin
LIB_DIR	   = ../lib
INCLUDE_DIR = ../include

# Source
OCR_SRC_FILE = mbk_tree.c ocrUtil.c \
					ocrWRoutingUtil.c ocrWSegLabeling.c \
					ocrWPlaneLabeling.c \
               ocrWRouting.c ocrToPhFig.c #ocrRouting.c

OCR_OBJ_FILE = $(subst .c,.o,$(OCR_SRC_FILE))
LIB_NAME     = ocrPath.a

# Include Flags for Alliance Shared Libraries
OCR_ALC_INCLUDE = -I$(ALLIANCE_INCLUDE) \
						-I$(INCLUDE_DIR) \
                  -DMLU_H='<$(MLU_H)>' \
                  -DMPU_H='<$(MPU_H)>' \
                  -DMLO_H='<$(MLO_H)>' \
                  -DMPH_H='<$(MPH_H)>' \
                  -DMUT_H='<$(MUT_H)>'

# Libraries Flags for Alliance Shared Libraries
OCR_ALC_LIB = -L$(ALLIANCE_LIB) \
              $(MLU_L) \
              $(MPU_L) \
              $(MCP_L) \
              $(MAP_L) \
              $(MMG_L) \
              $(MCL_L) \
              $(MGL_L) \
              $(MAL_L) \
              $(MVL_L) \
              $(MEL_L) \
              $(MSL_L) \
              $(MHL_L) \
              $(RCN_L) \
              $(MLO_L) \
              $(MPH_L) \
              $(MUT_L)

# Compilation Flags
OCR_CFLAGS = -Wall -O4 -p -g

# Non file targets
.PHONY: clean

# Dependencies
all : $(LIB_DIR)/$(LIB_NAME)
	$(TAGS) *.[ch]

debug :
	$(MAKE) OCR_CFLAGS='-Wall -O4 -p -g -fprofile-arcs -ftest-coverage'
	
norm :
	$(MAKE) OCR_CFLAGS='-Wall -O4'

mbk_tree.o	: mbk_tree.c $(INCLUDE_DIR)/mbk_tree.h

ocrUtil.o	: ocrUtil.c $(INCLUDE_DIR)/ocrUtil.h $(INCLUDE_DIR)/ocr.h

ocrWRoutingUtil.o	: ocrWRoutingUtil.c $(INCLUDE_DIR)/mbk_tree.h \
						$(INCLUDE_DIR)/ocr.h $(INCLUDE_DIR)/ocrUtil.h \
						$(INCLUDE_DIR)/ocrWRoutingDataBase.h \
						$(INCLUDE_DIR)/ocrWRoutingUtil.h

ocrWSegLabeling.o	: ocrWSegLabeling.c $(INCLUDE_DIR)/mbk_tree.h \
						$(INCLUDE_DIR)/ocr.h $(INCLUDE_DIR)/ocrUtil.h \
						$(INCLUDE_DIR)/ocrWRoutingDataBase.h \
						$(INCLUDE_DIR)/ocrWRoutingUtil.h	\
						$(INCLUDE_DIR)/ocrWSegLabeling.h

ocrWPlaneLabeling.o	: ocrWPlaneLabeling.c $(INCLUDE_DIR)/mbk_tree.h \
							$(INCLUDE_DIR)/ocr.h $(INCLUDE_DIR)/ocrUtil.h \
							$(INCLUDE_DIR)/ocrWRoutingDataBase.h \
							$(INCLUDE_DIR)/ocrWRoutingUtil.h	\
							$(INCLUDE_DIR)/ocrWSegLabeling.h	\
							$(INCLUDE_DIR)/ocrWPlaneLabeling.h

ocrWRouting.o	: ocrWRouting.c $(INCLUDE_DIR)/mbk_tree.h \
					$(INCLUDE_DIR)/ocr.h $(INCLUDE_DIR)/ocrUtil.h \
					$(INCLUDE_DIR)/ocrWRoutingDataBase.h \
					$(INCLUDE_DIR)/ocrWRoutingUtil.h	\
					$(INCLUDE_DIR)/ocrWSegLabeling.h	\
					$(INCLUDE_DIR)/ocrWPlaneLabeling.h \
					$(INCLUDE_DIR)/ocrWRouting.h

ocrToPhFig.o	: ocrToPhFig.c $(INCLUDE_DIR)/ocrToPhFig.h \
					$(INCLUDE_DIR)/mbk_tree.h \
					$(INCLUDE_DIR)/ocr.h $(INCLUDE_DIR)/ocrUtil.h \
					$(INCLUDE_DIR)/ocrWRoutingDataBase.h \
					$(INCLUDE_DIR)/ocrWRoutingUtil.h

ocrRouting.o	: ocrRouting.c $(INCLUDE_DIR)/ocrRouting.h \
					$(INCLUDE_DIR)/mbk_tree.h \
					$(INCLUDE_DIR)/ocr.h $(INCLUDE_DIR)/ocrUtil.h \
					$(INCLUDE_DIR)/ocrWRoutingDataBase.h \
					$(INCLUDE_DIR)/ocrWRoutingUtil.h

$(LIB_DIR)/$(LIB_NAME) : $(OCR_OBJ_FILE)
	$(AR) $@ $?

# Implicite Rule
%.o : %.c 
	$(CC) $(OCR_CFLAGS) $(OCR_ALC_INCLUDE) -c $< -o $@

clean :
	-$(RM) $(LIB_DIR)/$(LIB_NAME)
	-$(RM) *~ *.o gmon.out *.gcov *.da *.bb *.bbg tags .*.swp
