.PHONY: all clean install

CC            = mpicc
CFLAGS        = -O2 -std=gnu99 -Wall -Wpointer-arith -fopenmp
RANLIB        = ranlib
AR            = ar
ARFLAGS       = cr
MKDIR_P       = install -m 755 -d
INSTALL       = install
LIBDIR        = /usr/local/lib
BINDIR        = /usr/local/bin
INCDIR        = /usr/local/include
LIBTLOG       = libtlog_mpi.a
TLOGVIEW      = ./bin/tlogview
TLOGVIEW_JAR  = ./bin/tlogview.jar
OBJECTS       = tlog.o tlog_event.o tlog_misc.o tlog-time.o
HEADERS       = tlog_mpi.h tlog_event.h
LIBS          = $(LIBTLOG)
SOFLAGS       = -shared
PICFLAGS      = -fPIC
TMP_DIR       = .libs
FALSE         = 1
TRUE          = 0
ENABLE_SHARED = 1

ifeq ($(ENABLE_SHARED), $(TRUE))
	LIBS := $(LIBS) $(LIBTLOG:.a=.so)
endif

all: $(LIBS)
$(OBJECTS): $(HEADERS)
$(LIBTLOG): $(OBJECTS)
	rm -f $@
	$(AR) $(ARFLAGS) $@ $^
	$(RANLIB) $@

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

$(LIBTLOG:.a=.so): $(addprefix $(TMP_DIR)/, $(OBJECTS))
	rm -f $@
	$(CC) $(SOFLAGS) $(PICFLAGS) $^ -o $@

$(TMP_DIR)/%.o : %.c
	@$(MKDIR_P) $(TMP_DIR)
	$(CC) $(CFLAGS) -c $< $(PICFLAGS) -o $@

clean:
	rm -rf $(LIBTLOG) *.o $(TMP_DIR) $(LIBS)

install: $(LIBTLOG) $(TLOGVIEW_JAR) $(TLOGVIEW) $(HEADERS)
	$(MKDIR_P) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(INCDIR)
	$(INSTALL) $(LIBS) $(TLOGVIEW_JAR) $(DESTDIR)$(LIBDIR)
	$(INSTALL) $(TLOGVIEW) $(DESTDIR)$(BINDIR)
	$(INSTALL) $(HEADERS) $(DESTDIR)$(INCDIR)

