#
#
# 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 fortran module
LIB = ar cr
NAME=pgf
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

all: makemod

ifeq ($(F90), )
	$(error F90 = f90 compiler should be defined)
endif

makemod: mpi_f08_link_constants.f90 pmpi_f08.f90 mpi_f08_compile_constants.f90 \
		 mpi_c_interface_types.f90 mpi_c_interface.f90 mpi_c_interface_cdesc.f90 \
		 mpi_c_interface_glue.f90 mpi_c_interface_nobuf.f90 mpi_f08.f90 \
		 mpi_f08_callbacks.f90 mpi_f08_link_constants.f90
		${F90} ${MIC} -c -fPIC -I${MPI_INST}/include mpi_c_interface_types.f90
		${F90} ${MIC} -c -fPIC -I${MPI_INST}/include mpi_f08_types.f90
		${F90} ${MIC} -c -fPIC -I${MPI_INST}/include mpi_f08_compile_constants.f90
		${F90} ${MIC} -c -fPIC -I${MPI_INST}/include mpi_c_interface_cdesc.f90
		${F90} ${MIC} -c -fPIC -I${MPI_INST}/include mpi_f08_link_constants.f90
		${F90} ${MIC} -c -fPIC -I${MPI_INST}/include mpi_f08_callbacks.f90
		${F90} ${MIC} -c -fPIC -I${MPI_INST}/include pmpi_f08.f90
		${F90} ${MIC} -c -fPIC -I${MPI_INST}/include mpi_f08.f90
		${F90} ${MIC} -c -fPIC -I${MPI_INST}/include mpi_c_interface_glue.f90
		${F90} ${MIC} -c -fPIC -I${MPI_INST}/include mpi_c_interface_nobuf.f90
		${F90} ${MIC} -c -fPIC -I${MPI_INST}/include mpi_c_interface.f90
		${F90} ${MIC} -c -fPIC -I${MPI_INST}/include mpi_f08_link_constants.f90

		mkdir -p lib && ar cr lib/${LIBNAME}.a *.o
		${F90} ${MIC} -shared -Xlinker -x -Xlinker -soname=${LIBNAME}.so -o lib/${LIBNAME}.so *.o -lrt -ldl

	rm -f *.o
	mkdir -p include/${NAME} && mv *.mod include/${NAME}

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