SOURCE=null QUOI=null default: @echo "Specifiez une cible [compile|clean|exec]" compile: ifeq ($(QUOI),null) @echo "USAGE : make compile QUOI=\"[compilateur|interpreteur|interpreteur_registres|cross_assembleur|all]\"" else ifeq ($(QUOI),compilateur) @echo "Compilation du compilateur" $(MAKE) -C Compilateur build @echo "Compilation terminée" else ifeq ($(QUOI),cross_assembleur) @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),interpreteur_registres) @echo "Compilation de l'interpreteur_registres" $(MAKE) -C InterpreteurRegistres 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" @echo "Compilation de l'interpreteur_registres" $(MAKE) -C InterpreteurRegistres build @echo "Compilation terminée" else @echo "USAGE : make compile QUOI=\"[compilateur|interpreteur|interpreteur_registres|cross_assembleur|all]\"" endif endif clean: $(MAKE) -C Compilateur clean $(MAKE) -C Interpreteur clean $(MAKE) -C InterpreteurRegistres clean $(MAKE) -C CrossAssembleur clean @rm -f ./*.memasm ./*.regasm ./*.bin exec: ifeq ($(SOURCE),null) @echo "USAGE : make exec SOURCE=\"file_name\" QUOI=\"[compile|interprete|interprete_registres|cross_assemble|load|all]\"" else ifeq ($(QUOI),null) @echo "USAGE : make exec SOURCE=\"file_name\" QUOI=\"[compile|interprete|interprete_registres|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" Interpreteur/rondoudou_interpreter $(SOURCE).memasm @echo "Interpretation terminée" else ifeq ($(QUOI),interprete_registres) @echo "Interpretation registres" InterpreteurRegistres/rondoudou_interpreter_registres $(SOURCE).regasm @echo "Interpretation registres 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 "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|interprete_registres|cross_assemble|load|all]\"" endif endif endif