#/////////////////////////////////////////////////////////
#
#    - Makefile
#
#
#/////////////////////////////////////////////////////////

#	Directory Setting
MANAGER_CPP_DIR         = ../..
MANAGER_CPP_INCPATH     = ${MANAGER_CPP_DIR}/include
MANAGER_CPP_LIBPATH     = ${MANAGER_CPP_DIR}/lib
COMMON_DIR              = ../common
COMMON_SV_ARCHIVE_DIR   = ${COMMON_DIR}/classes/sv_archive_classes
COMMON_UTILITY_DIR      = ${COMMON_DIR}/classes/utility_classes
COMMON_NODEINFO_DIR     = ${COMMON_DIR}/classes/node_info_classes

#	Compiler Setting
CC                = g++
LD                = $(CC)
INCLUDES_COMMON   = -I. -I${COMMON_DIR} -I${COMMON_SV_ARCHIVE_DIR} -I${COMMON_UTILITY_DIR} -I${COMMON_NODEINFO_DIR}
INCLUDES          = -I./src/header -I./src/utility_classes -I./src/xml_analyzer_classes -I./src/table_classes -I./src/xml_writer_classes
INCLUDES_LIB      = -I${MANAGER_CPP_INCPATH}
CFLAGS            = ${INCLUDES_COMMON} ${INCLUDES} ${INCLUDES_LIB} -O2 -g -Wall ${DFLAGS}

#	Target & Object Setting
TARGET   = bin/DigestConfigGenerator

OBJS1    = src/source/analyzer.o                                 \
           src/source/analyzer_sub.o                             \
           src/source/analyzer_util.o                            \
           src/source/digest_config_hard_generator.o             \
           src/source/global.o                                   \
           src/source/message_no_def.o                           \
           src/source/stdafx.o                                   \
           ${COMMON_DIR}/common_lib.o                            \
                                                                 \
           src/xml_analyzer_classes/xml_analyzer.o         \
                                                                 \
           ${COMMON_NODEINFO_DIR}/prenode.o                      \
           ${COMMON_NODEINFO_DIR}/prenode_dumper.o               \
           ${COMMON_NODEINFO_DIR}/prenode_list.o                 \
           ${COMMON_NODEINFO_DIR}/prenode_list_util.o            \
           ${COMMON_NODEINFO_DIR}/prenode_list_iterator.o        \
           ${COMMON_NODEINFO_DIR}/prenode_list_iterator2.o       \
                                                                 \
           src/table_classes/attr_table_reader.o                 \
           src/table_classes/collect_table_reader.o              \
           src/table_classes/def_table_reader.o                  \
           src/table_classes/def_table_reader2.o                 \
           src/table_classes/svrdep_table_reader.o               \
           src/table_classes/title_table_reader.o                \
           src/table_classes/valuecnv_table_reader.o             \
           src/table_classes/valuecnv_table_reader2.o            \
                                                                 \
           src/utility_classes/analyzer_ini_data.o               \
           src/utility_classes/global_info.o                     \
           ${COMMON_UTILITY_DIR}/analyzer_line_reader.o          \
           ${COMMON_UTILITY_DIR}/analyzer_section_line_reader.o  \
           ${COMMON_UTILITY_DIR}/base_ini_data.o                 \
           ${COMMON_UTILITY_DIR}/ini_analyzer.o                  \
           ${COMMON_UTILITY_DIR}/ini_generator.o                 \
           ${COMMON_UTILITY_DIR}/IniReader.o                     \
           ${COMMON_UTILITY_DIR}/parameter_analyzer.o            \
           ${COMMON_UTILITY_DIR}/safe_strtok.o                   \
           ${COMMON_UTILITY_DIR}/tracelog.o                      \
                                                                 \
           src/xml_writer_classes/xml_writer.o                   \
           src/xml_writer_classes/xml_writer_base.o              \
           src/xml_writer_classes/xml_writer_element.o           \
                                                                 
OBJS2      = $(MANAGER_CPP_LIBPATH)/lib.a
OBJS       = $(OBJS1) $(OBJS2)
#OBJS     = $(OBJS1)
# SOCS1  = ${OBJS:.o=.cpp} // deleted OK?

#	Suffix
.SUFFIXES: .cpp .c .o

#	make all
all: $(TARGET)

#	Compile
.cpp.o:
	$(CC) -c -o $@ $(CFLAGS) $<
.c.o:
	$(CC) -c -o $@ $(CFLAGS) $<

$(TARGET): $(OBJS)
	mkdir -p bin
	$(LD) -o $@ $(OBJS)

#	make clean
clean:
	rm -rf $(OBJS1) $(TARGET)

#	make objclean (Clean the object only)
objclean:
	rm -rf $(OBJS1)
