# $Id$ # Makefile to generate or copy the latest register definitions # and related datastructures and helpermacros. # The offical place for these files is probably at: RELEASE ?= r1_alfa5 IOPOFFICIAL_INCDIR = /n/asic/projects/guinness/releases/$(RELEASE)/design/top/sw/include/ IOPROCDIR = /n/asic/design/io/io_proc/rtl IOPROCINCL_FILES = IOPROCINCL_FILES2= IOPROCINCL_FILES += iop_crc_par_defs.h IOPROCINCL_FILES += iop_dmc_in_defs.h IOPROCINCL_FILES += iop_dmc_out_defs.h IOPROCINCL_FILES += iop_fifo_in_defs.h IOPROCINCL_FILES += iop_fifo_in_xtra_defs.h IOPROCINCL_FILES += iop_fifo_out_defs.h IOPROCINCL_FILES += iop_fifo_out_xtra_defs.h IOPROCINCL_FILES += iop_mpu_defs.h IOPROCINCL_FILES2+= iop_mpu_macros.h IOPROCINCL_FILES2+= iop_reg_space.h IOPROCINCL_FILES += iop_sap_in_defs.h IOPROCINCL_FILES += iop_sap_out_defs.h IOPROCINCL_FILES += iop_scrc_in_defs.h IOPROCINCL_FILES += iop_scrc_out_defs.h IOPROCINCL_FILES += iop_spu_defs.h # in guiness/ IOPROCINCL_FILES += iop_sw_cfg_defs.h IOPROCINCL_FILES += iop_sw_cpu_defs.h IOPROCINCL_FILES += iop_sw_mpu_defs.h IOPROCINCL_FILES += iop_sw_spu_defs.h # IOPROCINCL_FILES += iop_timer_grp_defs.h IOPROCINCL_FILES += iop_trigger_grp_defs.h # in guiness/ IOPROCINCL_FILES += iop_version_defs.h IOPROCASMINCL_FILES = $(patsubst %_defs.h,%_defs_asm.h,$(IOPROCINCL_FILES)) IOPROCASMINCL_FILES+= iop_reg_space_asm.h IOPROCREGDESC = IOPROCREGDESC += $(IOPROCDIR)/iop_crc_par.r #IOPROCREGDESC += $(IOPROCDIR)/iop_crc_ser.r IOPROCREGDESC += $(IOPROCDIR)/iop_dmc_in.r IOPROCREGDESC += $(IOPROCDIR)/iop_dmc_out.r IOPROCREGDESC += $(IOPROCDIR)/iop_fifo_in.r IOPROCREGDESC += $(IOPROCDIR)/iop_fifo_in_xtra.r IOPROCREGDESC += $(IOPROCDIR)/iop_fifo_out.r IOPROCREGDESC += $(IOPROCDIR)/iop_fifo_out_xtra.r IOPROCREGDESC += $(IOPROCDIR)/iop_mpu.r IOPROCREGDESC += $(IOPROCDIR)/iop_sap_in.r IOPROCREGDESC += $(IOPROCDIR)/iop_sap_out.r IOPROCREGDESC += $(IOPROCDIR)/iop_scrc_in.r IOPROCREGDESC += $(IOPROCDIR)/iop_scrc_out.r IOPROCREGDESC += $(IOPROCDIR)/iop_spu.r IOPROCREGDESC += $(IOPROCDIR)/guinness/iop_sw_cfg.r IOPROCREGDESC += $(IOPROCDIR)/guinness/iop_sw_cpu.r IOPROCREGDESC += $(IOPROCDIR)/guinness/iop_sw_mpu.r IOPROCREGDESC += $(IOPROCDIR)/guinness/iop_sw_spu.r IOPROCREGDESC += $(IOPROCDIR)/iop_timer_grp.r IOPROCREGDESC += $(IOPROCDIR)/iop_trigger_grp.r IOPROCREGDESC += $(IOPROCDIR)/guinness/iop_version.r RDES2C = /n/asic/bin/rdes2c RDES2C = /n/asic/design/tools/rdesc/rdes2c RDES2INTR = /n/asic/design/tools/rdesc/rdes2intr RDES2TXT = /n/asic/design/tools/rdesc/rdes2txt ## all - Just print help - you probably want to do 'make gen' all: help ## help - This help help: @grep '^## ' Makefile ## gen - Generate include files gen: $(IOPROCINCL_FILES) $(IOPROCINCL_FILES2) $(IOPROCASMINCL_FILES) echo "INCL: $(IOPROCINCL_FILES)" echo "INCL2: $(IOPROCINCL_FILES2)" echo "ASMINCL: $(IOPROCASMINCL_FILES)" # From the official location... iop_reg_space.h: $(IOPOFFICIAL_INCDIR)/iop_reg_space.h cat $< | sed -e 's/\$$Id\:/id\:/g' >$@ iop_mpu_macros.h: $(IOPOFFICIAL_INCDIR)/iop_mpu_macros.h cat $< | sed -e 's/\$$Id\:/id\:/g' >$@ ## copy - Copy files from official location copy: @echo "## Copying and fixing iop files ##" @for HFILE in $(IOPROCINCL_FILES); do \ echo " $$HFILE"; \ cat $(IOPOFFICIAL_INCDIR)$$HFILE | sed -e 's/\$$Id\:/id\:/g' > $$HFILE; \ done @for HFILE in $(IOPROCINCL_FILES2); do \ echo " $$HFILE"; \ cat $(IOPOFFICIAL_INCDIR)$$HFILE | sed -e 's/\$$Id\:/id\:/g' > $$HFILE; \ done @echo "## Copying and fixing iop asm files ##" @for HFILE in $(IOPROCASMINCL_FILES); do \ echo " $$HFILE"; \ cat $(IOPOFFICIAL_INCDIR)asm/$$HFILE | sed -e 's/\$$Id\:/id\:/g' > asm/$$HFILE; \ done # I/O processor files: ## iop - Generate I/O processor include files iop: $(IOPROCINCL_FILES) $(IOPROCINCL_FILES2) $(IOPROCASMINCL_FILES) iop_sw_%_defs.h: $(IOPROCDIR)/guinness/iop_sw_%.r $(RDES2C) $< iop_version_defs.h: $(IOPROCDIR)/guinness/iop_version.r $(RDES2C) $< %_defs.h: $(IOPROCDIR)/%.r $(RDES2C) $< %_defs_asm.h: $(IOPROCDIR)/%.r $(RDES2C) -asm $< iop_version_defs_asm.h: $(IOPROCDIR)/guinness/iop_version.r $(RDES2C) -asm $< ## doc - Generate .axw files from register description. doc: $(IOPROCREGDESC) for RDES in $^; do \ $(RDES2TXT) $$RDES; \ done .PHONY: axw ## %.axw - Generate the specified .axw file (doesn't work for all files ## due to inconsistent naming of .r files. %.axw: axw @for RDES in $(IOPROCREGDESC); do \ if echo "$$RDES" | grep $* ; then \ $(RDES2TXT) $$RDES; \ fi \ done .PHONY: clean ## clean - Remove .h files and .axw files. clean: rm -rf $(IOPROCINCL_FILES) *.axw .PHONY: cleandoc ## cleandoc - Remove .axw files. cleandoc: rm -rf *.axw