CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
	  else if [ -x /bin/bash ]; then echo /bin/bash; \
	  else if [ -x /usr/bin/bash ]; then echo /usr/bin/bash; \
	  else if [ -x /usr/local/bin/bash ]; then echo /usr/local/bin/bash; \
	  else echo sh; fi ; fi ; fi ; fi)
TOPDIR	:= $(shell /bin/pwd)

# HOSTCC  	= gcc
HOSTCC 	= unset GCC_EXEC_PREFIX; $(shell if [ -x /usr/bin/gcc ]; \
	then echo /usr/bin/gcc; \
	else if [ -x /usr/bin/cc ]; then echo /usr/bin/cc; \
	else echo gcc; fi ; fi)
HOSTCFLAGS	= -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer

# CROSS_COMPILE 	=
CROSS_COMPILE   = mips-


#
# Include the make variables (CC, etc...)
#
CP      = cp -p
AS		= $(CROSS_COMPILE)as
LD		= $(CROSS_COMPILE)ld
CC		= $(CROSS_COMPILE)gcc
CPP		= $(CC) -E
AR		= $(CROSS_COMPILE)ar cr
NM		= $(CROSS_COMPILE)nm
STRIP		= $(CROSS_COMPILE)strip
OBJCOPY		= $(CROSS_COMPILE)objcopy
OBJDUMP		= $(CROSS_COMPILE)objdump
MAKEFILES	= $(TOPDIR)/.config
GENKSYMS	= /sbin/genksyms
DEPMOD		= /sbin/depmod
MODFLAGS	= -DMODULE
CFLAGS_KERNEL	=
PERL		= perl
TFTPDIR		:= /tftpboot/$(USER)

export	VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION KERNELRELEASE ARCH \
	CONFIG_SHELL TOPDIR HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC \
	CPP AR NM STRIP OBJCOPY OBJDUMP MAKE MAKEFILES GENKSYMS MODFLAGS PERL \
	CONFIG_UCLINUX

all:	do-it-all

#
# standard CFLAGS
#

GENFLAGS := -mno-gpopt -fno-pic -mno-abicalls
GENFLAGS += -fno-builtin -EB -G 0
GENFLAGS += -D_MIPS_ -D__BIG_ENDIAN
GENFLAGS += -I$(TOPDIR)/mips
GENFLAGS += -I$(TOPDIR)

# CFLAGS := $(GENFLAGS) -Wall -Wstrict-prototypes -Wno-trigraphs \
#	  -ggdb -fno-strict-aliasing		#l

CFLAGS := $(GENFLAGS) -Wall -Wno-trigraphs \
	  -g -ggdb -fno-strict-aliasing
CFLAGS += -Os -fno-schedule-insns2

ASFLAGS := $(GENFLAGS) -D__ASSEMBLY__ -DLANGUAGE_ASSEMBLY
ASFLAGS += -x assembler-with-cpp -traditional

export	GENFLAGS CFLAGS ASFLAGS

# FLIB := -L/opt/BRECIS/msp/lib/gcc-lib/mips-linux/3.0.3
# SLIB := -lgcc -lgcc
# LDFLAGS := -N -M -T pmon-examples.lk -nostdlib $(FLIB) -o $@ $(SLIB)

# LDFLAGS := -N -M -T pmon-examples.lk -nostdlib
BBLDFLAGS := -N -M -T mips/mips.lk -nostdlib
LDFLAGS := -N -M -T kernel/kernel.lk -nostdlib

# CAUTION: mips/mips.o must be the first dependency

BBLOADDEPLIBS = mips/mips.a
KERNELDEPLIBS = kernel/kernel.a
KERNELDEPLIBS += util/util.a

do-it-all: bbload bin

bbload: bbload-elf
	$(OBJCOPY) -O binary $< $@

bbload-elf: $(BBLOADDEPLIBS)
	$(LD) $(BBLDFLAGS) $(BBLOADDEPLIBS) $(BBLOADDEPLIBS) -o $@ > $@.map

bin: elf
	$(OBJCOPY) -O binary $< $@
	$(CP) -f bbload $(TFTPDIR)/bbload.flash
	@ls -al $(TFTPDIR)/bbload.flash

elf: $(KERNELDEPLIBS)
	$(LD) $(LDFLAGS) $(KERNELDEPLIBS) $(KERNELDEPLIBS) -o $@ > $@.map

FORCE:

clean: CMD = clean

clean:  $(BBLOADDEPLIBS) $(KERNELDEPLIBS)
	rm -f bbload-elf bbload-elf.map bbload elf elf.map bin

$(BBLOADDEPLIBS) $(KERNELDEPLIBS) : FORCE
	cd $(@D);$(MAKE) $(CMD)

include $(TOPDIR)/rules.mk


