#
# $Id: Makefile,v 1.6 2001/07/24 15:36:38 malekith Exp $
#

arch := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
raid := yes
info := $(shell echo by `id -un`@`hostname` on `date`)
xobj = 	obj_common.o obj_reloc.o obj_load.o insmod.o logger.o \
	modstat.o sys_nim.o string.o vsprintf.o ctype.o alloc.o \
	main.o syscall.o start.o \
	obj_$(arch).o raid.o
obj = $(addprefix o/,$(xobj))

CPPFLAGS = -Iinsmod/h -DELF_MACHINE_H='"elf_$(arch).h"' \
	-DARCH='"$(arch)"' -DINFO='"$(info)"'
DEBUG = -g
CFLAGS = -Wall $(DEBUG)
LIBS = 
target = bsp
comp = $(CC) $(CPPFLAGS) $(CFLAGS) -c
gccdir = $(shell gcc -v 2>&1 | grep from | sed -e 's/.*from //' -e 's|/specs||')

ifeq ($(arch),sparc64)
LIBS += /usr/lib/libc.a $(gccdir)/libgcc.a
endif

ifeq ($(arch),alpha)
LIBS += /usr/lib/libc.a
endif

all: $(target)

$(target): o $(obj)
	ld $(DEBUG) -o $(target) $(obj) $(LIBS)

ifeq ($(raid),yes)
o/raid.o: o
	make -C raidstart
	cp raidstart/raid.o o/
endif

o:
	mkdir o

clean:
	rm -f $(target) core 
	rm -rf o
	make -C raidstart clean

small:
	$(MAKE) clean
	$(MAKE) CFLAGS="$(CFLAGS) -Os" $(target)
	strip -R .comment -R .note $(target)
	@ls -l $(target)

o/%.o: %.c
	$(comp) $< -o $@

o/%.o: insmod/%.c
	$(comp) $< -o $@
