CXX      = g++
CXXFLAGS = -std=c++14 -Wall -Wextra -O3 -fpermissive
LDFLAGS  = -lboost_thread -lboost_system -lboost_chrono -lpthread

# Old AIMD uses utilization_monitor.cpp.
# Fixed AIMD uses utilization_monitor_fixed.cpp.
CORE_SRC = \
    row.cpp \
    scheduler_iface.cpp \
    utilization_monitor.cpp \
    utilization_monitor_fixed.cpp

THREAD_SRC = \
    aimd.cpp \
    aimd_fixed.cpp

ALL_SRC = $(CORE_SRC) $(THREAD_SRC)
ALL_OBJ = $(ALL_SRC:.cpp=.o)

all: shm_generator shm_benchmark

shm_generator: shm_generator.cpp shm_keys.hpp
	$(CXX) $(CXXFLAGS) shm_generator.cpp -o $@ -lpthread

shm_benchmark: shm_benchmark.o $(ALL_OBJ)
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)

%.o: %.cpp
	$(CXX) $(CXXFLAGS) -c $< -o $@

clean:
	rm -f *.o shm_generator shm_benchmark

.PHONY: all clean
