1 # Copyright 1999-2016 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-2)
11 DESCRIPTION="NVIDIA CUDA Toolkit (compiler and friends)"
12 HOMEPAGE="http://developer.nvidia.com/cuda"
13 SRC_URI="http://developer.download.nvidia.com/compute/cuda/${MYD}/Prod/local_installers/cuda_${PV}_linux.run"
17 KEYWORDS="-* ~amd64 ~amd64-linux"
18 IUSE="debugger doc eclipse profiler"
22 >=sys-devel/gcc-4.7[cxx]
24 >=x11-drivers/nvidia-drivers-352.39[uvm]
26 sys-libs/libtermcap-compat
27 sys-libs/ncurses[tinfo]
29 eclipse? ( >=virtual/jre-1.6 )
30 profiler? ( >=virtual/jre-1.6 )"
34 QA_PREBUILT="opt/cuda/*"
36 CHECKREQS_DISK_BUILD="1500M"
39 # We don't like to run cuda_pkg_setup as it depends on us
45 unpacker run_files/cuda-linux*.run
49 local cuda_supported_gcc
51 cuda_supported_gcc="4.7 4.8 4.9"
54 -e "s:CUDA_SUPPORTED_GCC:${cuda_supported_gcc}:g" \
55 "${FILESDIR}"/cuda-config.in > "${T}"/cuda-config || die
60 local remove="doc jre run_files install-linux.pl "
61 local cudadir=/opt/cuda
62 local ecudadir="${EPREFIX}"${cudadir}
70 mv doc/man/man3/{,cuda-}deprecated.3 || die
73 use debugger || remove+=" bin/cuda-gdb extras/Debugger"
74 ( use profiler || use eclipse ) || remove+=" libnsight"
75 remove+=" cuda-installer.pl"
78 # hack found in install-linux.pl
79 for j in nvvp nsight; do
80 cat > bin/${j} <<- EOF
82 LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:${ecudadir}/lib:${ecudadir}/lib64 \
83 UBUNTU_MENUPROXY=0 LIBOVERLAY_SCROLLBAR=0 \
84 ${ecudadir}/lib${j}/${j} -vm ${EPREFIX}/usr/bin/java
89 use eclipse || remove+=" libnvvp"
90 remove+=" extras/CUPTI"
93 for i in ${remove}; do
94 ebegin "Cleaning ${i}..."
95 if [[ -e ${i} ]]; then
96 find ${i} -delete || die
103 ln -sf lib lib32 || die
106 mv * "${ED}"${cudadir} || die
108 cat > "${T}"/99cuda <<- EOF
109 PATH=${ecudadir}/bin$(use profiler && echo ":${ecudadir}/libnvvp")
110 ROOTPATH=${ecudadir}/bin
111 LDPATH=${ecudadir}/lib64:${ecudadir}/lib:${ecudadir}/nvvm/lib64
116 make_wrapper nvprof "${EPREFIX}"${cudadir}/bin/nvprof "." ${ecudadir}/lib64:${ecudadir}/lib
118 dobin "${T}"/cuda-config
121 pkg_postinst_check() {
123 a="$(version_sort $(cuda-config -s))"; a=( $a )
124 # greatest supported version
127 # if gcc and if not gcc-version is at least greatesst supported
128 if [[ $(tc-getCC) == *gcc* ]] && \
129 ! version_is_at_least $(gcc-version) ${b}; then
131 ewarn "gcc >= ${b} will not work with CUDA"
132 ewarn "Make sure you set an earlier version of gcc with gcc-config"
133 ewarn "or append --compiler-bindir= pointing to a gcc bindir like"
134 ewarn "--compiler-bindir=${EPREFIX}/usr/*pc-linux-gnu/gcc-bin/gcc${b}"
135 ewarn "to the nvcc compiler flags"
141 if [[ ${MERGE_TYPE} != binary ]]; then