riscem: obj/arith.o obj/branch.o obj/executor.o obj/logshift.o obj/main.o obj/memops.o obj/parser.o obj/fp.o obj/util.o
	@gcc obj/arith.o obj/branch.o obj/fp.o obj/executor.o obj/logshift.o obj/main.o obj/memops.o obj/parser.o obj/util.o -lm -o riscem
	@echo "use ./riscem <path/assembly filename.asm> to run an assembly program"

obj/main.o: src/main.c src/parser.h obj src/global.h
	@gcc -c src/main.c
	@mv "main.o" "obj"

obj/fp.o: src/fp.c src/parser.h obj src/global.h
	@gcc -c src/fp.c
	@mv "fp.o" "obj"

obj/util.o: src/util.c src/parser.h src/util.h obj
	@gcc -c src/util.c
	@mv "util.o" "obj"

obj/parser.o: src/parser.h src/insts.h src/global.h src/util.h src/parser.c obj
	@gcc -c src/parser.c
	@mv "parser.o" "obj"

obj/arith.o: src/parser.h src/insts.h src/global.h src/arith.c obj
	@gcc -c src/arith.c
	@mv "arith.o" "obj"

obj/branch.o: src/parser.h src/insts.h src/global.h src/branch.c obj
	@gcc -c src/branch.c
	@mv "branch.o" "obj"

obj/executor.o: src/global.h src/executor.c obj
	@gcc -c src/executor.c
	@mv "executor.o" "obj"

obj/logshift.o: src/parser.h src/insts.h src/global.h src/logshift.c obj
	@gcc -c src/logshift.c
	@mv "logshift.o" "obj"

obj/memops.o: src/parser.h src/insts.h src/global.h src/memops.c obj
	@gcc -c src/memops.c
	@mv "memops.o" "obj"

obj:
	@[ -d obj ]||mkdir obj

clean:
	@rm -rf obj
	@rm riscem
