⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makefile

📁 C语言编写的监控中心终端程序。基于GPRS上传收发数据功能
💻
字号:
#
#

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 = -------------------------------------------------------------

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 + -