#
#
# Copyright Intel Corporation.
# 
# This software and the related documents are Intel copyrighted materials, and
# your use of them is governed by the express license under which they were
# provided to you (License). Unless the License provides otherwise, you may
# not use, modify, copy, publish, distribute, disclose or transmit this
# software or the related documents without Intel's prior written permission.
# 
# This software and the related documents are provided as is, with no express
# or implied warranties, other than those that are expressly stated in the
# License.
#
# Makefile to build C++ binding library

LIB = ar cr
NAME=pgcxx
NAME_MPI=mpi${NAME}
LIBNAME = lib${NAME_MPI}
LD = gcc

ifeq ($(MPI_INST), )
    $(error MPI_INST shoud be defined and point to MPI installation)
endif

ifeq ($(CXX), )
    $(error CXX = c++ compiler should be defined)
endif

all: makelibs makedriver

makelibs: initcxx.o
	mkdir -p lib && ${LIB} lib/${LIBNAME}.a $<
	${LD} ${MIC} -shared -Xlinker -x -Xlinker -soname=${LIBNAME}.so.12 -o lib/${LIBNAME}.so.12.0 $<
	(cd lib && if [ ! -f ${LIBNAME}.so.12 ]; then ln -s ${LIBNAME}.so.12.0 ${LIBNAME}.so.12; fi)
	(cd lib && if [ ! -f ${LIBNAME}.so ]; then ln -s ${LIBNAME}.so.12 ${LIBNAME}.so; fi)

initcxx.o: initcxx.cxx
	${CXX} ${MIC} -c -fpic -I${MPI_INST}/include -Iinclude -Iinclude/intel64 -o initcxx.o $<

makedriver:
	mkdir -p bin
	sed -e 's/g++/${CXX}/' -e 's/mpigc$$gver/${NAME_MPI}/g' \
	-e 's/rpath_opt\=.*/rpath_opt\=/' -e 's/mpicxx/${NAME_MPI}/' ${MPI_INST}/bin/mpigxx > bin/${NAME_MPI}
	chmod 755 bin/${NAME_MPI}

clean:
	-rm -f *.o
	-rm -rf bin
