
MAKE = make

FLAGS_DEBUG = -g

DEAMON_DIR =	deamon

DEBUGD_TARGET = drd64_debugd
DEBUGD_DIR =	deamon

MARSHALD_TARGET = drd64_marshald
MARSHALD_DIR =	deamon

LIBDRD64_TARGET = libdrd64.a
LIBDRD64_DIR = libdrd64

LIBINTEL64ASM_TARGET = libintel64asm.a
LIBINTEL64ASM_DIR = libintel64asm

LIBBROWNIE_TARGET = libbrownie.a
LIBBROWNIE_DIR = libbrownie

LIBGOBLIN_TARGET = libgoblin.a
LIBGOBLIN_DIR = libgoblin

TESTPG01_TARGET = count
TESTPG02_TARGET = dwarftest
TESTPG_DIR = testpg

TEST_TARGET = drdrv1
TEST_OBJS = drdrv1.o
TEST_LIBS = $(LIBDRD64_TARGET) $(LIBBROWNIE_TARGET) $(LIBGOBLIN)

all:	$(LIBBROWNIE_TARGET) \
		$(DEBUGD_TARGET) \
		$(MARSHALD_TARGET) \
		$(LIBDRD64_TARGET) \
		$(LIBGOBLIN_TARGET) \
		$(LIBINTEL64ASM_TARGET) \
		$(TESTPG01_TARGET) \
		$(TESTPG02_TARGET) \
		$(TEST_TARGET)

$(LIBBROWNIE_TARGET):
	$(MAKE) -C $(LIBBROWNIE_DIR) all

$(DEBUGD_TARGET):
	$(MAKE) -C $(DEBUGD_DIR) $(DEBUGD_TARGET)

$(MARSHALD_TARGET):
	$(MAKE) -C $(MARSHALD_DIR) $(MARSHALD_TARGET)

$(LIBINTEL64ASM_TARGET):
	$(MAKE) -C $(LIBINTEL64ASM_DIR) all

$(LIBDRD64_TARGET):
	$(MAKE) -C $(LIBDRD64_DIR) all

$(LIBGOBLIN_TARGET):
	$(MAKE) -C $(LIBGOBLIN_DIR) all

$(TESTPG01_TARGET):
	$(MAKE) -C $(TESTPG_DIR) $(TESTPG01_TARGET)

$(TESTPG02_TARGET):
	$(MAKE) -C $(TESTPG_DIR) $(TESTPG02_TARGET)


$(TEST_TARGET): $(TEST_OBJS)
	gcc -o $(TEST_TARGET) $(FLAGS_DEBUG) $(TEST_OBJS) $(TEST_LIBS)

$(TEST_OBJS): drdrv1.c
	gcc -c -o $(TEST_OBJS) $(FLAGS_DEBUG) drdrv1.c


clean:
	rm -f *.o
	rm -f $(LIBBROWNIE_TARGET)
	rm -f $(DEBUGD_TARGET)
	rm -f $(MARSHALD_TARGET)
	rm -f $(LIBINTEL64ASM_TARGET)
	rm -f $(LIBDRD64_TARGET)
	rm -f $(LIBGOBLIN_TARGET)
	rm -f $(TESTPG01_TARGET)
	rm -f $(TESTPG02_TARGET)
	rm -f $(TEST_TARGET)
	rm -f *.core
	$(MAKE) -C $(LIBBROWNIE_DIR) clean
	$(MAKE) -C $(LIBINTEL64ASM_DIR) clean
	$(MAKE) -C $(LIBDRD64_DIR) clean
	$(MAKE) -C $(LIBGOBLIN_DIR) clean
	$(MAKE) -C $(DEAMON_DIR) clean
	$(MAKE) -C $(TESTPG_DIR) clean

backup:
	make clean
	./drd64_backup.sh

update:
	make clean
	cvs update
	make

