1 # Copyright 1999-2015 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
7 inherit check-reqs cuda unpacker versionator
9 MYD=$(get_version_component_range 1)_$(get_version_component_range 2)
11 DESCRIPTION="NVIDIA CUDA Toolkit (compiler and friends)"
12 HOMEPAGE="http://developer.nvidia.com/cuda"
13 CURI="http://developer.download.nvidia.com/compute/cuda/${MYD}/rel/installers"
15 amd64? ( ${CURI}/cuda_${PV}_linux_64.run )
16 x86? ( ${CURI}/cuda_${PV}_linux_32.run )"
20 KEYWORDS="-* amd64 x86 ~amd64-linux ~x86-linux"
21 IUSE="debugger doc eclipse profiler"
25 <sys-devel/gcc-4.9[cxx]
27 sys-libs/libtermcap-compat
28 sys-libs/ncurses[tinfo]
30 eclipse? ( >=virtual/jre-1.6 )
31 profiler? ( >=virtual/jre-1.6 )
32 amd64? ( >=x11-drivers/nvidia-drivers-340.32[uvm] )
33 x86? ( <x11-drivers/nvidia-drivers-346.35[uvm] )
38 QA_PREBUILT="opt/cuda/*"
40 CHECKREQS_DISK_BUILD="1500M"
43 # We don't like to run cuda_pkg_setup as it depends on us
47 ewarn "Starting with version 6.5 NVIDIA dropped more and more"
48 ewarn "the support for 32bit linux."
49 ewarn "Be aware that bugfixes and new features may not be available."
50 ewarn "https://dev.gentoo.org/~jlec/distfiles/CUDA_Toolkit_Release_Notes.pdf"
56 unpacker run_files/cuda-linux*.run
60 local cuda_supported_gcc
62 cuda_supported_gcc="4.7 4.8"
65 -e "s:CUDA_SUPPORTED_GCC:${cuda_supported_gcc}:g" \
66 "${FILESDIR}"/cuda-config.in > "${T}"/cuda-config || die
71 local remove="doc jre run_files install-linux.pl "
72 local cudadir=/opt/cuda
73 local ecudadir="${EPREFIX}"${cudadir}
82 mv doc/man/man3/{,cuda-}deprecated.3 || die
86 use debugger || remove+=" bin/cuda-gdb extras/Debugger"
87 ( use profiler || use eclipse ) || remove+=" libnsight"
88 use amd64 || remove+=" cuda-installer.pl"
91 # hack found in install-linux.pl
92 for j in nvvp nsight; do
93 cat > bin/${j} <<- EOF
95 LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:${ecudadir}/lib:${ecudadir}/lib64 \
96 UBUNTU_MENUPROXY=0 LIBOVERLAY_SCROLLBAR=0 \
97 ${ecudadir}/lib${j}/${j} -vm ${EPREFIX}/usr/bin/java
102 use eclipse || remove+=" libnvvp"
103 remove+=" extras/CUPTI"
106 for i in ${remove}; do
107 ebegin "Cleaning ${i}..."
108 if [[ -e ${i} ]]; then
109 find ${i} -delete || die
117 mv * "${ED}"${cudadir} || die
119 cat > "${T}"/99cuda <<- EOF
120 PATH=${ecudadir}/bin$(use profiler && echo ":${ecudadir}/libnvvp")
121 ROOTPATH=${ecudadir}/bin
122 LDPATH=${ecudadir}/lib$(use amd64 && echo "64:${ecudadir}/lib")
127 make_wrapper nvprof "${EPREFIX}"${cudadir}/bin/nvprof "." ${ecudadir}/lib$(use amd64 && echo "64:${ecudadir}/lib")
129 dobin "${T}"/cuda-config
132 pkg_postinst_check() {
134 a="$(version_sort $(cuda-config -s))"; a=( $a )
135 # greatest supported version
138 # if gcc and if not gcc-version is at least greatesst supported
139 if [[ $(tc-getCC) == *gcc* ]] && \
140 ! version_is_at_least $(gcc-version) ${b}; then
142 ewarn "gcc >= ${b} will not work with CUDA"
143 ewarn "Make sure you set an earlier version of gcc with gcc-config"
144 ewarn "or append --compiler-bindir= pointing to a gcc bindir like"
145 ewarn "--compiler-bindir=${EPREFIX}/usr/*pc-linux-gnu/gcc-bin/gcc${b}"
146 ewarn "to the nvcc compiler flags"
152 if [[ ${MERGE_TYPE} != binary ]]; then