svn commit: r436025 - in head/lang: . OpenCoarrays OpenCoarrays/files
Tijl Coosemans
tijl at FreeBSD.org
Sun Mar 12 20:25:31 UTC 2017
Author: tijl
Date: Sun Mar 12 20:25:29 2017
New Revision: 436025
URL: https://svnweb.freebsd.org/changeset/ports/436025
Log:
Add lang/OpenCoarrays, an implementation of Fortran coarrays using MPI.
OpenCoarrays is an open-source software project that supports the coarray
Fortran (CAF) parallel programming features of the Fortran 2008 standard
and several features proposed for Fortran 2015.
WWW: http://www.opencoarrays.org/
PR: 217283
Submitted by: Anton Shterenlikht <mexas at bris.ac.uk>
Added:
head/lang/OpenCoarrays/
head/lang/OpenCoarrays/Makefile (contents, props changed)
head/lang/OpenCoarrays/distinfo (contents, props changed)
head/lang/OpenCoarrays/files/
head/lang/OpenCoarrays/files/patch-CMakeLists.txt (contents, props changed)
head/lang/OpenCoarrays/files/patch-src_mpi_CMakeLists.txt (contents, props changed)
head/lang/OpenCoarrays/files/patch-src_mpi_mpi__caf.c (contents, props changed)
head/lang/OpenCoarrays/pkg-descr (contents, props changed)
head/lang/OpenCoarrays/pkg-plist (contents, props changed)
Modified:
head/lang/Makefile
Modified: head/lang/Makefile
==============================================================================
--- head/lang/Makefile Sun Mar 12 20:18:59 2017 (r436024)
+++ head/lang/Makefile Sun Mar 12 20:25:29 2017 (r436025)
@@ -4,6 +4,7 @@
COMMENT = Programming languages
SUBDIR += Gofer
+ SUBDIR += OpenCoarrays
SUBDIR += abcl
SUBDIR += adacontrol
SUBDIR += afnix
Added: head/lang/OpenCoarrays/Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/lang/OpenCoarrays/Makefile Sun Mar 12 20:25:29 2017 (r436025)
@@ -0,0 +1,56 @@
+# Created by: Anton Shterenlikht
+# $FreeBSD$
+
+PORTNAME= OpenCoarrays
+PORTVERSION= 1.8.4
+CATEGORIES= lang
+
+MAINTAINER= mexas at bris.ac.uk
+COMMENT= Transport layer for coarray Fortran compilers
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= bash:shells/bash
+RUN_DEPENDS= bash:shells/bash
+
+USE_GITHUB= yes
+GH_ACCOUNT= sourceryinstitute
+
+USES= cmake:outsource fortran shebangfix
+PLIST_SUB= GCC_VER=${_GCC_VER}
+SHEBANG_FILES= src/extensions/caf-head \
+ src/extensions/cafrun-head
+
+OPTIONS_SINGLE= MPI
+OPTIONS_SINGLE_MPI= MPICH OPENMPI OPENMPI2
+OPTIONS_DEFAULT= MPICH
+
+MPICH_DESC= Parallel processing support via MPICH
+MPICH_BUILD_DEPENDS= mpif90:net/mpich
+MPICH_RUN_DEPENDS= mpif90:net/mpich
+
+OPENMPI_BUILD_DEPENDS= ${LOCALBASE}/mpi/openmpi/bin/mpif90:net/openmpi
+OPENMPI_RUN_DEPENDS= ${LOCALBASE}/mpi/openmpi/bin/mpif90:net/openmpi
+OPENMPI_CONFIGURE_ENV= MPI_HOME=${LOCALBASE}/mpi/openmpi
+
+OPENMPI2_DESC= Parallel processing support via Open MPI v2
+OPENMPI2_BUILD_DEPENDS= ${LOCALBASE}/mpi/openmpi2/bin/mpif90:net/openmpi2
+OPENMPI2_RUN_DEPENDS= ${LOCALBASE}/mpi/openmpi2/bin/mpif90:net/openmpi2
+OPENMPI2_CONFIGURE_ENV= MPI_HOME=${LOCALBASE}/mpi/openmpi2
+
+.include <bsd.port.options.mk>
+
+.if ${GCC_DEFAULT:R} < 5
+IGNORE= This port requires GCC 5 or higher. Add\
+ DEFAULT_VERSIONS+=gcc=5 to /etc/make.conf
+.endif
+
+post-patch:
+ @${REINPLACE_CMD} '/mod_install/s/$${CMAKE_Fortran_COMPILER_VERSION}/${_GCC_VER}/' \
+ ${WRKSRC}/src/mpi/CMakeLists.txt
+
+do-test:
+ (cd ${TEST_WRKSRC} && ctest)
+
+.include <bsd.port.mk>
Added: head/lang/OpenCoarrays/distinfo
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/lang/OpenCoarrays/distinfo Sun Mar 12 20:25:29 2017 (r436025)
@@ -0,0 +1,3 @@
+TIMESTAMP = 1487389722
+SHA256 (sourceryinstitute-OpenCoarrays-1.8.4_GH0.tar.gz) = c40b504a65ea2933a3b68979c4e08dc9522f22b7a8d560d734d1a8bc6bcc1ee7
+SIZE (sourceryinstitute-OpenCoarrays-1.8.4_GH0.tar.gz) = 243759
Added: head/lang/OpenCoarrays/files/patch-CMakeLists.txt
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/lang/OpenCoarrays/files/patch-CMakeLists.txt Sun Mar 12 20:25:29 2017 (r436025)
@@ -0,0 +1,51 @@
+--- CMakeLists.txt.orig 2017-02-07 05:19:01 UTC
++++ CMakeLists.txt
+@@ -164,48 +164,6 @@ if ( (NOT MPI_C_FOUND) OR (NOT MPI_Fortr
+ find_package( MPI REQUIRED )
+ endif()
+
+-#--------------------------------------------------------
+-# Make sure a simple "hello world" C mpi program compiles
+-#--------------------------------------------------------
+-set(OLD_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
+-set(CMAKE_REQUIRED_FLAGS ${MPI_C_COMPILE_FLAGS} ${MPI_C_LINK_FLAGS})
+-set(OLD_INCLUDES ${CMAKE_REQUIRED_INCLUDES})
+-set(CMAKE_REQUIRED_INCLUDES ${MPI_C_INCLUDE_PATH})
+-set(OLD_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+-set(CMAKE_REQUIRED_LIBRARIES ${MPI_C_LIBRARIES})
+-include (CheckCSourceCompiles)
+-CHECK_C_SOURCE_COMPILES("
+-#include <mpi.h>
+-#include <stdio.h>
+-int main(int argc, char** argv) {
+- MPI_Init(NULL, NULL);
+- int world_size;
+- MPI_Comm_size(MPI_COMM_WORLD, &world_size);
+- int world_rank;
+- MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
+- char processor_name[MPI_MAX_PROCESSOR_NAME];
+- int name_len;
+- MPI_Get_processor_name(processor_name, &name_len);
+- printf('Hello world from processor %s, rank %d out of %d processors',
+- processor_name, world_rank, world_size);
+- MPI_Finalize();
+-}"
+-MPI_C_COMPILES)
+-set(CMAKE_REQUIRED_FLAGS ${OLD_REQUIRED_FLAGS})
+-set(CMAKE_REQUIRED_INCLUDES ${OLD_INCLUDES})
+-set(CMAKE_REQUIRED_LIBRARIES ${OLD_LIBRARIES})
+-unset(OLD_REQUIRED_FLAGS)
+-unset(OLD_INCLUDES)
+-unset(OLD_LIBRARIES)
+-
+-if (NOT MPI_C_COMPILES)
+- message(FATAL_ERROR "MPI_C is missing! "
+- "Try setting MPI_C_COMPILER to the appropriate C compiler wrapper script and reconfigure. "
+- "i.e., `cmake -DMPI_C_COMPILER=/path/to/mpicc ..` or set it by editing the cache using "
+- "cmake-gui or ccmake."
+- )
+-endif()
+-
+ #--------------------------------------------------------------
+ # Make sure a simple "hello world" Fortran mpi program compiles
+ # Try using mpi.mod first then fall back on includ 'mpif.h'
Added: head/lang/OpenCoarrays/files/patch-src_mpi_CMakeLists.txt
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/lang/OpenCoarrays/files/patch-src_mpi_CMakeLists.txt Sun Mar 12 20:25:29 2017 (r436025)
@@ -0,0 +1,39 @@
+--- src/mpi/CMakeLists.txt.orig 2017-02-07 05:19:01 UTC
++++ src/mpi/CMakeLists.txt
+@@ -58,15 +58,15 @@ install(TARGETS caf_mpi EXPORT OpenCoarr
+ )
+
+ # Install modules to standard include dir, but namespace them with compiler/version
+-set (mod_install "${CMAKE_INSTALL_FULL_INCLUDEDIR}/OpenCoarrays/${CMAKE_Fortran_COMPILER_ID}/${CMAKE_Fortran_COMPILER_VERSION}")
++set (mod_install "OpenCoarrays/${CMAKE_Fortran_COMPILER_ID}/${CMAKE_Fortran_COMPILER_VERSION}")
+ install(DIRECTORY "${CMAKE_BINARY_DIR}/mod/"
+- DESTINATION "${mod_install}"
++ DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}/${mod_install}"
+ FILES_MATCHING PATTERN "*.mod"
+ )
+
+ # Now add a link in standard include dir so that compilers will find by default... this may or may not actually be a good idea...
+ if ( "${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU" )
+- INSTALL(CODE "execute_process( COMMAND ${CMAKE_COMMAND} -E create_symlink ${mod_install}/opencoarrays.mod ${CMAKE_INSTALL_FULL_INCLUDEDIR}/opencoarrays.mod )"
++ INSTALL(CODE "execute_process( COMMAND ${CMAKE_COMMAND} -E create_symlink ${mod_install}/opencoarrays.mod \$ENV{DESTDIR}${CMAKE_INSTALL_FULL_INCLUDEDIR}/opencoarrays.mod )"
+ )
+ endif ()
+
+@@ -76,7 +76,7 @@ set(exe_dir ${CMAKE_BINARY_DIR}/bin_stag
+ set(compiler_wrapper ${exe_dir}/caf)
+ install(
+ FILES "${compiler_wrapper}"
+- PERMISSIONS WORLD_EXECUTE WORLD_READ WORLD_WRITE OWNER_EXECUTE OWNER_READ OWNER_WRITE GROUP_EXECUTE GROUP_READ GROUP_WRITE
++ PERMISSIONS WORLD_EXECUTE WORLD_READ OWNER_EXECUTE OWNER_READ GROUP_EXECUTE GROUP_READ
+ DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ )
+ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/../extensions/caf-head CAF_HEADER)
+@@ -109,7 +109,7 @@ file(APPEND "${compiler_wrapper}" "${FOO
+ set(caf_launcher ${exe_dir}/cafrun)
+ install(
+ FILES "${caf_launcher}"
+- PERMISSIONS WORLD_EXECUTE WORLD_READ WORLD_WRITE OWNER_EXECUTE OWNER_READ OWNER_WRITE GROUP_EXECUTE GROUP_READ GROUP_WRITE
++ PERMISSIONS WORLD_EXECUTE WORLD_READ OWNER_EXECUTE OWNER_READ GROUP_EXECUTE GROUP_READ
+ DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ )
+ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/../extensions/cafrun-head CAFRUN_HEADER)
Added: head/lang/OpenCoarrays/files/patch-src_mpi_mpi__caf.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/lang/OpenCoarrays/files/patch-src_mpi_mpi__caf.c Sun Mar 12 20:25:29 2017 (r436025)
@@ -0,0 +1,10 @@
+--- src/mpi/mpi_caf.c.orig 2017-02-07 05:19:01 UTC
++++ src/mpi/mpi_caf.c
+@@ -37,7 +37,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
+ #include <stdlib.h>
+ #include <string.h> /* For memcpy. */
+ #include <stdarg.h> /* For variadic arguments. */
+-#include <alloca.h>
+ #include <unistd.h>
+ #include <mpi.h>
+ #include <pthread.h>
Added: head/lang/OpenCoarrays/pkg-descr
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/lang/OpenCoarrays/pkg-descr Sun Mar 12 20:25:29 2017 (r436025)
@@ -0,0 +1,5 @@
+OpenCoarrays is an open-source software project that supports the coarray
+Fortran (CAF) parallel programming features of the Fortran 2008 standard
+and several features proposed for Fortran 2015.
+
+WWW: http://www.opencoarrays.org/
Added: head/lang/OpenCoarrays/pkg-plist
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/lang/OpenCoarrays/pkg-plist Sun Mar 12 20:25:29 2017 (r436025)
@@ -0,0 +1,11 @@
+bin/caf
+bin/cafrun
+include/OpenCoarrays/GNU/%%GCC_VER%%/opencoarrays.mod
+include/libcaf-gfortran-descriptor.h
+include/libcaf.h
+include/opencoarrays.mod
+lib/cmake/opencoarrays/OpenCoarraysConfig.cmake
+lib/cmake/opencoarrays/OpenCoarraysConfigVersion.cmake
+lib/cmake/opencoarrays/OpenCoarraysTargets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/opencoarrays/OpenCoarraysTargets.cmake
+lib/libcaf_mpi.a
More information about the svn-ports-all
mailing list