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-343.22[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
116 ln -sf lib lib32 || die
119 mv * "${ED}"${cudadir} || die
121 cat > "${T}"/99cuda <<- EOF
122 PATH=${ecudadir}/bin$(use profiler && echo ":${ecudadir}/libnvvp")
123 ROOTPATH=${ecudadir}/bin
124 LDPATH=${ecudadir}/lib$(use amd64 && echo "64:${ecudadir}/lib")
129 make_wrapper nvprof "${EPREFIX}"${cudadir}/bin/nvprof "." ${ecudadir}/lib$(use amd64 && echo "64:${ecudadir}/lib")
131 dobin "${T}"/cuda-config
134 pkg_postinst_check() {
136 a="$(version_sort $(cuda-config -s))"; a=( $a )
137 # greatest supported version
140 # if gcc and if not gcc-version is at least greatesst supported
141 if [[ $(tc-getCC) == *gcc* ]] && \
142 ! version_is_at_least $(gcc-version) ${b}; then
144 ewarn "gcc >= ${b} will not work with CUDA"
145 ewarn "Make sure you set an earlier version of gcc with gcc-config"
146 ewarn "or append --compiler-bindir= pointing to a gcc bindir like"
147 ewarn "--compiler-bindir=${EPREFIX}/usr/*pc-linux-gnu/gcc-bin/gcc${b}"
148 ewarn "to the nvcc compiler flags"
154 if [[ ${MERGE_TYPE} != binary ]]; then