##DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
#
#                         D r . D e a m o n  6 4
#                        for INTEL64(R), AMD64(R)
#    
#   Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
#    this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
# OF THE POSSIBILITY OF SUCH DAMAGE.
#
##DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64

## File Info -----------------------------------------------------------
# File: Makefile
# Function: 
# Comment: 
##----------------------------------------------------------------------

# Section 1 : Setting Build Command ####################################
MAKE = make
CC = gcc

# Section 2 : Setting Compile Flag  ####################################
FLAGS_DEBUG = -g -Wall
LINK_LIBS = brownie
LINK_LIBDIR = ..

#
#
SUPER_HEADER =	../include/drd64_packet.h \
				../include/drd64_conf.h \
				../include/drd64_types.h

#
#
SERVER_HEADER = drd64_server.h \
				drd64_server_recvstatus.h \
				drd64_server_log.h \
				drd64_server_debuglog.h \
				$(SUPER_HEADER)
SERVER_OBJS =	drd64_server_common.o \
				drd64_server_recvsocket.o \
				drd64_server_recvstatus.o \
				drd64_server_socket.o \
				drd64_server_packet.o \
				drd64_server_log.o \
				drd64_server_debuglog.o


#
#
DEBUGD_TARGET = drd64_debugd
DEBUGD_OBJS =	drd64_debugd_main.o \
				drd64_debugd_dispatch.o \
				drd64_debugd_send_cmd_bootinfo.o \
				drd64_debugd_cmd_attach_link.o \
				drd64_debugd_cmd_attach_report.o \
				drd64_debugd_cmd_detach.o \
				drd64_common_function.o \
				drd64_debugd_debug_attach.o \
				drd64_debugd_debug_detach.o \
				$(SERVER_OBJS)
DEBUGD_HEADER = drd64_debugd.h \
				drd64_debugd_info.h \
				drd64_debugd_dispatch.h \
				drd64_debugd_debug.h \
				$(SERVER_HEADER)

MARSHALD_TARGET = drd64_marshald
MARSHALD_OBJS = drd64_marshald_main.o \
				drd64_marshald_dispatch.o \
				drd64_marshald_cinfo.o \
				drd64_marshald_cmd_connect.o \
				drd64_marshald_cmd_connect_count.o \
				drd64_marshald_cmd_disconnect.o \
				drd64_marshald_cmd_attach_request.o \
				drd64_marshald_cmd_attach_link.o \
				drd64_marshald_cmd_attach_report.o \
				drd64_marshald_cmd_detach.o \
				drd64_marshald_msg_bootinfo.o \
				drd64_marshald_send_connect.o \
				drd64_marshald_send_connect_count.o \
				drd64_marshald_boot_debugd.o \
				drd64_marshald_connect_marshald.o \
				drd64_marshald_connect_debugd.o \
				drd64_common_function.o \
				$(SERVER_OBJS)
MARSHALD_HEADER =	drd64_marshald.h \
					drd64_marshald_info.h \
					drd64_marshald_cinfo.h \
					drd64_marshald_dispatch.h \
					drd64_marshald_connect_debugd.h \
					$(SERVER_HEADER)

all:	$(DEBUGD_TARGET) \
		$(MARSHALD_TARGET)

#
#
$(DEBUGD_TARGET): $(DEBUGD_OBJS)
	$(CC) -o $(DEBUGD_TARGET) $(FLAGS_DEBUG) $(DEBUGD_OBJS) \
			-l$(LINK_LIBS) -L$(LINK_LIBDIR) 
	cp $(DEBUGD_TARGET) ..

drd64_debugd_main.o: drd64_debugd_main.c $(DEBUGD_HEADER)
	$(CC) -c -o drd64_debugd_main.o $(FLAGS_DEBUG) \
				drd64_debugd_main.c

drd64_debugd_dispatch.o: drd64_debugd_dispatch.c $(DEBUGD_HEADER)
	$(CC) -c -o drd64_debugd_dispatch.o $(FLAGS_DEBUG) \
				drd64_debugd_dispatch.c

drd64_debugd_send_cmd_bootinfo.o: \
		drd64_debugd_send_cmd_bootinfo.c $(DEBUGD_HEADER)
	$(CC) -c -o drd64_debugd_send_cmd_bootinfo.o $(FLAGS_DEBUG) \
				drd64_debugd_send_cmd_bootinfo.c

drd64_debugd_cmd_attach_link.o: \
		drd64_debugd_cmd_attach_link.c $(DEBUGD_HEADER)
	$(CC) -c -o drd64_debugd_cmd_attach_link.o $(FLAGS_DEBUG) \
				drd64_debugd_cmd_attach_link.c

drd64_debugd_cmd_attach_report.o: \
		drd64_debugd_cmd_attach_report.c $(DEBUGD_HEADER)
	$(CC) -c -o drd64_debugd_cmd_attach_report.o $(FLAGS_DEBUG) \
				drd64_debugd_cmd_attach_report.c

drd64_debugd_cmd_detach.o: \
		drd64_debugd_cmd_detach.c $(DEBUGD_HEADER)
	$(CC) -c -o drd64_debugd_cmd_detach.o $(FLAGS_DEBUG) \
				drd64_debugd_cmd_detach.c

drd64_debugd_debug_attach.o: drd64_debugd_debug_attach.c $(DEBUGD_HEADER)
	$(CC) -c -o drd64_debugd_debug_attach.o $(FLAGS_DEBUG) \
				drd64_debugd_debug_attach.c

drd64_debugd_debug_detach.o: drd64_debugd_debug_detach.c $(DEBUGD_HEADER)
	$(CC) -c -o drd64_debugd_debug_detach.o $(FLAGS_DEBUG) \
				drd64_debugd_debug_detach.c

##
##
$(MARSHALD_TARGET): $(MARSHALD_OBJS)
	$(CC) -o $(MARSHALD_TARGET) $(FLAGS_DEBUG) $(MARSHALD_OBJS) \
			-l$(LINK_LIBS) -L$(LINK_LIBDIR) 
	cp $(MARSHALD_TARGET) ..

drd64_marshald_main.o: drd64_marshald_main.c $(MARSHALD_HEADER)
	$(CC) -c -o drd64_marshald_main.o $(FLAGS_DEBUG) drd64_marshald_main.c

drd64_marshald_dispatch.o: drd64_marshald_dispatch.c $(MARSHALD_HEADER)
	$(CC) -c -o drd64_marshald_dispatch.o $(FLAGS_DEBUG) drd64_marshald_dispatch.c

drd64_marshald_cinfo.o: drd64_marshald_cinfo.c $(MARSHALD_HEADER)
	$(CC) -c -o drd64_marshald_cinfo.o $(FLAGS_DEBUG) drd64_marshald_cinfo.c

drd64_marshald_cmd_connect.o: \
			drd64_marshald_cmd_connect.c $(MARSHALD_HEADER)
	$(CC) -c -o drd64_marshald_cmd_connect.o $(FLAGS_DEBUG) \
			drd64_marshald_cmd_connect.c

drd64_marshald_cmd_connect_count.o: \
			drd64_marshald_cmd_connect_count.c $(MARSHALD_HEADER)
	$(CC) -c -o drd64_marshald_cmd_connect_count.o $(FLAGS_DEBUG) \
			drd64_marshald_cmd_connect_count.c

drd64_marshald_cmd_disconnect.o: drd64_marshald_cmd_disconnect.c $(MARSHALD_HEADER)
	$(CC) -c -o drd64_marshald_cmd_disconnect.o $(FLAGS_DEBUG) drd64_marshald_cmd_disconnect.c

drd64_marshald_cmd_attach_request.o: \
			drd64_marshald_cmd_attach_request.c $(MARSHALD_HEADER)
	$(CC) -c -o drd64_marshald_cmd_attach_request.o $(FLAGS_DEBUG) \
			drd64_marshald_cmd_attach_request.c

drd64_marshald_cmd_attach_link.o: \
			drd64_marshald_cmd_attach_link.c $(MARSHALD_HEADER)
	$(CC) -c -o drd64_marshald_cmd_attach_link.o $(FLAGS_DEBUG) \
			drd64_marshald_cmd_attach_link.c

drd64_marshald_cmd_attach_report.o: \
			drd64_marshald_cmd_attach_report.c $(MARSHALD_HEADER)
	$(CC) -c -o drd64_marshald_cmd_attach_report.o $(FLAGS_DEBUG) \
			drd64_marshald_cmd_attach_report.c

drd64_marshald_cmd_detach.o: \
			drd64_marshald_cmd_detach.c $(MARSHALD_HEADER)
	$(CC) -c -o drd64_marshald_cmd_detach.o $(FLAGS_DEBUG) \
			drd64_marshald_cmd_detach.c

drd64_marshald_msg_bootinfo.o: drd64_marshald_msg_bootinfo.c $(MARSHALD_HEADER)
	$(CC) -c -o drd64_marshald_msg_bootinfo.o $(FLAGS_DEBUG) \
		drd64_marshald_msg_bootinfo.c

drd64_marshald_send_connect.o: \
			drd64_marshald_send_connect.c $(MARSHALD_HEADER)
	$(CC) -c -o drd64_marshald_send_connect.o $(FLAGS_DEBUG) \
		drd64_marshald_send_connect.c

drd64_marshald_send_connect_count.o: \
			drd64_marshald_send_connect_count.c $(MARSHALD_HEADER)
	$(CC) -c -o drd64_marshald_send_connect_count.o $(FLAGS_DEBUG) \
		drd64_marshald_send_connect_count.c

drd64_marshald_boot_debugd.o: \
			drd64_marshald_boot_debugd.c \
			$(MARSHALD_HEADER)
	$(CC) -c -o drd64_marshald_boot_debugd.o $(FLAGS_DEBUG) \
		drd64_marshald_boot_debugd.c

drd64_marshald_connect_marshald.o: \
			drd64_marshald_connect_marshald.c \
			$(MARSHALD_HEADER)
	$(CC) -c -o drd64_marshald_connect_marshald.o $(FLAGS_DEBUG) \
		drd64_marshald_connect_marshald.c

drd64_marshald_connect_debugd.o: \
			drd64_marshald_connect_debugd.c \
			$(MARSHALD_HEADER)
	$(CC) -c -o drd64_marshald_connect_debugd.o $(FLAGS_DEBUG) \
		drd64_marshald_connect_debugd.c

#
#

drd64_server_socket.o: drd64_server_socket.c $(SERVER_HEADER)
	$(CC) -c -o drd64_server_socket.o $(FLAGS_DEBUG) drd64_server_socket.c

drd64_server_packet.o: drd64_server_packet.c $(SERVER_HEADER)
	$(CC) -c -o drd64_server_packet.o $(FLAGS_DEBUG) drd64_server_packet.c

drd64_server_recvstatus.o: drd64_server_recvstatus.c $(SERVER_HEADER)
	$(CC) -c -o drd64_server_recvstatus.o $(FLAGS_DEBUG) drd64_server_recvstatus.c

drd64_server_recvsocket.o: drd64_server_recvsocket.c $(SERVER_HEADER)
	$(CC) -c -o drd64_server_recvsocket.o $(FLAGS_DEBUG) drd64_server_recvsocket.c

drd64_server_common.o: drd64_server_common.c $(SERVER_HEADER)
	$(CC) -c -o drd64_server_common.o $(FLAGS_DEBUG) drd64_server_common.c

drd64_server_log.o: drd64_server_log.c $(SERVER_HEADER)
	$(CC) -c -o drd64_server_log.o $(FLAGS_DEBUG) drd64_server_log.c

drd64_server_debuglog.o: drd64_server_debuglog.c $(SERVER_HEADER)
	$(CC) -c -o drd64_server_debuglog.o $(FLAGS_DEBUG) drd64_server_debuglog.c


drd64_common_function.o: drd64_common_function.c
	$(CC) -c -o drd64_common_function.o $(FLAGS_DEBUG) drd64_common_function.c


clean:
	rm -f *.o
	rm -f *.core
	rm -f $(DEBUGD_TARGET)
	rm -f $(MARSHALD_TARGET)

