158 lines
3.9 KiB
Makefile
158 lines
3.9 KiB
Makefile
|
#export LD_PRELOAD =
|
||
|
|
||
|
MEM_DEF= -DMEMSTART=0x80040000 -DMEMSIZE=0x10000
|
||
|
|
||
|
AFLAGS = -O2 -fno-pic -mno-abicalls -fno-builtin -mips1 -I include -msoft-float
|
||
|
|
||
|
export CROSS_COMPILE ?= mipsel-linux-gnu-
|
||
|
export MEM_DEF
|
||
|
|
||
|
OBJDIR = obj
|
||
|
ALLBENCH.a = bench/bitcount/bitcount.a
|
||
|
ALLBENCH.a += bench/bubble_sort/bubble_sort.a
|
||
|
ALLBENCH.a += bench/coremark/coremark.a
|
||
|
ALLBENCH.a += bench/crc32/crc32.a
|
||
|
ALLBENCH.a += bench/dhrystone/dhrystone.a
|
||
|
ALLBENCH.a += bench/quick_sort/quick_sort.a
|
||
|
ALLBENCH.a += bench/select_sort/select_sort.a
|
||
|
ALLBENCH.a += bench/sha/sha.a
|
||
|
ALLBENCH.a += bench/stream_copy/stream_copy.a
|
||
|
ALLBENCH.a += bench/stringsearch/stringsearch.a
|
||
|
|
||
|
all:
|
||
|
make bitcount
|
||
|
make bubble_sort
|
||
|
make coremark
|
||
|
make crc32
|
||
|
make dhrystone
|
||
|
make quick_sort
|
||
|
make select_sort
|
||
|
make sha
|
||
|
make stream_copy
|
||
|
make stringsearch
|
||
|
make allbench
|
||
|
|
||
|
|
||
|
bitcount: AFLAGS+=-DCMP_FUNC=1
|
||
|
bitcount: start.o
|
||
|
$(eval export BENCH = $@)
|
||
|
@echo $(AFLAGS)
|
||
|
make target_bench
|
||
|
|
||
|
bubble_sort: AFLAGS+=-DCMP_FUNC=2
|
||
|
bubble_sort: start.o
|
||
|
$(eval export BENCH = $@)
|
||
|
@echo $(AFLAGS)
|
||
|
make target_bench
|
||
|
|
||
|
coremark: AFLAGS+=-DCMP_FUNC=3
|
||
|
coremark: start.o
|
||
|
$(eval export BENCH = $@)
|
||
|
make target_bench
|
||
|
|
||
|
crc32: AFLAGS+=-DCMP_FUNC=4
|
||
|
crc32: start.o
|
||
|
$(eval export BENCH = $@)
|
||
|
make target_bench
|
||
|
|
||
|
dhrystone: AFLAGS+=-DCMP_FUNC=5
|
||
|
dhrystone: start.o
|
||
|
$(eval export BENCH = $@)
|
||
|
make target_bench
|
||
|
|
||
|
quick_sort: AFLAGS+=-DCMP_FUNC=6
|
||
|
quick_sort: start.o
|
||
|
$(eval export BENCH = $@)
|
||
|
make target_bench
|
||
|
|
||
|
select_sort: AFLAGS+=-DCMP_FUNC=7
|
||
|
select_sort: start.o
|
||
|
$(eval export BENCH = $@)
|
||
|
make target_bench
|
||
|
|
||
|
sha: AFLAGS+=-DCMP_FUNC=8
|
||
|
sha: start.o
|
||
|
$(eval export BENCH = $@)
|
||
|
make target_bench
|
||
|
|
||
|
stream_copy: AFLAGS+=-DCMP_FUNC=9
|
||
|
stream_copy: start.o
|
||
|
$(eval export BENCH = $@)
|
||
|
make target_bench
|
||
|
|
||
|
stringsearch: AFLAGS+=-DCMP_FUNC=10
|
||
|
stringsearch: start.o
|
||
|
$(eval export BENCH = $@)
|
||
|
make target_bench
|
||
|
|
||
|
allbench: AFLAGS+=-DCMP_FUNC=0
|
||
|
allbench: start.o
|
||
|
$(eval export BENCH_DIR = $@)
|
||
|
$(eval export BENCH_LIB = $(ALLBENCH.a))
|
||
|
make -C bench/bitcount
|
||
|
make -C bench/bubble_sort
|
||
|
make -C bench/coremark
|
||
|
make -C bench/crc32
|
||
|
make -C bench/dhrystone
|
||
|
make -C bench/quick_sort
|
||
|
make -C bench/select_sort
|
||
|
make -C bench/sha
|
||
|
make -C bench/stream_copy
|
||
|
make -C bench/stringsearch
|
||
|
mkdir -p $(OBJDIR)/allbench
|
||
|
make generate
|
||
|
|
||
|
libtinyc.a :
|
||
|
make -C lib $@
|
||
|
|
||
|
target_bench:
|
||
|
$(eval export BENCH_DIR = $(BENCH))
|
||
|
$(eval export BENCH_LIB = bench/$(BENCH)/$(BENCH).a)
|
||
|
make -C bench/$(BENCH_DIR)
|
||
|
mkdir -p $(OBJDIR)/$(BENCH_DIR)
|
||
|
make generate
|
||
|
|
||
|
generate: inst_data.bin convert
|
||
|
./convert inst_data.bin $(OBJDIR)/$(BENCH_DIR)/
|
||
|
rm start.o
|
||
|
|
||
|
inst_data.bin: main.elf
|
||
|
${CROSS_COMPILE}objcopy -O binary -j .text -j .data $(OBJDIR)/$(BENCH_DIR)/$< $(OBJDIR)/$(BENCH_DIR)/$@
|
||
|
|
||
|
#main.data: main.elf
|
||
|
# ${CROSS_COMPILE}objcopy -O binary -j .data $(OBJDIR)/$(BENCH_DIR)/$< $(OBJDIR)/$(BENCH_DIR)/$@
|
||
|
|
||
|
main.elf: start.o libtinyc.a bin.lds
|
||
|
${CROSS_COMPILE}ld -g -T bin.lds start.o $(BENCH_LIB) lib/libtinyc.a -o $(OBJDIR)/$(BENCH_DIR)/$@
|
||
|
${CROSS_COMPILE}objdump -alD $(OBJDIR)/$(BENCH_DIR)/$@ > $(OBJDIR)/$(BENCH_DIR)/test.s
|
||
|
|
||
|
|
||
|
bin.lds: bin.lds.S
|
||
|
${CROSS_COMPILE}gcc -E -P -Umips -D_LOADER -U_MAIN $(MEM_DEF) $< -o $@
|
||
|
|
||
|
start.o: start.S
|
||
|
${CROSS_COMPILE}gcc $(AFLAGS) -c $< -nostdinc -nostdlib
|
||
|
|
||
|
convert: convert.c
|
||
|
gcc -o convert convert.c
|
||
|
clean:
|
||
|
rm -f *.o *.bin *.elf *.a testbin *.s *.vlog *.coe *.data *.mif
|
||
|
rm -rf obj
|
||
|
make -C lib clean
|
||
|
make -C bench clean
|
||
|
reset:
|
||
|
make clean
|
||
|
rm -f bin.lds convert
|
||
|
|
||
|
help:
|
||
|
@echo "################################################################"
|
||
|
@echo "### help for compiling memory game"
|
||
|
@echo "################################################################"
|
||
|
@echo "### options:"
|
||
|
@echo "### make : get compiled result, which is saved in ./obj"
|
||
|
@echo "### make clean: remove *.o, *.a, and ./obj"
|
||
|
@echo "### make reset: "make clean" and remove convert, bin.lds"
|
||
|
@echo "### make help : show help information"
|
||
|
@echo "###############################################################"
|
||
|
#-include rules.make
|