PSI/Makefile

91 lines
3.3 KiB
Makefile

SOURCE=null
QUOI=null
default:
@echo "Specifiez une cible [compile|clean|exec]"
compile:
ifeq ($(QUOI),null)
@echo "USAGE : make compile QUOI=\"[compilateur|interpreteur|cross_assembleur|all]\""
else
ifeq ($(QUOI),compilateur)
@echo "Compilation du compilateur"
$(MAKE) -C Compilateur build
@echo "Compilation terminée"
else ifeq ($(QUOI),cross_asembleur)
@echo "Compilation du CrossAssembleur"
$(MAKE) -C CrossAssembleur build
@echo "Compilation terminée"
else ifeq ($(QUOI),interpreteur)
@echo "Compilation de l'interpreteur"
$(MAKE) -C Interpreteur build
@echo "Compilation terminée"
else ifeq ($(QUOI),all)
@echo "Compilation du compilateur"
$(MAKE) -C Compilateur build
@echo "Compilation terminée"
@echo "Compilation de l'interpreteur"
$(MAKE) -C Interpreteur build
@echo "Compilation terminée"
@echo "Compilation du CrossAssembleur"
$(MAKE) -C CrossAssembleur build
@echo "Compilation terminée"
else
@echo "USAGE : make compile QUOI=\"[compilateur|interpreteur|cross_assembleur|all]\""
endif
endif
clean:
$(MAKE) -C Compilateur clean
$(MAKE) -C Interpreteur clean
$(MAKE) -C CrossAssembleur clean
exec:
ifeq ($(SOURCE),null)
@echo "USAGE : make exec SOURCE=\"file_name\" QUOI=\"[compile|interprete|cross_assemble|load|all]\""
else ifeq ($(QUOI),null)
@echo "USAGE : make exec SOURCE=\"file_name\" QUOI=\"[compile|interprete|cross_assemble|load|all]\""
else
ifeq ($(QUOI),compile)
@echo "Compilation"
cat $(SOURCE).c | Compilateur/rondoudou_gcc
@mv output.txt $(SOURCE).memasm
@echo "Compilation terminée"
else ifeq ($(QUOI),interprete)
@echo "Interpretation"
cat $(SOURCE).memasm | Interpreteur/rondoudou_interpreter
@echo "Interpretation terminée"
else ifeq ($(QUOI),cross_assemble)
@echo "CrossAssemblage"
cat $(SOURCE).memasm | CrossAssembleur/rondoudou_cross_assembleur
@mv output.asm $(SOURCE).regasm
@mv output.bin $(SOURCE).bin
@echo "CrossAssemblage terminé"
else ifeq ($(QUOI),load)
@echo "Chargement du binaire"
@sed -r "s/signal MEMORY : STD_LOGIC_VECTOR \(\(Mem_Size \* Nb_bits\)-1 downto 0\) := \"[01]*\";/signal MEMORY : STD_LOGIC_VECTOR \(\(Mem_Size \* Nb_bits\)-1 downto 0\) := $$(cat $(SOURCE).bin);/g" Processeur/Processeur.srcs/sources_1/new/MemoireInstructions.vhd > $(SOURCE).tmp.vhd
@mv $(SOURCE).tmp.vhd Processeur/Processeur.srcs/sources_1/new/MemoireInstructions.vhd
@echo "Chargement du binaire terminé"
else ifeq ($(QUOI),all)
@echo "Compilation"
cat $(SOURCE).c | Compilateur/rondoudou_gcc
@mv output.txt $(SOURCE).memasm
@echo "Compilation terminée"
@echo "Interpretation"
cat $(SOURCE).memasm | Interpreteur/rondoudou_interpreter
@echo "Interpretation terminée"
@echo "CrossAssemblage"
cat $(SOURCE).memasm | CrossAssembleur/rondoudou_cross_assembleur
@mv output.asm $(SOURCE).regasm
@mv output.bin $(SOURCE).bin
@echo "CrossAssemblage terminé"
@echo "Chargement du binaire"
@sed -r "s/signal MEMORY : STD_LOGIC_VECTOR \(\(Mem_Size \* Nb_bits\)-1 downto 0\) := \"[01]*\";/signal MEMORY : STD_LOGIC_VECTOR \(\(Mem_Size \* Nb_bits\)-1 downto 0\) := $$(cat $(SOURCE).bin);/g" Processeur/Processeur.srcs/sources_1/new/MemoireInstructions.vhd > $(SOURCE).tmp.vhd
@mv $(SOURCE).tmp.vhd Processeur/Processeur.srcs/sources_1/new/MemoireInstructions.vhd
@echo "Chargement du binaire terminé"
else
@echo "USAGE : make exec SOURCE=\"file_name\" QUOI=\"[compile|interprete|cross_assemble|load|all]\""
endif
endif