# Makefile

# suffixes.
.SUFFIXES: .c .o .tex .dvi .ps .pdf

# macros.
CC = g++
CFLAGS = -O2 -Wall -std=c++11
RM = rm -f

# cleaning rules.
clean:
	$(RM) *.o *~ \#* ../*~

distclean:
	$(RM) *.o *~ \#* ../*~ ILPS3 ILPS2 CONST

OBJ = init.o misc.o cpu_time.o mt19937ar.o

ILPS3: define.h $(OBJ) construct.o main_ls3.o
	$(CC) -o $@ $(OBJ) construct.o main_ls3.o $(CFLAGS)

ILPS2: define.h $(OBJ) construct.o main_ls2.o
	$(CC) -o $@ $(OBJ) construct.o main_ls2.o $(CFLAGS)

CONST: define.h $(OBJ) construct_main.o
	$(CC) -o $@ $(OBJ) construct_main.o $(CFLAGS)

construct_main.o: construct.cpp
	$(CC) -o $@ $(CFLAGS) -c construct.cpp -DCONSTRUCT_MAIN

main_ls3.o: main.cpp
	$(CC) -o $@ $(CFLAGS) -c main.cpp -DLS3

main_ls2.o: main.cpp
	$(CC) -o $@ $(CFLAGS) -c main.cpp -ULS3

.cpp.o:
	$(CC) $(CFLAGS) -c $<

