|
|
SRC = dhry.c dhry_2.c start.S
|
SRC = dhry.c dhry_2.c start.S
|
TGT = dhry
|
TGT = dhry
|
LDS = sections.lds
|
LDS = sections.lds
|
USE_MINI_LIBC = 1
|
USE_MINI_LIBC = 1
|
|
|
LIBC_OBJ = ../mini-libc/printf.o ../mini-libc/libc_asm.o ../mini-libc/memcpy.o
|
LIBC_OBJ = ../mini-libc/printf.o ../mini-libc/libc_asm.o ../mini-libc/memcpy.o
|
DEP += ../include/amber_registers.h ../mini-libc/stdio.h
|
DEP += ../include/amber_registers.h ../mini-libc/stdio.h
|
TOOLSPATH = ../tools
|
TOOLSPATH = ../tools
|
AMBER_CROSSTOOL ?= amber-crosstool-not-defined
|
AMBER_CROSSTOOL ?= amber-crosstool-not-defined
|
|
|
AS = $(AMBER_CROSSTOOL)-as
|
AS = $(AMBER_CROSSTOOL)-as
|
CC = $(AMBER_CROSSTOOL)-gcc
|
CC = $(AMBER_CROSSTOOL)-gcc
|
CXX = $(AMBER_CROSSTOOL)-g++
|
CXX = $(AMBER_CROSSTOOL)-g++
|
AR = $(AMBER_CROSSTOOL)-ar
|
AR = $(AMBER_CROSSTOOL)-ar
|
LD = $(AMBER_CROSSTOOL)-ld
|
LD = $(AMBER_CROSSTOOL)-ld
|
DS = $(AMBER_CROSSTOOL)-objdump
|
DS = $(AMBER_CROSSTOOL)-objdump
|
OC = $(AMBER_CROSSTOOL)-objcopy
|
OC = $(AMBER_CROSSTOOL)-objcopy
|
ELF = $(TOOLSPATH)/amber-elfsplitter
|
ELF = $(TOOLSPATH)/amber-elfsplitter
|
BMF = $(TOOLSPATH)/amber-memparams.sh
|
BMF32 = ../tools/amber-memparams32.sh
|
|
BMF128 = ../tools/amber-memparams128.sh
|
|
|
MMP = $(addsuffix _memparams.v, $(basename $(TGT)))
|
MMP32 = $(addsuffix _memparams32.v, $(basename $(TGT)))
|
|
MMP128 = $(addsuffix _memparams128.v, $(basename $(TGT)))
|
MEM = $(addsuffix .mem, $(basename $(TGT)))
|
MEM = $(addsuffix .mem, $(basename $(TGT)))
|
DIS = $(addsuffix .dis, $(basename $(TGT)))
|
DIS = $(addsuffix .dis, $(basename $(TGT)))
|
|
|
ifdef USE_MINI_LIBC
|
ifdef USE_MINI_LIBC
|
OBJ = $(addsuffix .o, $(basename $(SRC))) $(LIBC_OBJ)
|
OBJ = $(addsuffix .o, $(basename $(SRC))) $(LIBC_OBJ)
|
else
|
else
|
OBJ = $(addsuffix .o, $(basename $(SRC)))
|
OBJ = $(addsuffix .o, $(basename $(SRC)))
|
endif
|
endif
|
|
|
|
|
ifdef LDS
|
ifdef LDS
|
TLDS = -T $(LDS)
|
TLDS = -T $(LDS)
|
else
|
else
|
TLDS =
|
TLDS =
|
endif
|
endif
|
|
|
ifndef TGT
|
ifndef TGT
|
TGT = aout.elf
|
TGT = aout.elf
|
endif
|
endif
|
|
|
ifdef MIN_SIZE
|
ifdef MIN_SIZE
|
# optimize for size
|
# optimize for size
|
OPTIMIZE = -Os
|
OPTIMIZE = -Os
|
else
|
else
|
# optimize for speed
|
# optimize for speed
|
OPTIMIZE = -O3
|
OPTIMIZE = -O3
|
endif
|
endif
|
|
|
MAP = $(addsuffix .map, $(basename $(TGT)))
|
MAP = $(addsuffix .map, $(basename $(TGT)))
|
|
|
ASFLAGS = -I../include
|
ASFLAGS = -I../include
|
CFLAGS = -c $(OPTIMIZE) -march=armv2a -mno-thumb-interwork -ffreestanding -I../include
|
CFLAGS = -c $(OPTIMIZE) -march=armv2a -mno-thumb-interwork -ffreestanding -I../include
|
DSFLAGS = -C -S -EL
|
DSFLAGS = -C -S -EL
|
LDFLAGS = -Bstatic -Map $(MAP) --strip-debug --fix-v4bx
|
LDFLAGS = -Bstatic -Map $(MAP) --strip-debug --fix-v4bx
|
|
|
|
|
ifdef USE_MINI_LIBC
|
ifdef USE_MINI_LIBC
|
debug: mini-libc $(ELF) $(MMP) $(DIS)
|
debug: mini-libc $(ELF) $(MMP) $(DIS)
|
else
|
else
|
debug: $(ELF) $(MMP) $(DIS)
|
debug: $(ELF) $(MMP) $(DIS)
|
endif
|
endif
|
|
|
$(MMP): $(MEM)
|
$(MMP): $(MEM)
|
$(BMF) $(MEM) $(MMP)
|
$(BMF32) $(MEM) $(MMP32)
|
|
|
$(MEM): $(TGT)
|
$(MEM): $(TGT)
|
$(ELF) $(TGT) > $(MEM)
|
$(ELF) $(TGT) > $(MEM)
|
|
|
$(TGT): $(OBJ)
|
$(TGT): $(OBJ)
|
$(LD) $(LDFLAGS) -o $(TGT) $(TLDS) $(OBJ)
|
$(LD) $(LDFLAGS) -o $(TGT) $(TLDS) $(OBJ)
|
$(OC) -R .comment -R .note $(TGT)
|
$(OC) -R .comment -R .note $(TGT)
|
|
|
$(OBJ): $(DEP)
|
$(OBJ): $(DEP)
|
|
|
mini-libc:
|
mini-libc:
|
$(MAKE) -s -C ../mini-libc MIN_SIZE=1
|
$(MAKE) -s -C ../mini-libc MIN_SIZE=1
|
|
|
$(ELF):
|
$(ELF):
|
$(MAKE) -C $(TOOLSPATH)
|
$(MAKE) -C $(TOOLSPATH)
|
|
|
$(DIS): $(TGT)
|
$(DIS): $(TGT)
|
$(DS) $(DSFLAGS) $^ > $@
|
$(DS) $(DSFLAGS) $^ > $@
|
|
|
clean:
|
clean:
|
@rm -rfv *.o *.elf *.dis *.map *.mem *.v $(MMP) dhry
|
@rm -rfv *.o *.elf *.dis *.map *.mem *.v $(MMP) dhry
|
|
|
|
|