# Copyright (c) 2003, Adam Dunkels.
# 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. 
# 3. The name of the author may not be used to endorse or promote
#    products derived from this software without specific prior
#    written permission.  
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 THE AUTHOR 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.  
#
# This file is part of the Contiki desktop environment
#
# $Id: Makefile.programs,v 1.8 2005/03/31 21:55:14 oliverschmidt Exp $
#

all: loader-arch-module.o contiki-labels.o \
     lancegs.drv \
     uther.drv \
     about.prg \
     calc.prg \
     config.prg \
     configedit.prg \
     dhcp.prg \
     irc.prg \
     memstat.prg \
     processes.prg \
     telnet.prg \
     welcome.prg \
     wget.prg \
     www.prg

SYS=apple2enh

include $(CONTIKICC65)/Makefile.common 

AFLAGS:=-t $(SYS)

CFLAGS:=$(CFLAGSCOMMON) \
        -DWITH_ASCII -DWITH_UIP -DWITH_LOADER_ARCH -DWITH_ETHERNET

lancegs.drv: lancegs-drv.o lan91c96.o uip_arp.o

uther.drv: uther-drv.o cs8900a.o uther-drv-asm.o uip_arp.o

config.prg: config.o cfs-mli.o

configedit.prg: configedit.o cfs-mli.o

dhcp.prg: dhcp.o dhcpc.o lc-asm.o

irc.prg: irc.o ircc.o psock.o uipbuf.o lc-asm.o ircc-strings.o

telnet.prg: $(TELNET)

wget.prg: wget.o webclient.o http-strings.o http-user-agent-string.o

www.prg: $(WWW)
