
ROOT_PATH = ..

ifeq ($(DEGENV),)
DEGENV = RAM
endif

ifeq ($(DEBUG),)
DEBUG  = 0
endif

#
#  ֥ȥե̾γĥҤ
#
OBJEXT = exe

#
#  ֥ȥե̾
#
OBJNAME = led_count
ifdef OBJEXT
	OBJFILE = $(OBJNAME).$(OBJEXT)
else
	OBJFILE = $(OBJNAME)
endif

CC  =	arm-elf-gcc
CXX	=	arm-elf-g++
AR  =	arm-elf-ar
NM  =	arm-elf-nm
OBJCOPY = arm-elf-objcopy
OBJDUMP = arm-elf-objdump

ifeq ($(DEGENV),ROM)
LDSCRIPT = $(ROOT_PATH)/lpc2388_rom.ld
else
LDSCRIPT = $(ROOT_PATH)/lpc2388_ram.ld
endif

COPTS   = -mcpu=arm7tdmi -Wa,--gstabs -mthumb -mthumb-interwork -mlittle-endian -O2 -g -Wall
CDEFS   = 
INCLUDES = -I.

TARGET_DIR = .
UTASK_DIR = $(ROOT_PATH)
vpath %.c $(UTASK_DIR)
vpath %.S $(UTASK_DIR)

COBJS = $(OBJNAME).o

AOBJS = start.o

ifeq ($(DEGENV),ROM)
CDEFS  := $(CDEFS) -DROM_EXEC=1
endif

ifeq ($(DEBUG),1)
COBJS  := $(COBJS) lpc2388.o
CDEFS  := $(CDEFS) -DDEBUG
endif

INCLUDES := -I$(UTASK_DIR) $(INCLUDES)
CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
LDFLAGS := -nostdlib $(LDFLAGS)

ifdef LDSCRIPT
    LDFLAGS := $(LDFLAGS) -T $(LDSCRIPT)
endif

all:	$(OBJFILE)

$(OBJFILE):	$(COBJS) $(AOBJS)
	$(CC)	$(CFLAGS) $(LDFLAGS) -o $(OBJFILE) \
			$(AOBJS) $(COBJS) -lc -lgcc
	$(NM)	$(OBJFILE) > $(OBJNAME).syms
	$(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
	$(OBJCOPY) -O ihex -S $(OBJFILE) $(OBJNAME).hex
	$(OBJDUMP) -t -h $(OBJFILE) > $(OBJNAME).map
	$(OBJDUMP) -lD --disassemble --source $(OBJFILE) > $(OBJNAME).lst

$(COBJS): %.o: %.c
	$(CC) -c $(CFLAGS) $<

$(AOBJS): %.o: %.S
	$(CC) -c $(CFLAGS) $<

# rules

clean:
	rm -f *.o
	rm -f $(OBJFILE) *.syms *.srec *.hex *.map *.lst


