ROOTDIR = ../../../../..

include $(ROOTDIR)/src/makefile.inc

COMMON_DIR = ./Common

INCLUDES = \
  -I$(COMMON_DIR) \
  -I. \
  -I../../../Include/ \
  -I../../../../../include/Martini

OBJS = $(OBJDIR)/LibraryLoader.o $(OBJDIR)/ThreadSync.o	$(OBJDIR)/OSAL.o \
	$(OBJDIR)/DirectoryHandle.o $(OBJDIR)/ReadOnlyFileMapping.o  $(OBJDIR)/ThreadLocalStorage.o
ifdef IPF
OBJS += $(OBJDIR)/TimeStamp.o
endif

OSALIB = libMartiniOSA.so

.PHONY: Directories

all: release

release: Directories $(OUTDIR)/$(OSALIB)

Directories: $(OBJDIR) $(OUTDIR)

$(OBJDIR):
	mkdir -p $(OBJDIR)

$(OUTDIR):
	mkdir -p $(OUTDIR)

clean:
	rm -f $(OBJS) $(OUTDIR)/$(OSALIB)

$(OBJDIR)/LibraryLoader.o: $(COMMON_DIR)/LibraryLoader.cpp $(COMMON_DIR)/OSAL.h 
	$(CPP_COMPILE) 

$(OBJDIR)/ThreadSync.o: $(COMMON_DIR)/ThreadSync.cpp $(COMMON_DIR)/OSAL.h
	$(CPP_COMPILE)

$(OBJDIR)/OSAL.o: $(COMMON_DIR)/OSAL.cpp $(COMMON_DIR)/OSAL.h
	$(CPP_COMPILE)  
       
$(OBJDIR)/ThreadLocalStorage.o: $(COMMON_DIR)/ThreadLocalStorage.cpp $(COMMON_DIR)/OSAL.h
	$(CPP_COMPILE)
 
$(OBJDIR)/DirectoryHandle.o: $(COMMON_DIR)/DirectoryHandle.cpp $(COMMON_DIR)/OSAL.h
	$(CPP_COMPILE) -D_POSIX_PTHREAD_SEMANTICS

$(OBJDIR)/ReadOnlyFileMapping.o: $(COMMON_DIR)/ReadOnlyFileMapping.cpp $(COMMON_DIR)/OSAL.h
	$(CPP_COMPILE)

ifdef IPF
$(OBJDIR)/TimeStamp.o: ./IPF/TimeStamp.s
	$(CPP_COMPILE)
endif

VER_FILE = OSA.ver

$(OUTDIR)/$(OSALIB): $(OBJS)
	$(CPP_LINK) $(OBJS) -o $@ -ldl -lpthread $(STD_LIBS) $(VER_SCR)

