# *****************************************************************************
# * Copyright (c) 2004, 2007 IBM Corporation
# * All rights reserved.
# * This program and the accompanying materials
# * are made available under the terms of the BSD License
# * which accompanies this distribution, and is available at
# * http://www.opensource.org/licenses/bsd-license.php
# *
# * Contributors:
# *     IBM Corporation - initial implementation
# ****************************************************************************/

TOP=$(shell pwd)
export TOP
include $(TOP)/make.rules
    
OBJS	=  kernel/kernel.o oflib/oflib.o libc/libc-glue.o app/app.o
.PHONY : subdirs clean depend mrproper

client : subdirs $(OBJS) $(LIBCMNDIR)/libc.a
	$(LD) $(LDFLAGS) -o $@ -Tclient.lds $(OBJS) $(LIBCMNDIR)/libc.a
	$(OBJDUMP) -DSsx $@ > $@.dis
	cp $@ $@.unstripped
	$(STRIP) $@

sec-client : subdirs $(OBJS) $(LIBCMNDIR)/libc.a
	$(LD) $(LDFLAGS) -o $@ -Tsec-client.lds $(OBJS) $(LIBCMNDIR)/libc.a

subdirs : 
	@for dir in $(dir $(OBJS)); do \
	  $(MAKE) -C $$dir || exit 1; \
	done

$(LIBCMNDIR)/libc.a:
	$(MAKE) -C $(LIBCMNDIR) libc

clean: 
	@for dir in $(dir $(OBJS)); do \
	  $(MAKE) -C $$dir clean; \
	done
	rm -f $(OBJS) client diag netboot sec-client net-diag \
		*.dis client.unstripped

mrproper : clean
	$(MAKE) -C app mrproper
	$(MAKE) -C libc mrproper
	$(MAKE) -C kernel mrproper
	$(MAKE) -C oflib mrproper
	find -name .*.bak | xargs rm -rf

distclean: mrproper

depend :
	$(MAKE) -C app depend
	$(MAKE) -C libc depend
	$(MAKE) -C kernel depend
	$(MAKE) -C oflib depend
