#
|
#
|
# Makefile for Leros build
|
# Makefile for Leros build
|
#
|
#
|
|
|
# cleanup
|
# cleanup
|
EXTENSIONS=class rbf rpt sof pin summary ttf qdf dat wlf done qws
|
EXTENSIONS=class rbf rpt sof pin summary ttf qdf dat wlf done qws
|
|
|
#
|
#
|
# Set USB to true for an FTDI chip based board (dspio, usbmin, lego)
|
# Set USB to true for an FTDI chip based board (dspio, usbmin, lego)
|
#
|
#
|
USB=true
|
USB=true
|
|
USB=false
|
|
|
|
|
# Assembler files
|
# Assembler files
|
APP=test
|
APP=test
|
APP=muvium
|
APP=muvium
|
|
|
# Java application
|
# Java application
|
JAPP=Blink
|
JAPP=Blink
|
JAPP_PKG=.
|
JAPP_PKG=.
|
|
|
# Target Java compiler
|
# Target Java compiler
|
# muvium has issues with the current Oracle javac,
|
# muvium has issues with the current Oracle javac,
|
# so we use jikes
|
# so we use jikes
|
JAVAC_TARG=jikes/jikes
|
JAVAC_TARG=jikes/jikes
|
# JAVAC_TARG=javac
|
# JAVAC_TARG=javac
|
|
|
# Altera FPGA configuration cable
|
# Altera FPGA configuration cable
|
#BLASTER_TYPE=ByteBlasterMV
|
#BLASTER_TYPE=ByteBlasterMV
|
BLASTER_TYPE=USB-Blaster
|
BLASTER_TYPE=USB-Blaster
|
|
|
ifeq ($(WINDIR),)
|
ifeq ($(WINDIR),)
|
USBRUNNER=./USBRunner
|
USBRUNNER=./USBRunner
|
S=:
|
S=:
|
else
|
else
|
USBRUNNER=USBRunner.exe
|
USBRUNNER=USBRunner.exe
|
S=\;
|
S=\;
|
endif
|
endif
|
|
|
# The VHDL project for Quartus
|
# The VHDL project for Quartus
|
QPROJ=altde2-70
|
|
QPROJ=dspio
|
QPROJ=dspio
|
|
QPROJ=altde2-70
|
|
|
# Some shortcuts
|
# Some shortcuts
|
MUVIUM=LerosMuviumSDK
|
MUVIUM=LerosMuviumSDK
|
MUVIUM_CP=./$(S)./lib/Muvium-Leros.jar$(S)./MUVIUM_CP=./$(S)./lib/jdom.jar$(S)./lib/jaxen.jar$(S).
|
MUVIUM_CP=./$(S)./lib/Muvium-Leros.jar$(S)./MUVIUM_CP=./$(S)./lib/jdom.jar$(S)./lib/jaxen.jar$(S).
|
# We need paths to the JDK and the main application
|
# We need paths to the JDK and the main application
|
# Java packages are at the moment ignored, maybe do it JOP like
|
# Java packages are at the moment ignored, maybe do it JOP like
|
# Redefine TARGET_SRC to put your sources somewhere else
|
# Redefine TARGET_SRC to put your sources somewhere else
|
JDK_SRC=java/target/src
|
JDK_SRC=java/target/src
|
TARGET_SRC=java/target/src
|
TARGET_SRC=java/target/src
|
SOURCE_PATH=$(JDK_SRC)$(S)$(TARGET_SRC)
|
SOURCE_PATH=$(JDK_SRC)$(S)$(TARGET_SRC)
|
|
|
all: directories tools rom
|
all: directories tools rom
|
make lerosusb
|
make lerosusb
|
make config
|
make config
|
|
|
directories:
|
directories:
|
-mkdir rbf
|
-mkdir rbf
|
|
|
tools:
|
tools:
|
-rm -rf rbf
|
-rm -rf rbf
|
-rm -rf java/tools/classes
|
-rm -rf java/tools/classes
|
-rm -rf java/tools/lib
|
-rm -rf java/tools/lib
|
-rm -rf java/tools/src/leros/asm/generated
|
-rm -rf java/tools/src/leros/asm/generated
|
mkdir rbf
|
mkdir rbf
|
mkdir java/tools/classes
|
mkdir java/tools/classes
|
mkdir java/tools/lib
|
mkdir java/tools/lib
|
mkdir java/tools/src/leros/asm/generated
|
mkdir java/tools/src/leros/asm/generated
|
java -classpath lib/antlr-3.3-complete.jar org.antlr.Tool \
|
java -classpath lib/antlr-3.3-complete.jar org.antlr.Tool \
|
-fo java/tools/src/leros/asm/generated \
|
-fo java/tools/src/leros/asm/generated \
|
java/tools/src/grammar/Leros.g
|
java/tools/src/grammar/Leros.g
|
javac -classpath lib/antlr-3.3-complete.jar \
|
javac -classpath lib/antlr-3.3-complete.jar \
|
-d java/tools/classes java/tools/src/leros/asm/generated/*.java \
|
-d java/tools/classes java/tools/src/leros/asm/generated/*.java \
|
java/tools/src/leros/asm/*.java
|
java/tools/src/leros/asm/*.java
|
javac -d java/tools/classes -sourcepath \
|
javac -d java/tools/classes -sourcepath \
|
java/tools/src java/tools/src/leros/sim/*.java
|
java/tools/src java/tools/src/leros/sim/*.java
|
cd java/tools/classes && jar cf ../lib/leros-tools.jar *
|
cd java/tools/classes && jar cf ../lib/leros-tools.jar *
|
|
|
java_app:
|
java_app:
|
-rm -rf java/target/classes
|
-rm -rf java/target/classes
|
mkdir java/target/classes
|
mkdir java/target/classes
|
$(JAVAC_TARG) -target 1.5 -g -d java/target/classes \
|
$(JAVAC_TARG) -target 1.5 -g -d java/target/classes \
|
-sourcepath $(SOURCE_PATH) $(TARGET_SRC)/$(JAPP).java
|
-sourcepath $(SOURCE_PATH) $(TARGET_SRC)/$(JAPP).java
|
cd $(MUVIUM); java -cp $(MUVIUM_CP)$(S)../java/target/classes \
|
cd $(MUVIUM); java -cp $(MUVIUM_CP)$(S)../java/target/classes \
|
MuviumMetal $(JAPP) config.xml ../asm/muvium.asm
|
MuviumMetal $(JAPP) config.xml ../asm/muvium.asm
|
|
|
japp:
|
japp:
|
make java_app
|
make java_app
|
make rom -e APP=muvium
|
make rom -e APP=muvium
|
make lerosusb
|
make lerosusb
|
make config
|
make config
|
|
|
rom:
|
rom:
|
-rm -rf vhdl/generated
|
-rm -rf vhdl/generated
|
mkdir vhdl/generated
|
mkdir vhdl/generated
|
java -cp java/tools/lib/leros-tools.jar$(S)lib/antlr-3.3-complete.jar \
|
java -cp java/tools/lib/leros-tools.jar$(S)lib/antlr-3.3-complete.jar \
|
leros.asm.LerosAsm -s asm -d vhdl/generated $(APP).asm
|
leros.asm.LerosAsm -s asm -d vhdl/generated $(APP).asm
|
|
|
jsim: rom
|
jsim: rom
|
java -cp java/tools/lib/leros-tools.jar -Dlog=false \
|
java -cp java/tools/lib/leros-tools.jar -Dlog=false \
|
leros.sim.LerosSim rom.txt
|
leros.sim.LerosSim rom.txt
|
sim: rom
|
sim: rom
|
cd modelsim; make
|
cd modelsim; make
|
|
|
|
|
# configure the FPGA
|
# configure the FPGA
|
config:
|
config:
|
ifeq ($(USB),true)
|
ifeq ($(USB),true)
|
make config_usb
|
make config_usb
|
else
|
else
|
ifeq ($(XFPGA),true)
|
ifeq ($(XFPGA),true)
|
make config_xilinx
|
make config_xilinx
|
else
|
else
|
make config_byteblaster
|
make config_byteblaster
|
endif
|
endif
|
endif
|
endif
|
|
|
lerosusb:
|
lerosusb:
|
@echo $(QPROJ)
|
@echo $(QPROJ)
|
for target in $(QPROJ); do \
|
for target in $(QPROJ); do \
|
make qsyn -e QBT=$$target || exit; \
|
make qsyn -e QBT=$$target || exit; \
|
cd quartus/$$target && quartus_cpf -c leros.sof ../../rbf/$$target.rbf; \
|
cd quartus/$$target && quartus_cpf -c leros.sof ../../rbf/$$target.rbf; \
|
done
|
done
|
|
|
#
|
#
|
# Quartus build process
|
# Quartus build process
|
# called by jopser, jopusb,...
|
# called by jopser, jopusb,...
|
#
|
#
|
qsyn:
|
qsyn:
|
echo $(QBT)
|
echo $(QBT)
|
echo "building $(QBT)"
|
echo "building $(QBT)"
|
-rm -rf quartus/$(QBT)/db
|
-rm -rf quartus/$(QBT)/db
|
-rm -f quartus/$(QBT)/leros.sof
|
-rm -f quartus/$(QBT)/leros.sof
|
-rm -f jbc/$(QBT).jbc
|
-rm -f jbc/$(QBT).jbc
|
-rm -f rbf/$(QBT).rbf
|
-rm -f rbf/$(QBT).rbf
|
quartus_map quartus/$(QBT)/leros
|
quartus_map quartus/$(QBT)/leros
|
quartus_fit quartus/$(QBT)/leros
|
quartus_fit quartus/$(QBT)/leros
|
quartus_asm quartus/$(QBT)/leros
|
quartus_asm quartus/$(QBT)/leros
|
quartus_sta quartus/$(QBT)/leros
|
quartus_sta quartus/$(QBT)/leros
|
|
|
config_byteblaster:
|
config_byteblaster:
|
cd quartus/$(QPROJ) && quartus_pgm -c $(BLASTER_TYPE) -m JTAG leros.cdf
|
cd quartus/$(QPROJ) && quartus_pgm -c $(BLASTER_TYPE) -m JTAG leros.cdf
|
|
|
config_usb:
|
config_usb:
|
cd rbf && ../$(USBRUNNER) $(QPROJ).rbf
|
cd rbf && ../$(USBRUNNER) $(QPROJ).rbf
|
|
|
# TODO: no Xilinx Makefiles available yet
|
# TODO: no Xilinx Makefiles available yet
|
config_xilinx:
|
config_xilinx:
|
cd xilinx/$(XPROJ) && make config
|
cd xilinx/$(XPROJ) && make config
|
|
|
clean:
|
clean:
|
for ext in $(EXTENSIONS); do \
|
for ext in $(EXTENSIONS); do \
|
find `ls` -name \*.$$ext -print -exec rm -r -f {} \; ; \
|
find `ls` -name \*.$$ext -print -exec rm -r -f {} \; ; \
|
done
|
done
|
-find `ls` -name leros.pof -print -exec rm -r -f {} \;
|
-find `ls` -name leros.pof -print -exec rm -r -f {} \;
|
-find `ls` -name db -print -exec rm -r -f {} \;
|
-find `ls` -name db -print -exec rm -r -f {} \;
|
-find `ls` -name incremental_db -print -exec rm -r -f {} \;
|
-find `ls` -name incremental_db -print -exec rm -r -f {} \;
|
-find `ls` -name leros_description.txt -print -exec rm -r -f {} \;
|
-find `ls` -name leros_description.txt -print -exec rm -r -f {} \;
|
-rm -rf asm/generated
|
-rm -rf asm/generated
|
-rm -f vhdl/*.vhd
|
-rm -f vhdl/*.vhd
|
-rm -rf $(TOOLS)/dist
|
-rm -rf $(TOOLS)/dist
|
-rm -rf $(PCTOOLS)/dist
|
-rm -rf $(PCTOOLS)/dist
|
-rm -rf $(TARGET)/dist
|
-rm -rf $(TARGET)/dist
|
-rm -rf modelsim/work
|
-rm -rf modelsim/work
|
-rm -rf modelsim/transcript
|
-rm -rf modelsim/transcript
|
-rm -rf modelsim/gaisler
|
-rm -rf modelsim/gaisler
|
-rm -rf modelsim/grlib
|
-rm -rf modelsim/grlib
|
-rm -rf modelsim/techmap
|
-rm -rf modelsim/techmap
|
|
|