📄 makefile
字号:
#
#
vpath %.c hw : customer : nav : util : cd : font
vpath lib%.a customer/lib
.SUFFIXES:
.PHONY: all gdb clean depends bak bak2 debug tar compress
#
#
ENDIAN := LITTLE
CD_TYPE := COMBO_SVCD
#CD_TYPE := COMBO_SVCD_716
#CD_TYPE := COMBO_VCD
#COMPRESS_TYPE := COMPRESS
#COMPRESS_TYPE := UNCOMPRESS
#COMPRESS_TYPE := COMPRESS_EDO
COMPRESS_TYPE := COMPRESS_MODULE
#COMPRESS_TYPE := COMPRESS_MODULE32_64
ifeq "$(ENDIAN)" "BIG"
######################
#BIG endian
######################
TARGET = mips-ecoff
ENDIAN =
LIBDIR = ECOFF
# GOAL = romB.obj
ifeq "$(CD_TYPE)" "COMBO_SVCD"
LDSCRIPT = csvcd.ld
else
LDSCRIPT = cvcd.ld
endif
CFLAGS_ENDIAN = -DBIG_ENDIAN
else
######################
#LITTLE endian
######################
TARGET = mipsel-elf
ENDIAN = -EL
LIBDIR = SRC/customer/lib
# GOAL = romL.obj
ifeq "$(CD_TYPE)" "COMBO_SVCD"
ifeq "$(COMPRESS_TYPE)" "COMPRESS"
LDSCRIPT = csvcdL.ld
else
ifeq "$(COMPRESS_TYPE)" "COMPRESS_MODULE"
LDSCRIPT = csvcdL_m.ld
else
ifeq "$(COMPRESS_TYPE)" "COMPRESS_MODULE32_64"
LDSCRIPT = m3264.ld
else
LDSCRIPT = csvcdL_u.ld
endif
endif
endif
else
ifeq "$(CD_TYPE)" "COMBO_SVCD_716"
LDSCRIPT = csvcdL716.ld
else
LDSCRIPT = cvcdL.ld
endif
endif
CFLAGS_ENDIAN = -DLITTLE_ENDIAN
endif
#
#
sinclude Makefile.utl
sinclude Makefile.lib
#
#
INCLUDE_DIR = -I. -I.. -Icustomer/h -Icustomer/lib -Inav -Icd -Ihw -I../kernel/AUDIO -I../kernel/Video
CFLAGS_MACHINE = -mlx4080 -mlxr=normal -msoft-float -membedded-data
CFLAGS_C = \
-Os \
-fno-writable-strings \
-fstrength-reduce \
-fthread-jumps \
-W -Wall \
$(INCLUDE_DIR)
# -fforce-addr \
# -fforce-mem \
# -membedded-data \
CFLAGS_S = \
-g1 \
-O2 \
$(INCLUDE_DIR)
CFLAGS_SUPPORT = -DSUPPORT_SUP
CFLAGS_SIM = -DVIDEO_ONLY -DEMULATION -DSIMULATION
CFLAGS_COMPILE = \
-D__EMU__ \
$(CFLAGS_SUPPORT) $(CFLAGS_SIM) $(CFLAGS_ENDIAN)
CFLAGS_MIPS = $(CFLAGS_MACHINE) $(CFLAGS_C) $(CFLAGS_COMPILE)
CFLAGS_MIPS_S = $(CFLAGS_MACHINE) $(CFLAGS_S) $(CFLAGS_COMPILE)
#LIBRARIES = -L$(LIBDIR) -lbits -lfontk -latapi -lm -lmem -lstd
LIBRARIES = -L$(LIBDIR) -lbits -laud -lvideo -lmem -lstd
LDFLAGS_ROM = -nostartfiles -T $(LDSCRIPT) -Lcustomer/lib $(LIBRARIES) --cref -Wl,--sort-common
#
# Sources.
#
SOURCES_KERNEL = \
dma.c \
quant.c \
zigzag.c \
mpegsys.c \
cd.c \
rominit.c \
ogt_rom.c \
jpeg.c \
jpegvar.c \
SOURCES_KERNEL_S = \
vstub.S
SOURCES_MAIN = \
title.c \
sysmain.c \
membuf.c \
membufv.c \
SOURCES_IOP = \
iop.c \
ioprom.c \
SOURCES_VCD = \
$(SOURCES_MAIN) \
osdutil.c \
polling.c \
cderr.c \
macro.c \
reset.c \
hwsetup.c \
genint.c \
cdfunc.c \
osd.c \
ir.c \
ircmd.c \
util.c\
fs9660.c \
framebuf.c \
graph.c \
playback.c \
vpp.c \
cd.c \
cddsp.c \
sio.c \
$(SOURCES_IOP) \
uart.c \
setup.c \
flash.c \
voice.c \
touch.c \
prog.c \
mainproc.c \
font.c \
i2c.c \
dsa.c \
bus.c \
gsm.c \
dbus.c \
dbusmenu.c \
table.c \
moduleld.c \
SOURCES_VCD_S = \
init0.S \
crt0.S \
lexra.S \
endian.S \
#
#
#
DEPS_VCD = \
$(addprefix MIPS/,$(SOURCES_VCD:.c=.d)) \
$(addprefix MIPS/,$(SOURCES_VCD_S:.S=.d)) \
DEPS_AUD = \
$(addprefix MIPS/,$(SOURCES_AUD:.c=.d)) \
$(addprefix MIPS/,$(SOURCES_AUD_S:.S=.d)) \
DEPS_KERNEL = \
$(addprefix MIPS/,$(SOURCES_KERNEL:.c=.d)) \
$(addprefix MIPS/,$(SOURCES_KERNEL_S:.S=.d))
OBJS_VCD = $(DEPS_VCD:.d=.o)
OBJS_AUD = $(DEPS_AUD:.d=.o)
OBJS_KERNEL = $(DEPS_KERNEL:.d=.o)
#
#
SPLITLINE = [0;1;33;40m-------------------------------------------------------------[0m
DEPENDS = $(DEPS_VCD)
#
#
OBJ_GOAL = romav.obj
all: customer/lib/libaud.a customer/lib/libvideo.a $(OBJ_GOAL)
@$(ECHO) $(OBJ_GOAL) made
@echo $(SPLITLINE)
#
#
#
TAR:
mkdir TAR
tar: TAR
-tar -chvf TAR/risc.$(DATE).tar \
Makefile* *.c *.h *.S *.ld *.v \
KERNEL/*.c KERNEL/*.h KERNEL/*.S KERNEL/Makefile \
AUDIO/*.c AUDIO/*.h AUDIO/*.S AUDIO/Makefile
gzip -f TAR/risc.$(DATE).tar
clean:
@echo $(SPLITLINE)
@$(ECHO) remove all generated files
@-$(RM) -f core *.o *.d *.s *.map *.dis *.obj MIPS/*.d MIPS/*.o
depends: $(DEPENDS)
@echo $(SPLITLINE)
@$(ECHO) dependency made
#
# TARGET
#
$(OBJ_GOAL): %.obj: $(OBJS_VCD) $(LDSCRIPT)
@echo $(SPLITLINE)
@$(ECHO) linking...
@$(XCC) $(CFLAGS_MIPS) -o $@ $(OBJS_VCD) $(LDFLAGS_ROM) -Wl,-Map,$*.map
@$(ECHO) packaging...
@$(XOBJDUMP) -j .rom1 -s $@ > $*.dump
@$(XOBJDUMP) -j .ram1 -s $@ >> $*.dump
@$(XOBJDUMP) -j .rom2 -s $@ >> $*.dump
# @$(XOBJDUMP) -j .ramf -s $@ >> $*.dump
@$(DUMP2HEX) < $*.dump > $*.hex
ifeq "$(COMPRESS_TYPE)" "COMPRESS"
@$(HEX2BIN) --byte $*.hex romav1.bin
# @$(ECHO) compress rodata...
@$(XOBJDUMP) -j .rom_rodata -s $@ > rodata.dump
@$(DUMP2HEX) < rodata.dump > rodata.hex
@$(HEX2BIN) --byte rodata.hex rodata.bin
@$ fgzip -9 -c rodata.bin > rodata.bz
@$ rzip rodata.bz rodata.rz
@$(ECHO) appending rodata...
@$ append_ro romav1.bin rodata.rz romav2.bin
# @$(ECHO) compress servo...
@$(XOBJDUMP) -j .rom_servo -s $@ > servo.dump
@$(DUMP2HEX) < servo.dump > servo.hex
@$(HEX2BIN) --byte servo.hex servo.bin
@$ fgzip -9 -c servo.bin > servo.bz
@$ rzip servo.bz servo.rz
@$(ECHO) appending servo...
@$ append_servo romav2.bin servo.rz romav3.bin
# @$(ECHO) compress fudu...
@$(XOBJDUMP) -j .rom_fudu -s $@ > fudu.dump
@$(DUMP2HEX) < fudu.dump > fudu.hex
@$(HEX2BIN) --byte fudu.hex fudu.bin
@$ fgzip -9 -c fudu.bin > fudu.bz
@$ rzip fudu.bz fudu.rz
@$(ECHO) appending fudu...
@$ append_fudu romav3.bin fudu.rz romav4.bin
# @$(ECHO) compress cdrom...
@$(XOBJDUMP) -j .rom_cdrom -s $@ > cdrom.dump
@$(DUMP2HEX) < cdrom.dump > cdrom.hex
@$(HEX2BIN) --byte cdrom.hex cdrom.bin
@$ fgzip -9 -c cdrom.bin > cdrom.bz
@$ rzip cdrom.bz cdrom.rz
@$(ECHO) appending cdrom...
@$ append romav4.bin cdrom.rz romav.bin
else
ifeq "$(COMPRESS_TYPE)" "COMPRESS_EDO"
@$(HEX2BIN) --byte $*.hex romav1.bin
@$(ECHO) compress cdrom...
@$(XOBJDUMP) -j .rom_cdrom -s $@ > cdrom.dump
@$(DUMP2HEX) < cdrom.dump > cdrom.hex
@$(HEX2BIN) --byte cdrom.hex cdrom.bin
@$ fgzip -9 -c cdrom.bin > cdrom.bz
@$ rzip cdrom.bz cdrom.rz
@$(ECHO) appending cdrom...
@$ append romav1.bin cdrom.rz romav.bin
else
ifeq "$(COMPRESS_TYPE)" "COMPRESS_MODULE"
@$(HEX2BIN) --byte $*.hex $*.bin
@$(XOBJDUMP) -j .fs9660_drv -s $@ > tmp.dump
@$(DUMP2HEX) < tmp.dump > tmp.hex
@$(HEX2BIN) --byte tmp.hex tmp.bin
@$ fgzip -9 -c tmp.bin > tmp.bz
@$ rzip tmp.bz tmp.rz
@$(XOBJDUMP) -j .jpg_drv -s $@ > tmp1.dump
@$(DUMP2HEX) < tmp1.dump > tmp1.hex
@$(HEX2BIN) --byte tmp1.hex tmp1.bin
@$ fgzip -9 -c tmp1.bin > tmp1.bz
@$ rzip tmp1.bz tmp1.rz
@$(XOBJDUMP) -j .mp3_drv -s $@ > tmp2.dump
@$(DUMP2HEX) < tmp2.dump > tmp2.hex
@$(HEX2BIN) --byte tmp2.hex tmp2.bin
@$ fgzip -9 -c tmp2.bin > tmp2.bz
@$ rzip tmp2.bz tmp2.rz
@$(XOBJDUMP) -j .fudu_drv -s $@ > tmp3.dump
@$(DUMP2HEX) < tmp3.dump > tmp3.hex
@$(HEX2BIN) --byte tmp3.hex tmp3.bin
@$ fgzip -9 -c tmp3.bin > tmp3.bz
@$ rzip tmp3.bz tmp3.rz
@$(XOBJDUMP) -j .prev_prog_drv -s $@ > tmp4.dump
@$(DUMP2HEX) < tmp4.dump > tmp4.hex
@$(HEX2BIN) --byte tmp4.hex tmp4.bin
@$ fgzip -9 -c tmp4.bin > tmp4.bz
@$ rzip tmp4.bz tmp4.rz
@$(XOBJDUMP) -j .setup_drv -s $@ > tmp5.dump
@$(DUMP2HEX) < tmp5.dump > tmp5.hex
@$(HEX2BIN) --byte tmp5.hex tmp5.bin
@$ fgzip -9 -c tmp5.bin > tmp5.bz
@$ rzip tmp5.bz tmp5.rz
@$(XOBJDUMP) -j .fix_drv -s $@ > tmp6.dump
@$(DUMP2HEX) < tmp6.dump > tmp6.hex
@$(HEX2BIN) --byte tmp6.hex tmp6.bin
@$ fgzip -9 -c tmp6.bin > tmp6.bz
@$ rzip tmp6.bz tmp6.rz
@$ module romav.bin tmp.rz tmp1.rz tmp2.rz tmp3.rz tmp4.rz tmp5.rz tmp6.rz
@$ del tmp*.*
else
ifeq "$(COMPRESS_TYPE)" "COMPRESS_MODULE32_64"
@$(HEX2BIN) --byte $*.hex $*.bin
@$(XOBJDUMP) -j .fs9660_drv -s $@ > tmp.dump
@$(DUMP2HEX) < tmp.dump > tmp.hex
@$(HEX2BIN) --byte tmp.hex tmp.bin
@$ fgzip -9 -c tmp.bin > tmp.bz
@$ rzip tmp.bz tmp.rz
@$(XOBJDUMP) -j .jpg_drv -s $@ > tmp1.dump
@$(DUMP2HEX) < tmp1.dump > tmp1.hex
@$(HEX2BIN) --byte tmp1.hex tmp1.bin
@$ fgzip -9 -c tmp1.bin > tmp1.bz
@$ rzip tmp1.bz tmp1.rz
@$(XOBJDUMP) -j .mp3_drv -s $@ > tmp2.dump
@$(DUMP2HEX) < tmp2.dump > tmp2.hex
@$(HEX2BIN) --byte tmp2.hex tmp2.bin
@$ fgzip -9 -c tmp2.bin > tmp2.bz
@$ rzip tmp2.bz tmp2.rz
@$(XOBJDUMP) -j .fudu_drv -s $@ > tmp3.dump
@$(DUMP2HEX) < tmp3.dump > tmp3.hex
@$(HEX2BIN) --byte tmp3.hex tmp3.bin
@$ fgzip -9 -c tmp3.bin > tmp3.bz
@$ rzip tmp3.bz tmp3.rz
@$(XOBJDUMP) -j .prev_prog_drv -s $@ > tmp4.dump
@$(DUMP2HEX) < tmp4.dump > tmp4.hex
@$(HEX2BIN) --byte tmp4.hex tmp4.bin
@$ fgzip -9 -c tmp4.bin > tmp4.bz
@$ rzip tmp4.bz tmp4.rz
@$(XOBJDUMP) -j .setup_drv -s $@ > tmp5.dump
@$(DUMP2HEX) < tmp5.dump > tmp5.hex
@$(HEX2BIN) --byte tmp5.hex tmp5.bin
@$ fgzip -9 -c tmp5.bin > tmp5.bz
@$ rzip tmp5.bz tmp5.rz
@$(XOBJDUMP) -j .fix_drv -s $@ > tmp6.dump
@$(DUMP2HEX) < tmp6.dump > tmp6.hex
@$(HEX2BIN) --byte tmp6.hex tmp6.bin
@$ fgzip -9 -c tmp6.bin > tmp6.bz
@$ rzip tmp6.bz tmp6.rz
@$ module romav.bin tmp.rz tmp1.rz tmp2.rz tmp3.rz tmp4.rz tmp5.rz tmp6.rz
@$ del tmp*.*
else
@$(HEX2BIN) --byte $*.hex $*.bin
endif
endif
endif
endif
# @$(ECHO) disassembling...
# @$(XOBJDUMP) -d --source $@ > $*.dis
#
# AUDIO
#
libaud.a: $(OBJS_AUD)
$(XAR) -cr libaud.a $(OBJS_AUD)
#
# DEPEND RULES
#
sinclude $(DEPENDS)
#
# DEFAULT RULES
#
MIPS:
@echo $(SPLITLINE)
mkdir MIPS
MIPS/%.d : %.c
@echo $(SPLITLINE)
@$(ECHO) generating dependency for $<
@$(XCC) $(CFLAGS_MIPS) -M $< > depends
@$(PERL) customer/pl/makedep.pl depends $@
MIPS/%.d : %.S
@echo $(SPLITLINE)
@$(ECHO) generating dependency for $<
@$(XCC) $(CFLAGS_MIPS) -M $< > depends
@$(PERL) customer/pl/makedep.pl depends $@
MIPS/%.o : MIPS/%.d
MIPS/sysmain.o MIPS/graph.o MIPS/osd.o MIPS/gsm.o MIPS/voice.o : MIPS/%.o : %.c
@echo $(SPLITLINE)
@$(ECHO) cross-compiling $< to MIPS
@$(XCC) $(CFLAGS_MIPS) -c -o $@ -G 0 $<
MIPS/%.o : %.c
@echo $(SPLITLINE)
@$(ECHO) cross-compiling $< to MIPS
@$(XCC) $(CFLAGS_MIPS) -c -o $@ $<
MIPS/%.o : %.S
@echo $(SPLITLINE)
@$(ECHO) cross-compiling $< to MIPS
@$(XCC) $(CFLAGS_MIPS_S) -c -o $@ $<
MIPS/%.s : %.c
@echo $(SPLITLINE)
@$(ECHO) cross-compiling $< to assembly
@$(XCC) $(CFLAGS_MIPS) -S -fverbose-asm -o $@ $<
MIPS/%.i : %.c
@echo $(SPLITLINE)
@$(ECHO) cross-compiling $< to assembly
@$(XCC) $(CFLAGS_MIPS) -E -o $@ $<
MIPS/%.dis : MIPS/%.o
@echo $(SPLITLINE)
@$(XOBJDUMP) --source -d --syms $< > $@
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -