move the F77 compiler tests later in configure

The configure script could accidentally override the user's selection
of Fortran compiler for mpif77. Move AC_PROG_F77 until after we've
potentially set F77 = FC.

Signed-off-by: Pavan Balaji <balaji@anl.gov>
pamid: mpid_win_* fixes
pamid: support downlevel pami 'is_local_task' extension
pamid: fixes for MPI_Win_allocate_shared on BG/Q.

Tested using the mpich testsuite and the following command:

  make testing MPITEST_PROGRAM_WRAPPER=" --ranks-per-node=8 --block R00-M1-N10 --timeout 60 --envs BG_MAPCOMMONHEAP=1 : " MPIEXEC=runjob V=1
cleanup .gitignore for src/env directory

No reviewer
pamid: datatype is not freed in MPID_Win_accumulate

In MPID_Win_accumulate, when processing non-contiguous datatype
for origin, the ref_count of datatype is incremented by one which
prevents the space allocated for contents and datatloop from being freed.

  MPID_Datatype_add_ref(req->origin.dt.pointer);

In the routine, the data is processed by MPIR_Localcopy and no need to
increment the reference count (ref_count) of the object by 1.

Signed-off-by: Michael Blocksome <blocksom@us.ibm.com>
pamid: memory leak on handles for request based RMA operations

Request based RMA communication operations require that each operation
allocates a communication request object and associates it with the request
handle (the argument request) that can be used to wait or test for
completion. Both the structures for the request handle and the window
structure are not being freed. The problem is when the request handle
is created, the ref_count of the object is set to 2. When
MPID_Request_releas_inline() is called by a request based RMA operation,
the ref_count of the handle is decremented to 1. The allocated memory spaces
are freed only if ref_count is equal to 0.

To fix the problem, set the ref_count to 1 when the request handle is
created. In MPID_Request_release_inline, the routine decrements the
ref_count to 0 which leads the memory space be freed.

Signed-off-by: Michael Blocksome <blocksom@us.ibm.com>
pamid: fix a bug in MPID_Win_free

MPID_Win_allocated_shared(), the routine could obtain memory space via either
shmget() or MPIU_Malloc() if one task on a node. In MPID_Win_free(), the
routine only frees shared memory space.

The fix is to free none-shared space if there is one.

Signed-off-by: Michael Blocksome <blocksom@us.ibm.com>
pamid: mapped datatypes needed to be unmapped

for one-sided communication, the completion of a local operation is when
the completion handler of the operation is activated. The datatype
associated with the operation can not be freed until the completion
handler is activated which is MPIDI_Win_DoneCB. In the current code, the
mapped datatype is unmapped immediately freed after the routine gets the
control from PAMI calls. The calls could be PAMI_Send, PAMI_Get, PAMI_Rget,
PAMI_Put and PAMI_Rget. Please note that the datatype is needed for PAMI
to process the data.

The fix is to unmap the datatype in MPIDI_Win_DoneCB() and remove all
"unmap" datatype operations from put and get operations.

Signed-off-by: Michael Blocksome <blocksom@us.ibm.com>
Add an example f08 binding

The code is provided by Steve Oyanagi and Bill Long from Cray.

No review since F08 binding is experimental now.
Remove support subarray in mpi_f08_constants.f90

The MPI-3 standard is broken in a bunch of ways with respect to
subarrays support.  For example, it is unclear as to which functions
can be passed a subarray and which cannot.  This is being fixed by the
WG.  In the meanwhile, we'll disable subarray types.

No review since F08 binding is experimental now.
Add an almost complete F08 binding with dir re-arranged

Redesigned the binding infrastructer and gave an almost complete F08 binding.
Remaining tasks include :

1) supporting non-contiguous subarray on the C wrapper side.
2) Use a script to autoset the now hard-coded compile time constants.

The directory structure is as following:

use_mpi_f08/                      --- To put F08 binding header files
use_mpi_f08/wrappers_f/           --- To put Fortran wrapper files
use_mpi_f08/wrappers_f/profiling/ --- To put PMPI Fortran wrapper files
use_mpi_f08/wrappers_c/           --- To put C wrapper files (auto-gen'ed or not)

Note we use *.F90 suffix instead of *.f90, since .F90 supports macro preprocess.
This leaves room for future revision. Additionally, the tests directory is removed
since it should not be there.

No review since F08 binding is experimental now.
Add a script use_mpi_f08/buildiface

The script will
1) generate PMPI files. For PMPI specific procedure names, we use PMPIR_* instead
   of PMPI_*, since the later is reserved by MPI.
2) generate use_mpi_f08/Makefile.mk

No review since F08 binding is experimental now.
Add a script use_mpi_f08/wrappers_c/buildiface

This script is used to generate C wrapper files

No review since F08 binding is experimental now.
Update the build system to include F08 binding

This includes a configure test to check if the compiler supports F08.

No review since F08 binding is experimental now.
Update .gitignore to skip autogenerated files

No review since F08 binding is experimental now.
setup framework for Fortran 2008 tests

Adds configure logic and a stub Makefile for Fortran 2008 tests.

No review since F08 binding is experimental now.
convert f90 tests to f08

Copies a sampling of tests from the f90 directory and converts them
to use the f08 bindings.

No review since it is experimental.
build system fixes for f08

No review since F08 binding is experimental now.
update CHANGES for F08

No review since F08 binding is experimental now.