Re: llvm-clang needed for gromacs-2016-1
Jack Howarth <[email protected]>
| Newsgroups | gmane.os.apple.fink.devel |
|---|---|
| Message-ID | <CAP5Ds0Bm+=47-B8xE3ypuNXkn6Ri7P0iB-ZbuQ9gdmtdf4gMbw@mail.gmail.com> |
Hanspeter,
Actually, gromacs got a minor update to 2016.1 so attached are
the info files and patch to build gromacs-2016.1-1 and
gromacs-mpi-2016.1-1.
Jack
ps These are also posted on fink tracker as
https://sourceforge.net/p/fink/package-submissions/4840/
On Sun, Nov 13, 2016 at 1:42 PM, Jack Howarth <[email protected]> wrote:
> Hanspeter,
> It has been a couple of weeks now since I emailed David Fang
> about the update to the llvm39 package to add the proposed llvm-clang,
> libomp-dev and libomp-shlibs split-offs required to cleanly support
> packages like the gromacs/gromacs-mpi-2016-1 updates which require a
> clang that supports -fopenmp without tethering the package to a
> specific llvmXY release. The proposed changes are quite sensible,
> straight-forward and safe...
>
> https://sourceforge.net/p/fink/package-submissions/4831/
> https://sourceforge.net/p/fink/package-submissions/4827/
>
> Index: llvm39.info
> ===================================================================
> RCS file: /cvsroot/fink/dists/10.9-libcxx/stable/main/finkinfo/languages/llvm39.info,v
> retrieving revision 1.2
> diff -u -r1.2 llvm39.info
> --- llvm39.info 27 Oct 2016 04:01:28 -0000 1.2
> +++ llvm39.info 13 Nov 2016 18:26:26 -0000
> @@ -1,7 +1,7 @@
> Info3: <<
> Package: llvm39
> Version: 3.9.0
> -Revision: 1
> +Revision: 2
> Description: Modular and reusable compiler
> License: BSD
> Maintainer: David Fang <[email protected]>
> @@ -54,8 +54,8 @@
>
> PatchFile: %n.patch
> PatchFile-MD5: 6addcbd4c9fe449b3cd006eb48f5219b
> -#PatchFile2: %n-clang.patch
> -#PatchFile2-MD5: d2a2b4207c19b7f09f197ae9769a51d2
> +PatchFile2: %n-clang.patch
> +PatchFile2-MD5: 25a45c309e14611b278c30b782f0d7e5
> #PatchFile3: %n-compiler-rt.patch
> #PatchFile3-MD5: 60ed1415e15b1781f2d58c0db17aab78
> #PatchFile4: %n-polly.patch
> @@ -65,7 +65,7 @@
> #PatchFile6: %n-clang-omp.patch
> #PatchFile6-MD5: 8067f4cc1f58030f7746521d58c776c2
> PatchFile7: %n-clang-iomp5.patch
> -PatchFile7-MD5: 33f21b006473cbdd5feced616b05903b
> +PatchFile7-MD5: d5d9686fd0727c0e1cd953f585f4481d
>
> PatchScript: <<
> #!/bin/sh -ev
> @@ -108,7 +108,7 @@
> pushd tools/clang
> # Apply clang-omp merge before clang patch
> #$patch_filter %{PatchFile6} | patch -p1
> - #$patch_filter %{PatchFile2} | patch -p1
> + $patch_filter %{PatchFile2} | patch -p1
> $patch_filter %{PatchFile7} | patch -p1
> popd
> pushd tools/polly
> @@ -1078,15 +1078,6 @@
> iprefix=%i/$stem
> prefix=%p/$stem
>
> - # Pass path to libLTO.dylib with -lto_library using ld shell script
> - pushd $iprefix/bin
> - cat <<EOF > ./ld
> -#!/bin/sh
> -exec /usr/bin/ld -lto_library %p/opt/llvm-3.9/lib/libLTO.dylib "\$@"
> -EOF
> - chmod ugo+x ./ld
> - popd
> -
> # convenient clang symlinks
> mkdir -p %i/bin
> pushd %i/bin
> @@ -1112,6 +1103,26 @@
> cp %b/../build/last/*-check.log testlogs/
> cp %b/../build/last-libcxx/*-check.log testlogs/
> popd
> +
> +# place omp.h in %p/include/libomp for common libomp-dev package
> + install -d %i/include/libomp
> + pushd %i/opt/llvm-$brv/lib/clang/%v/include
> + mv omp.h %i/include/libomp
> + popd
> +
> +# place libomp.dylib in libomp subdirectory for common libomp-shlibs package
> +# leave legacy copy in %p/opt/llvm-$brv/lib for clang39-shlibs
> + install -d %i/lib/libomp
> + pushd %i/opt/llvm-$brv/lib
> + cp libomp.dylib %i/lib/libomp
> + ln -s libomp.dylib %i/lib/libomp/libiomp5.dylib
> + ln -s libomp.dylib %i/lib/libomp/libgomp.dylib
> + popd
> + install_name_tool -id %p/lib/libomp/libomp.dylib %i/lib/libomp/libomp.dylib
> +
> +# create compiler symlinks for common llvm-clang split-off
> + ln -s clang-$brv %i/bin/llvm-clang
> + ln -s clang++-$brv %i/bin/llvm-clang++
> <<
> SplitOff: <<
> Package: clang39-tools
> @@ -1178,7 +1189,9 @@
> # odcctools,
> # choosing to require opt-in instead of defaulting to libcxx1-dev
> # libcxx1-dev,
> + libomp-dev (>= %v-%r),
> clang39-shlibs (= %v-%r),
> + libomp-shlibs (>= %v-%r),
> polly39-shlibs (= %v-%r)
> <<
> Description: Executables and runtime for clang compiler
> @@ -1186,7 +1199,6 @@
> Files: <<
> bin/clang*
> opt/llvm-3.9/bin/clang*
> - opt/llvm-3.9/bin/ld
> opt/llvm-3.9/lib/clang
> <<
> DescUsage: <<
> @@ -1313,6 +1325,37 @@
> <<
> <<
> SplitOff14: <<
> + Package: libomp-shlibs
> + Description: Standard library for libomp
> + Files: <<
> + (%m != powerpc) lib//libomp/lib*omp*.dylib
> + <<
> + DocFiles: <<
> + projects/openmp/CREDITS.txt
> + projects/openmp/LICENSE.txt
> + <<
> + Shlibs: <<
> + (%m != powerpc) %p/lib/libomp/libomp.dylib 5.0.0 %n (>= 3.9.0-2)
> + <<
> +<<
> +SplitOff15: <<
> + Package: libomp-dev
> + Description: Standard library header for libomp
> + Depends: libomp-shlibs (= %v-%r)
> + BuildDependsOnly: false
> + Files: include/libomp/omp.h
> + DescPackaging: <<
> + BuildDependsOnly set to false since clang compiler always needs
> + access to omp.h at run-time.
> + <<
> +<<
> +SplitOff16: <<
> + Package: llvm-clang
> + Description: LLVM.org clang compilers
> + Depends: clang39 (= %v-%r)
> + Files: bin/llvm-clang bin/llvm-clang++
> +<<
> +SplitOff17: <<
> Package: %N-bundle
> Description: Bundle of LLVM/Clang compiler tools
> Type: bundle
>
> I would also point out that David left the details of the openmp
> support in the llvmXY packaging up to me since I was working with the
> upstream developers to make sure the openmp support on darwin had no
> regressions compared to linux.
> Please go ahead and commit the attached packaging files into the
> 10.9-libc++ tree so we can have the current version of gromacs and
> gromacs-mpi. Thanks in advance.
>
> Jack
> ps This refactoring of llvm39 is *extremely* useful to other fink
> package maintainers as it simplifies their task of building against a
> -fopenmp-savvy clang to just adding a
>
> BuildDepends: llvm-clang, libomp-dev
> Depends: libomp-shlibs
>
> which will result in the llvm-clang split-off from the most recent
> llvmXY package being used. It also fully decouples the libomp.dylib
> and omp.h dependencies from a specific llvmXY package.
>
> pos The deprecation of the ld script again is now allowed by the back
> port of the llvm 4.0 changes to clang in llvm39-clang.patch which
> cause the compiler to automatically emit -lto_library for the linkage
> with the correct path to the libLTO.dylib bundled with the specific
> llvmXY release.
------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today. http://sdm.link/xeonphi
_______________________________________________
Fink-devel mailing list
[email protected]
List archive:
http://news.gmane.org/gmane.os.apple.fink.devel
Subscription management:
https://lists.sourceforge.net/lists/listinfo/fink-devel
gromacs.info
(application/octet-stream, 4.2 KB) - not displayed
gromacs-mpi.info
(application/octet-stream, 4.4 KB) - not displayed
gromacs-libxml2.patch
(application/octet-stream, 444 B)
--- gromacs-2016/CMakeLists.txt.orig 2016-10-30 10:02:20.000000000 -0400 +++ gromacs-2016/CMakeLists.txt 2016-10-30 10:02:42.000000000 -0400 @@ -475,6 +475,7 @@ # tests. This exports LIBXML2_FOUND, which we should not use because # it does not tell us that linking will succeed. Instead, we test that # next. +set(LIBXML2_LIBRARIES @FINKPREFIX@/lib/libxml2.dylib) #if(DEFINED LIBXML2_LIBRARIES) # set(LibXml2_FIND_QUIETLY TRUE) #endif()