PACKAGE_NAME	= SerialPySrv

CXX	?= g++
CXX_OPT ?= -I./ -I../core -L./ -L../core -fPIC -O3 -fopenmp -DMULTH=$(NUM_MULTH) -std=c++11
NUM_MULTH ?= 8

PyVer ?= $(shell python3 --version 2>&1 | cut -d" " -f2 | cut -d. -f1-2 )

DIST_NAME ?= RH7
NUM_MULTH ?= 8

SWIG ?= swig
PyLib ?= $(PyVer)
PyMaj ?= $(shell echo $(PyVer) | cut -d. -f1)

INITFILE = __init__.py

ifeq ($(PyMaj),3)
	INITFILE = __init3__.py
ifeq ($(DIST_NAME),RH7)
	PyLib := $(PyVer)m
endif
ifeq ($(DIST_NAME),Ubuntu16)
	PyLib := $(PyVer)m
endif
	PyInc ?= /usr/include/python$(PyLib)
endif

PyInc ?= /usr/include/python$(PyVer)

CXX_OPT := -DPyMaj=$(PyMaj) -I$(PyInc) ${CXX_OPT}
SWIG_OPT := -DPyMaj=$(PyMaj)

PKG_SOVER ?=
PREFIX ?= $(MANYO_PATH)
PY_PREFIX ?= $(PREFIX)
DESTDIR ?=
MANYO_REV ?= "0"

ifeq ($(PREFIX),$(PY_PREFIX))
	INCDIR=$(PREFIX)/include
	LIBDIR=$(PREFIX)/lib
else
	INCDIR=$(PREFIX)/include/Manyo
	LIBDIR=$(PY_PREFIX)
endif

CXX_OPT := -L$(PREFIX)/lib -I$(PREFIX)/include $(CXX_OPT)

include Makefile.obj

_$(PACKAGE_NAME).so:	$(PACKAGE_NAME)_wrap.o $(OBJS) lib$(PACKAGE_NAME).so
	$(CXX) $(CXX_OPT) -o $@ $(PACKAGE_NAME)_wrap.o -shared -lpython$(PyLib) \
	-pthread -lutil -ldl -L. -lManyo -l$(PACKAGE_NAME)  -lNeXus -lgsl \
	-lgslcblas -lboost_serialization -lboost_filesystem -lboost_system -lssl

ifdef PKG_SOVER
lib$(PACKAGE_NAME).so:	lib$(PACKAGE_NAME).so.$(PKG_SOVER)
	ln -s lib$(PACKAGE_NAME).so.$(PKG_SOVER) lib$(PACKAGE_NAME).so

lib$(PACKAGE_NAME).so.$(PKG_SOVER):	$(OBJS)
	$(CXX) $(CXX_OPT) $(OBJS) -o $@ -shared -Wl,-soname=lib$(PACKAGE_NAME).so.$(PKG_SOVER)  -lNeXus -lgsl -lgslcblas \
	-lboost_serialization -lboost_filesystem -lboost_system -lpython$(PyLib) -pthread -lutil -ldl -lssl
else
lib$(PACKAGE_NAME).so:	$(OBJS)
	$(CXX) $(CXX_OPT) $(OBJS) -o $@ -shared  -lNeXus -lgsl -lgslcblas \
	-lboost_serialization -lboost_filesystem -lboost_system -lpython$(PyLib) -pthread -lutil -ldl -lssl
endif

$(PACKAGE_NAME)_wrap.o:	$(PACKAGE_NAME)_wrap.cxx
	$(CXX) $(CXX_OPT) -c -fPIC $(PACKAGE_NAME)_wrap.cxx  \
	-DPYTHONSERVERPORT=8888 -DJQPORT=8890

$(PACKAGE_NAME).py $(PACKAGE_NAME)_wrap.cxx:	$(PACKAGE_NAME).i
	$(SWIG) $(SWIG_OPT) -c++ -I../core -python $(PACKAGE_NAME).i


SerialPythonServer:	SerialPythonServerMain.o $(OBJS)
	$(CXX) $(CXX_OPT) -o SerialPythonServer SerialPythonServerMain.o \
	-fopenmp -lManyo \
	-lNeXus -lgsl -lgslcblas -lpython$(PyLib) \
	-pthread -lutil -ldl  \
	-lboost_serialization -lboost_filesystem \
	-lboost_system -lboost_program_options \
	-O3 -DPYTHONSERVERPORT=8888 \
	-DJQPORT=8890 -fopenmp -DMULTH=$(NUM_MULTH)

SerialPythonServerMain.o:	sample/SerialPythonServerMain.cpp
	$(CXX) $(CXX_OPT) -DMULTH=$(NUM_MULTH) -c $<

install:	SerialPythonServer _$(PACKAGE_NAME).so $(PACKAGE_NAME).py lib$(PACKAGE_NAME).so
	mkdir -p $(DESTDIR)$(INCDIR)/$(PACKAGE_NAME)
	mkdir -p $(DESTDIR)$(PY_PREFIX)/Manyo/$(PACKAGE_NAME)
	mkdir -p $(DESTDIR)$(PREFIX)/share/Manyo/sample/$(PACKAGE_NAME)
	cp *.cc *.hh $(DESTDIR)$(INCDIR)/$(PACKAGE_NAME)/
	cp -d lib$(PACKAGE_NAME).so* $(DESTDIR)/$(LIBDIR)
	cp $(PACKAGE_NAME).py $(DESTDIR)$(PY_PREFIX)/Manyo/$(PACKAGE_NAME)/
	echo "from ."${PACKAGE_NAME}" import *" > $(DESTDIR)$(PY_PREFIX)/Manyo/$(PACKAGE_NAME)/__init__.py
	cp _$(PACKAGE_NAME).so $(DESTDIR)$(PY_PREFIX)/Manyo/$(PACKAGE_NAME)
	cp SerialPythonServer $(DESTDIR)$(PREFIX)/bin
	cp sample/*.py $(DESTDIR)$(PREFIX)/share/Manyo/sample/$(PACKAGE_NAME)/
	rm -f $(DESTDIR)$(PY_PREFIX)/Manyo/$(PACKAGE_NAME)/*.pyc

clean:
	-rm -rf a.out _$(PACKAGE_NAME).so $(PACKAGE_NAME)_wrap.o \
	$(PACKAGE_NAME)_wrap.cxx lib$(PACKAGE_NAME).so lib$(PACKAGE_NAME).so.* $(OBJS) \
	$(PACKAGE_NAME).py $(PACKAGE_NAME).pyc \
	SerialPythonServerMain.o SerialPythonServer \
	html latex xml interfaces

man:

.cc.o:
	$(CXX) $(CXX_OPT) -DMULTH=$(NUM_MULTH) -c $<


include CC_Files_Dependence

