########################################################################
# File:      Makefile
# Creator:   Matt Bogosian <mbogosian@usa.net>
# Copyright: (c)1997, 1998, Matt Bogosian. All rights reserved.
# Description: Makefile for kdbg.
# ID:        $Id: Makefile,v 1.59 1998/06/07 05:12:30 mattb Exp $
# Conventions:
#     Macros - all uppercase letters with referencing done by
#         parenthises.
#         (E.G., $(MYMACRO)).
#     Shell variables - referencing done by braces.
#         (E.G., ${HOME}).
########################################################################


########################################################################
# Build tools and flags
########################################################################

CC			= mwcc
CFLAGS			= -c -w on -O4 $(INCDIRS)

LD			= mwld
LDFLAGS			= -sym on $(LIBDIRS) -lclasses

RCS			= co
RCSFLAGS		= 

INCDIRS			= \
	-I./ \
	-I/local/$(INCDIR) \
	-I"${HOME}"/develop/cpp/ \
	-I"${HOME}"/develop/cpp/$(INCDIR)

LIBDIRS			= \
	-L/boot/develop/lib/ \
	-L/local/lib/ \
	-L"${HOME}"/develop/cpp/


########################################################################
# Build macros
########################################################################

PROJLIBS		= \
	/boot/beos/system/_KERNEL_

BINDIR			= "${HOME}"/config/bin/
DOCDIR			= doc/
INCDIR			= include/
KDRVDIR			= "${HOME}"/config/add-ons/kernel/drivers/
OBJDIR			= obj/
RCSDIR			= RCS/

RWPERMS			= 600
RWXPERMS		= 700

README			= README

DOCFILES		= \
	$(DOCDIR)$(README)

KDBG			= kdbg

KDBGFILES		= \
	$(KDBG).cpp


########################################################################
# Applications/Libraries
########################################################################

PROJDRVR		= kdbg
PROJSCRPT		= $(PROJDRVR).sh
PROJXMAP		= $(PROJDRVR).xMAP
PROJXSYM		= $(PROJDRVR).xSYM


########################################################################
# Objects
########################################################################

OBJS			= $(PROJOBJS)

PROJOBJS		= \
	$(OBJDIR)$(KDBG).o


########################################################################
# Dependencies
########################################################################

all: $(DOCDIR) $(DOCFILES) $(OBJDIR) $(PROJDRVR) $(PROJSCRPT)

install: all $(BINDIR) $(KDRVDIR)
	cp $(PROJDRVR) $(PROJXMAP) $(KDRVDIR)
	cp $(PROJSCRPT) $(BINDIR)

clean: 
	-rm -f $(PROJDRVR) $(PROJXMAP) $(PROJXSYM) $(OBJS) \
		*.out *.o *.xMAP *.xSYM temp* *~ core
	-rm -fr $(OBJDIR) \(Objects\)/

clobber: clean
	@-rm -f *.cpp *.h $(DOCFILES)
	@-rm -fr $(DOCDIR)

$(DOCDIR): 
	@-mkdir $@
	@-chmod $(RWXPERMS) $@

$(PROJDRVR): $(PROJOBJS)
	$(LD) -nodefaults -export pragma -map $(PROJXMAP) -xms -o $@ \
		$(PROJOBJS) $(PROJLIBS) $(LDFLAGS)
	-mimeset -f $@
	@-chmod $(RWPERMS) $(PROJXMAP) $(PROJXSYM)
	@-chmod $(RWXPERMS) $@

$(BINDIR): 
	@-mkdir -p $@
	@-chmod $(RWXPERMS) $@

$(KDRVDIR): 
	@-mkdir -p $@
	@-chmod $(RWXPERMS) $@

$(OBJDIR): 
	@-mkdir $@
	@-chmod $(RWXPERMS) $@

$(OBJDIR)$(KDBG).o: $(KDBGFILES)
	$(CC) $(CFLAGS) -o $@ $(KDBG).cpp
	@-chmod $(RWPERMS) $@


########################################################################
# RCS file dependencies
########################################################################

$(DOCDIR)$(README): 
	$(RCS) $(RCSFLAGS) $(RCSDIR)$@,v $@
