
include ../../../src/Makefile.config

TARGET = servo_tester
OBJFILES = main.o ServoThread.o UiThread.o DisplayThread.o io.o \
           PeriodicThread.o Thread.o Mutex.o WaitCondition.o \
           Base.o Multiplexer.o Bus.o Display.o iowarrior_i2c.o



INCPATHS = -I../../../src/
LIBPATHS = -L../../../lib/
LIBS = -lpthread -lrt
CXXFLAGS = $(CXXFLAGS_ALL) $(DEFINES) -g
LDFLAGS = $(LDFLAGS_ALL)

DEFINES = -DPARPORT

# disable the VS OpenRISC IO if te IO file is not present 
ifeq ($(wildcard /dev/gpio),/dev/gpio)
  DEFINES = -DVSOPENRISC_IO 
  $(warning Automatically enabled VS OpenRISC GPIO mode)
else
  $(warning Disabled VS OpenRISC GPIO mode)	
endif

ifneq ($(USE_IIC),)
  DEFINES += -DUSE_IIC
  $(warning Using IIC Display)
else
  $(warning Do not use IIC Display)
endif

all: $(TARGET)

$(TARGET): $(OBJFILES)
	$(CXX) $(CXXFLAGS) $(INCPATHS) $(OBJFILES) $(LIBPATHS) $(LIBS) $(LDFLAGS) -o $(TARGET)

main.o: main.cpp
	$(CXX) $(CXXFLAGS) $(INCPATHS) -c main.cpp -o main.o

io.o: io.cpp io.h
	$(CXX) $(CXXFLAGS) $(INCPATHS) -c io.cpp -o io.o

DisplayThread.o: DisplayThread.cpp DisplayThread.h
	$(CXX) $(CXXFLAGS) $(INCPATHS) -c DisplayThread.cpp -o DisplayThread.o

ServoThread.o: ServoThread.cpp ServoThread.h
	$(CXX) $(CXXFLAGS) $(INCPATHS) -c ServoThread.cpp -o ServoThread.o

UiThread.o: UiThread.cpp UiThread.h
	$(CXX) $(CXXFLAGS) $(INCPATHS) -c UiThread.cpp -o UiThread.o


Thread.o: ../../../src/tools/Thread.cpp ../../../src/tools/Thread.h
	$(CXX) $(CXXFLAGS) $(INCPATHS) -c ../../../src/tools/Thread.cpp -o Thread.o

Mutex.o: ../../../src/tools/Mutex.cpp ../../../src/tools/Mutex.h
	$(CXX) $(CXXFLAGS) $(INCPATHS) -c ../../../src/tools/Mutex.cpp -o Mutex.o

WaitCondition.o: ../../../src/tools/WaitCondition.cpp ../../../src/tools/WaitCondition.h
	$(CXX) $(CXXFLAGS) $(INCPATHS) -c ../../../src/tools/WaitCondition.cpp -o WaitCondition.o

PeriodicThread.o: ../../../src/tools/PeriodicThread.cpp ../../../src/tools/PeriodicThread.h
	$(CXX) $(CXXFLAGS) $(INCPATHS) -c ../../../src/tools/PeriodicThread.cpp -o PeriodicThread.o

Base.o: ../../../src/iic/Base.cpp ../../../src/iic/Base.h
	$(CXX) $(CXXFLAGS) $(INCPATHS) -c ../../../src/iic/Base.cpp -o Base.o

Multiplexer.o: ../../../src/iic/Multiplexer.cpp ../../../src/iic/Multiplexer.h
	$(CXX) $(CXXFLAGS) $(INCPATHS) -c ../../../src/iic/Multiplexer.cpp -o Multiplexer.o

Bus.o: ../../../src/iic/Bus.cpp ../../../src/iic/Bus.h
	$(CXX) $(CXXFLAGS) $(INCPATHS) -c ../../../src/iic/Bus.cpp -o Bus.o

Display.o: ../../../src/iic/Display.cpp ../../../src/iic/Display.h
	$(CXX) $(CXXFLAGS) $(INCPATHS) -c ../../../src/iic/Display.cpp -o Display.o

iowarrior_i2c.o: ../../../src/tools/iowarrior_i2c.c ../../../src/tools/iowarrior_i2c.h
	$(CC) $(CCFLAGS) $(INCPATHS) -c ../../../src/tools/iowarrior_i2c.c -o iowarrior_i2c.o

clean:
	$(RM) $(TARGET) $(OBJFILES)


