Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-ml/llvm-ocaml/
Date: Mon, 24 Jul 2017 19:04:03
Message-Id: 1500923025.8f0fe0d81d61c0117a4a0c67e98f6352d172c1f3.mgorny@gentoo
1 commit: 8f0fe0d81d61c0117a4a0c67e98f6352d172c1f3
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Sun Jul 23 16:44:05 2017 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Mon Jul 24 19:03:45 2017 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8f0fe0d8
7
8 dev-ml/llvm-ocaml: Branch for 5.0.0 release
9
10 dev-ml/llvm-ocaml/llvm-ocaml-5.0.9999.ebuild | 130 +++++++++++++++++++++++++++
11 1 file changed, 130 insertions(+)
12
13 diff --git a/dev-ml/llvm-ocaml/llvm-ocaml-5.0.9999.ebuild b/dev-ml/llvm-ocaml/llvm-ocaml-5.0.9999.ebuild
14 new file mode 100644
15 index 00000000000..052fa649710
16 --- /dev/null
17 +++ b/dev-ml/llvm-ocaml/llvm-ocaml-5.0.9999.ebuild
18 @@ -0,0 +1,130 @@
19 +# Copyright 1999-2017 Gentoo Foundation
20 +# Distributed under the terms of the GNU General Public License v2
21 +
22 +EAPI=6
23 +
24 +: ${CMAKE_MAKEFILE_GENERATOR:=ninja}
25 +# (needed due to CMAKE_BUILD_TYPE != Gentoo)
26 +CMAKE_MIN_VERSION=3.7.0-r1
27 +PYTHON_COMPAT=( python2_7 )
28 +
29 +inherit cmake-utils git-r3 llvm python-any-r1
30 +
31 +DESCRIPTION="OCaml bindings for LLVM"
32 +HOMEPAGE="https://llvm.org/"
33 +SRC_URI=""
34 +EGIT_REPO_URI="https://git.llvm.org/git/llvm.git
35 + https://github.com/llvm-mirror/llvm.git"
36 +EGIT_BRANCH="release_50"
37 +
38 +# Keep in sync with sys-devel/llvm
39 +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430
40 + NVPTX PowerPC RISCV Sparc SystemZ X86 XCore )
41 +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
42 +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/?}
43 +
44 +LICENSE="UoI-NCSA"
45 +SLOT="0/${PV}"
46 +KEYWORDS=""
47 +IUSE="test ${ALL_LLVM_TARGETS[*]}"
48 +
49 +RDEPEND="
50 + >=dev-lang/ocaml-4.00.0:0=
51 + dev-ml/ocaml-ctypes:=
52 + ~sys-devel/llvm-${PV}:=[${LLVM_TARGET_USEDEPS// /,}]
53 + !sys-devel/llvm[ocaml(-)]"
54 +# configparser-3.2 breaks the build (3.3 or none at all are fine)
55 +DEPEND="${RDEPEND}
56 + dev-lang/perl
57 + dev-ml/findlib
58 + test? ( dev-ml/ounit
59 + $(python_gen_any_dep "~dev-python/lit-${PV}[\${PYTHON_USEDEP}]") )
60 + !!<dev-python/configparser-3.3.0.2
61 + ${PYTHON_DEPS}"
62 +
63 +REQUIRED_USE="${PYTHON_REQUIRED_USE}
64 + || ( ${ALL_LLVM_TARGETS[*]} )"
65 +
66 +# least intrusive of all
67 +CMAKE_BUILD_TYPE=RelWithDebInfo
68 +
69 +python_check_deps() {
70 + ! use test \
71 + || has_version "dev-python/lit[${PYTHON_USEDEP}]"
72 +}
73 +
74 +pkg_setup() {
75 + LLVM_MAX_SLOT=${PV%%.*} llvm_pkg_setup
76 + python-any-r1_pkg_setup
77 +}
78 +
79 +src_prepare() {
80 + # Python is needed to run tests using lit
81 + python_setup
82 +
83 + # User patches
84 + eapply_user
85 +}
86 +
87 +src_configure() {
88 + local libdir=$(get_libdir)
89 + local mycmakeargs=(
90 + -DLLVM_LIBDIR_SUFFIX=${libdir#lib}
91 +
92 + -DBUILD_SHARED_LIBS=ON
93 + -DLLVM_OCAML_OUT_OF_TREE=ON
94 + -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
95 + -DLLVM_BUILD_TESTS=$(usex test)
96 +
97 + # disable various irrelevant deps and settings
98 + -DLLVM_ENABLE_FFI=OFF
99 + -DLLVM_ENABLE_TERMINFO=OFF
100 + -DHAVE_HISTEDIT_H=NO
101 + -DWITH_POLLY=OFF
102 + -DLLVM_ENABLE_ASSERTIONS=OFF
103 + -DLLVM_ENABLE_EH=ON
104 + -DLLVM_ENABLE_RTTI=ON
105 +
106 + -DLLVM_HOST_TRIPLE="${CHOST}"
107 +
108 + # disable go bindings
109 + -DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND
110 +
111 + # TODO: ocamldoc
112 + )
113 +
114 + use test && mycmakeargs+=(
115 + -DLIT_COMMAND="${EPREFIX}/usr/bin/lit"
116 + )
117 +
118 + cmake-utils_src_configure
119 +
120 + local llvm_libdir=$(llvm-config --libdir)
121 + # an ugly hack; TODO: figure out a way to pass -L to ocaml...
122 + cd "${BUILD_DIR}/${libdir}" || die
123 + ln -s "${llvm_libdir}"/*.so . || die
124 +
125 + if use test; then
126 + local llvm_bindir=$(llvm-config --bindir)
127 + # Force using system-installed tools.
128 + sed -i -e "/llvm_tools_dir/s@\".*\"@\"${llvm_bindir}\"@" \
129 + "${BUILD_DIR}"/test/lit.site.cfg || die
130 + fi
131 +}
132 +
133 +src_compile() {
134 + cmake-utils_src_compile ocaml_all
135 +}
136 +
137 +src_test() {
138 + # respect TMPDIR!
139 + local -x LIT_PRESERVES_TMP=1
140 + cmake-utils_src_make check-llvm-bindings-ocaml
141 +}
142 +
143 +src_install() {
144 + DESTDIR="${D}" \
145 + cmake -P "${BUILD_DIR}"/bindings/ocaml/cmake_install.cmake || die
146 +
147 + dodoc bindings/ocaml/README.txt
148 +}