PSI/Makefile
Faure Paul 8356252c72 Clean
2022-06-29 19:42:07 +02:00

129 lines
4.4 KiB
Makefile

SOURCE=null
WHAT=null
default:
@echo "Specify target [secure|unsecure|build|exec|exec_secure|exec_unsecure|clean]"
secure:
@sed -i 's/#define SECURED (0)/#define SECURED (1)/g' Interpreteur/Tables/tables.c InterpreteurRegistres/Tables/tables.c Compilateur/Lex_Yacc/as.y
@sed -i 's/constant SECURED : boolean := false;/constant SECURED : boolean := true;/g' Processeur/Processeur.srcs/sources_1/new/System.vhd
unsecure:
@sed -i 's/#define SECURED (1)/#define SECURED (0)/g' Interpreteur/Tables/tables.c InterpreteurRegistres/Tables/tables.c Compilateur/Lex_Yacc/as.y
@sed -i 's/constant SECURED : boolean := true;/constant SECURED : boolean := false;/g' Processeur/Processeur.srcs/sources_1/new/System.vhd
build:
ifeq ($(WHAT),null)
@echo "USAGE : make build WHAT=\"[compiler|interpreter|interpreter_registers|cross_assembler|all]\""
else
ifeq ($(WHAT),compiler)
@echo "Building compiler"
$(MAKE) -C Compilateur build
@echo "Compiler built"
else ifeq ($(WHAT),cross_assembler)
@echo "Building CrossAssembler"
$(MAKE) -C CrossAssembleur build
@echo "CrossAssembler built"
else ifeq ($(WHAT),interpreter)
@echo "Building interpreter"
$(MAKE) -C Interpreteur build
@echo "Interpreter built"
else ifeq ($(WHAT),interpreter_registers)
@echo "Building interpreter_registers"
$(MAKE) -C InterpreteurRegistres build
@echo "Interpreter_registers built"
else ifeq ($(WHAT),all)
@echo "Building compiler"
$(MAKE) -C Compilateur build
@echo "Compiler built"
@echo "Building interpreter"
$(MAKE) -C Interpreteur build
@echo "Interpreter built"
@echo "Building CrossAssembler"
$(MAKE) -C CrossAssembleur build
@echo "CrossAssembler built"
@echo "Building interpreter_registers"
$(MAKE) -C InterpreteurRegistres build
@echo "Interpreter_registers built"
else
@echo "USAGE : make build WHAT=\"[compiler|interpreter|interpreter_registers|cross_assembler|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_secure: secure compile exec
exec_unsecure: unsecure compile exec
exec:
ifeq ($(SOURCE),null)
@echo "USAGE : make exec SOURCE=\"file_name\" WHAT=\"[compile|interprete|interprete_registers|cross_assemble|load|all]\""
else
ifeq ($(WHAT),null)
@echo "USAGE : make exec SOURCE=\"file_name\" WHAT=\"[compile|interprete|interprete_registers|cross_assemble|load|all]\""
else
ifeq ($(WHAT),compile)
@echo "Building program"
cat $(SOURCE).c | Compilateur/compiler
@mv output.txt $(SOURCE).memasm
@echo "Program built"
else ifeq ($(WHAT),interprete)
@echo "Interpreting program"
Interpreteur/interpreter $(SOURCE).memasm
@echo "Program interpreted"
else ifeq ($(WHAT),interprete_registers)
@echo "Interpreting registers program"
InterpreteurRegistres/interpreter_registers $(SOURCE).regasm
@echo "Registers program interpreted"
else ifeq ($(WHAT),cross_assemble)
@echo "CrossAssembling program"
cat $(SOURCE).memasm | CrossAssembleur/cross_assembler
@mv output.asm $(SOURCE).regasm
@mv output.bin $(SOURCE).bin
@echo "Program CrossAssembled"
else ifeq ($(WHAT),load)
@echo "Loading binairy program"
@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 "Binairy program loaded"
else ifeq ($(WHAT),all)
@echo "Building program"
cat $(SOURCE).c | Compilateur/compiler
@mv output.txt $(SOURCE).memasm
@echo "Program built"
@echo "CrossAssembling program"
cat $(SOURCE).memasm | CrossAssembleur/cross_assembler
@mv output.asm $(SOURCE).regasm
@mv output.bin $(SOURCE).bin
@echo "Program CrossAssembled"
@echo "Loading binairy program"
@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 "Binairy program loaded"
else
@echo "USAGE : make exec SOURCE=\"file_name\" WHAT=\"[compile|interprete|interprete_registers|cross_assemble|load|all]\""
endif
endif
endif