FC = gfortran -march=native -Ofast
FL = gfortran
TARGET = q

OBJECTS = test.o quaternion.o typedef.o vector.o

$(TARGET): $(OBJECTS)
	$(FL) $(OBJECTS) -o $@

typedef.o typedef.mod &: typedef.f90
	rm -f typedef.mod
	$(FC) -c $<

vector.o vector.mod &: vector.f90 \
	typedef.mod
	rm -f vector.mod
	$(FC) -c $<

quaternion.o quaternion.mod &: quaternion.f90 \
	typedef.mod vector.mod
	rm -f quaternion.mod
	$(FC) -c $<

test.o: test.f90 \
	quaternion.mod typedef.mod
	$(FC) -c test.f90

clean:
	rm *.o *.mod $(TARGET)
