Makefile.mk 2.33 KB
PROGRAMS = RandomExample RandomSave RandomThread \
	RandomCoverage RandomExact RandomLambda RandomTime

ifdef HAVE_MPFR
  MPFREXAMPLE = MPFRExample
  LDLIBS += -lmpfr -lgmp
endif

all: $(PROGRAMS) $(MPFREXAMPLE)

LIBSTEM = Random
LIBRARY = lib$(LIBSTEM).a

INCLUDEPATH = ../include
LIBPATH = ../src

# After installation, use these values of INCLUDEPATH and LIBPATH
# INCLUDEPATH = $(PREFIX)/include
# LIBPATH = $(PREFIX)/lib

REQUIREDHEADERS = Random.hpp RandomCanonical.hpp RandomPower2.hpp \
	RandomEngine.hpp RandomAlgorithm.hpp RandomMixer.hpp RandomSeed.hpp \
	RandomType.hpp

CC = g++ -g
CXXFLAGS = -g -Wall -O3 -funroll-loops -finline-functions -fomit-frame-pointer

CPPFLAGS = -I$(INCLUDEPATH) $(DEFINES)
LDLIBS = -L$(LIBPATH) -l$(LIBSTEM)

$(PROGRAMS): $(LIBPATH)/$(LIBRARY)
	$(CC) $(LDFLAGS) -o $@ $@.o $(LDLIBS)

VPATH = ../include/RandomLib

clean:
	rm -f *.o

PREFIX = /usr/local
# After installation, use these values of CPPFLAGS and LDFLAGS

# CPPFLAGS = -I$(PREFIX)/include
# LDFLAGS = -L$(PREFIX)/lib -l$(LIBSTEM)

ifdef RANDOMLIB_DEFAULT_GENERATOR
  CPPFLAGS += -DRANDOMLIB_DEFAULT_GENERATOR=$(RANDOMLIB_DEFAULT_GENERATOR)
endif

ifdef HAVE_BOOST_SERIALIZATION
  CPPFLAGS += -DHAVE_BOOST_SERIALIZATION=1
  LDLIBS += -lboost_serialization-mt
endif

HAVE_OPENMP=1
ifneq ($(HAVE_OPENMP),0)
  CPPFLAGS += -DHAVE_OPENMP=1
  CXXFLAGS += -fopenmp
  LDFLAGS += -fopenmp
endif

RandomExample.o: Config.h $(REQUIREDHEADERS) \
	NormalDistribution.hpp RandomSelect.hpp
RandomExample: RandomExample.o

RandomSave.o: Config.h $(REQUIREDHEADERS)
RandomSave: RandomSave.o

RandomThread.o: Config.h $(REQUIREDHEADERS)
RandomThread: RandomThread.o

RandomTime.o: Config.h $(REQUIREDHEADERS) \
	NormalDistribution.hpp RandomSelect.hpp
RandomTime: RandomTime.o

RandomCoverage.o: Config.h $(REQUIREDHEADERS) \
	NormalDistribution.hpp ExponentialDistribution.hpp RandomSelect.hpp \
	LeadingZeros.hpp ExponentialProb.hpp RandomNumber.hpp \
	ExactExponential.hpp ExactNormal.hpp ExactPower.hpp
RandomCoverage: RandomCoverage.o

RandomExact.o: Config.h $(REQUIREDHEADERS) \
	RandomNumber.hpp ExactExponential.hpp ExactNormal.hpp \
	ExponentialProb.hpp
RandomExact: RandomExact.o

RandomLambda.o: Config.h $(REQUIREDHEADERS) NormalDistribution.hpp
RandomLambda: RandomLambda.o

MPFRExample.o: MPFRRandom.hpp MPFRNormal.hpp
MPFRExample: MPFRRandom.o

# Examples are not installed
install: