default: all

objects:= AsmImpl.o BasicArithm.o CryptoFunc.o ExtendedArithm.o main.o MyLongHelper.o MyLongIO.o MyTypes.o OldFunctions.o Parallel.o primes.o RandomNTL.o RandomOS.o operations.o Timer.o

-include ${objects:.o=.d}

.PHONY: all clean

all: RSA

clean:
	rm -f *.o *.d RSA

CPP:=g++
CPPFLAGS:=-m32 -O3 -fomit-frame-pointer -Wall -Wextra -DPARALLEL -DLINUX -DNDEBUG

LINKFLAGS:=-m32 -lZThread

YASM:=yasm
YASMFLAGS:=-f elf -O2

.SUFFIXES:

RSA: $(objects)
	$(CPP) -o $@ $^ $(LINKFLAGS)

%.o : %.cpp
	$(CPP) -o $@ -c $(CPPFLAGS) -MMD $<

%.o : %.asm
	$(YASM) $(YASMFLAGS) -DPREPROCESS_ONLY -M $< > ${@:.o=.d}
	$(YASM) $(YASMFLAGS) -l ${@:.o=.lst} -o $@ $<
