# Linux/MinGW gcc Makefile for bigdigits tests
# $Date: 2026-03-29 12:41:00 $
# $Revision: 2.7.0 $
# $Author: dai $
#

CC = gcc
CXX = g++
CFLAGS = -std=c99 -pedantic -Wall -Wpointer-arith -Wstrict-prototypes -Wno-format -O2
CXXFLAGS = -std=c++11 -pedantic -Wall -Wpointer-arith  -Wno-format -O2
LDFLAGS = -lm

INCLUDES = bigd.h bigdigits.h bigdtypes.h bigdRand.h bigdigitsRand.h

SOURCES = bigdigits.c \
	bigd.c \
	bigdigitsRand.c \
	bigdRand.c

OBJECTS = $(SOURCES:.c=.o)

# Test programs
BD_TESTS = t_bdTest t_bdSimple t_bdRSA t_bdRSA1 t_bdDSA t_bdRDSA \
	t_bdRsaCrack t_bdRsaFactorN t_bdRandomOctets t_bdQuickRandBits t_bdRSA_blinded \
	t_bdConvFromStr
MP_TESTS = t_mpTest t_mpRSA508 t_mpJacobi t_mpModArith
CPP_TESTS = t_bdCPP
ALL_TESTS = $(BD_TESTS) $(MP_TESTS) $(CPP_TESTS)
TEST_OBJS = $(addsuffix .o, $(BD_TESTS) $(MP_TESTS) $(CPP_TESTS)) 

.PHONY: all clean

all: $(ALL_TESTS)

%.o: %.c $(INCLUDES)
	$(CC) $(CFLAGS) -c $<

# Pattern rule for bd and md tests
$(BD_TESTS) $(MP_TESTS): %: %.o $(INCLUDES) $(OBJECTS)
	$(CC) $(CFLAGS) -o $@ $@.o $(OBJECTS) $(LDFLAGS)

# add the C++ test target rule
$(CPP_TESTS): %: %.o $(INCLUDES) $(OBJECTS)
	$(CXX) $(CXXFLAGS) -o $@ $@.o $(OBJECTS) $(LDFLAGS)


clean:
	-rm -f $(OBJECTS) $(ALL_TESTS) $(TEST_OBJS)

