diff --git a/src/Makefile.txt b/src/Makefile.txt new file mode 100644 index 0000000000000000000000000000000000000000..176cc9b932afd745389e212e6d6933afd4ff4a01 --- /dev/null +++ b/src/Makefile.txt @@ -0,0 +1,53 @@ +# Tools +CC=gcc +ASM=nasm +CFLAGS=-m32 +ASMFLAGS=-f elf + +# Source files +DRIVER=driver.c +ASM_SRC=task1.asm task2_1.asm task2_2.asm task2_3.asm +ASM_OBJ=$(ASM_SRC:.asm=.o) +ASM_IO=asm_io.asm +ASM_IO_OBJ=asm_io.o + +# Executables +EXE1=task1 +EXE2=task2_1 +EXE3=task2_2 +EXE4=task2_3 + +# Default target +all: $(EXE1) $(EXE2) $(EXE3) $(EXE4) + +# Rule for task1 +$(EXE1): $(ASM_IO_OBJ) task1.o driver.o + $(CC) $(CFLAGS) $^ -o $@ + +# Rule for task2_1 +$(EXE2): $(ASM_IO_OBJ) task2_1.o driver.o + $(CC) $(CFLAGS) $^ -o $@ + +# Rule for task2_2 +$(EXE3): $(ASM_IO_OBJ) task2_2.o driver.o + $(CC) $(CFLAGS) $^ -o $@ + +# Rule for task2_3 +$(EXE4): $(ASM_IO_OBJ) task2_3.o driver.o + $(CC) $(CFLAGS) $^ -o $@ + +# Assemble asm_io.asm +$(ASM_IO_OBJ): $(ASM_IO) + $(ASM) $(ASMFLAGS) $< -o $@ + +# Assemble .asm files +%.o: %.asm + $(ASM) $(ASMFLAGS) $< -o $@ + +# Compile driver.c +driver.o: $(DRIVER) + $(CC) $(CFLAGS) -c $< -o $@ + +# Clean up build artifacts +clean: + rm -f *.o $(EXE1) $(EXE2) $(EXE3) $(EXE4) \ No newline at end of file