PROJECT_NAME            = VimbaCPP

PROJECT_DIR             = ../..
VIMBASDK_DIR            = $(PROJECT_DIR)/..
MAKE_INCLUDE_DIR        = $(CURDIR)

include $(MAKE_INCLUDE_DIR)/Common.mk

CONFIG_DIR          = $(ARCH)_$(WORDSIZE)bit
BIN_FILE            = lib$(PROJECT_NAME).so
BIN_DIR             = dynamic/$(CONFIG_DIR)
OBJ_DIR             = object/$(CONFIG_DIR)
BIN_PATH            = $(BIN_DIR)/$(BIN_FILE)

all: $(BIN_PATH)

include $(MAKE_INCLUDE_DIR)/VimbaC.mk

SOURCE_DIR          = $(PROJECT_DIR)/Source
INCLUDE_DIRS        = -I$(PROJECT_DIR)/..

LIBS                = $(VIMBAC_LIBS) \
                      -lpthread

DEFINES             =

CFLAGS              = $(COMMON_CFLAGS) \
                      $(VIMBAC_CFLAGS)

OBJ_FILES           = $(OBJ_DIR)/AncillaryData.o \
		      $(OBJ_DIR)/BaseFeature.o \
                      $(OBJ_DIR)/BasicLockable.o \
                      $(OBJ_DIR)/BoolFeature.o \
                      $(OBJ_DIR)/Camera.o \
                      $(OBJ_DIR)/Clock.o \
                      $(OBJ_DIR)/CommandFeature.o \
                      $(OBJ_DIR)/Condition.o \
                      $(OBJ_DIR)/ConditionHelper.o \
                      $(OBJ_DIR)/DefaultCameraFactory.o \
                      $(OBJ_DIR)/EnumEntry.o \
                      $(OBJ_DIR)/EnumFeature.o \
                      $(OBJ_DIR)/FeatureContainer.o \
                      $(OBJ_DIR)/Feature.o \
                      $(OBJ_DIR)/FileLogger.o \
                      $(OBJ_DIR)/FloatFeature.o \
                      $(OBJ_DIR)/Frame.o \
                      $(OBJ_DIR)/FrameHandler.o \
                      $(OBJ_DIR)/Interface.o \
                      $(OBJ_DIR)/IntFeature.o \
                      $(OBJ_DIR)/Mutex.o \
                      $(OBJ_DIR)/MutexGuard.o \
                      $(OBJ_DIR)/RawFeature.o \
                      $(OBJ_DIR)/Semaphore.o \
                      $(OBJ_DIR)/StringFeature.o \
                      $(OBJ_DIR)/VimbaSystem.o

DEPENDENCIES        = VimbaC

$(OBJ_DIR)/%.o: $(SOURCE_DIR)/%.cpp $(OBJ_DIR)
	$(CXX) -c $(INCLUDE_DIRS) $(DEFINES) $(CFLAGS) -o $@ $<

$(BIN_PATH): $(DEPENDENCIES) $(OBJ_FILES) $(BIN_DIR)
	$(CXX) -shared $(ARCH_CFLAGS) -o $(BIN_PATH) $(OBJ_FILES) $(LIBS) -Wl,-rpath,'$$ORIGIN'

clean:
	$(RM) dynamic -r -f
	$(RM) object -r -f

$(OBJ_DIR):
	$(MKDIR) -p $(OBJ_DIR)

$(BIN_DIR):
	$(MKDIR) -p $(BIN_DIR)
