Index: Makefile =================================================================== --- Makefile (révision 478894) +++ Makefile (copie de travail) @@ -82,7 +82,7 @@ EXTRA_PATCHES+= ${FILESDIR}/extra-patch-src_nvidia-modeset_nvidia-modeset-freebsd.c .endif -OPTIONS_DEFINE= ACPI_PM LINUX WBINVD DOCS +OPTIONS_DEFINE= ACPI_PM LINUX WBINVD DOCS OPTIMUS OPTIONS_DEFINE_i386= PAE OPTIONS_DEFAULT= LINUX @@ -90,6 +90,7 @@ LINUX_DESC= Linux compatibility support PAE_DESC= Physical Address Extensions support WBINVD_DESC= Flush CPU caches directly with WBINVD +OPTIMUS_DESC= Optimus support .if ${NVVERSION} < 310.014 OPTIONS_DEFINE+= FREEBSD_AGP @@ -112,6 +113,14 @@ MAKE_ENV+= WITHOUT_LINUX=yes .endif +.if ${PORT_OPTIONS:MOPTIMUS} +PLIST_SUB+= NONOPT="@comment " +PLIST_SUB+= OPTIMUS="" +.else +PLIST_SUB+= NONOPT="" +PLIST_SUB+= OPTIMUS="@comment " +.endif + post-patch: .SILENT # KPI of kmem_alloc_contig(),kmem_free() changed in FreeBSD src r338143,r338318 .if ${OSVERSION} >= 1200079 @@ -151,8 +160,13 @@ .endif # Adjust installation path of a conflicting file (shared between # nvidia-driver and xorg-server) to ease package manager work +.if ${PORT_OPTIONS:MOPTIMUS} + ${REINPLACE_CMD} -e '/LIBDIR/s:xorg/modules/extensions:&/.nvidia_optimus:' \ + ${WRKSRC}/x11/extension/Makefile +.else ${REINPLACE_CMD} -e '/LIBDIR/s:xorg/modules/extensions:&/.nvidia:' \ ${WRKSRC}/x11/extension/Makefile +.endif # Do not execute afterinstall target (prevent automatic module registration # and "smart" installation of conflicting files heuristics) ${REINPLACE_CMD} -e 's/afterinstall/&_dontexecute/' ${WRKSRC}/Makefile @@ -236,23 +250,33 @@ /libEGL_nvidia\.so\.${PORTVERSION}/d' ${TMPPLIST} .endif # rename libGL.so, libEGL.so and libGLESv2.so - ${MV} -f ${STAGEDIR}${PREFIX}/lib/libGL.so \ +# and do correct symlink + ${RM} ${STAGEDIR}${PREFIX}/lib/libGL.so + ${LN} -sf libGL-NVIDIA.so.1 \ ${STAGEDIR}${PREFIX}/lib/libGL-NVIDIA.so ${MV} -f ${STAGEDIR}${PREFIX}/lib/libGL.so.1 \ ${STAGEDIR}${PREFIX}/lib/libGL-NVIDIA.so.1 .if ${NVVERSION} >= 331.013 - ${MV} -f ${STAGEDIR}${PREFIX}/lib/libEGL.so \ + ${RM} ${STAGEDIR}${PREFIX}/lib/libEGL.so + ${LN} -sf libEGL-NVIDIA.so.1 \ ${STAGEDIR}${PREFIX}/lib/libEGL-NVIDIA.so ${MV} -f ${STAGEDIR}${PREFIX}/lib/libEGL.so.1 \ ${STAGEDIR}${PREFIX}/lib/libEGL-NVIDIA.so.1 - ${MV} -f ${STAGEDIR}${PREFIX}/lib/libGLESv2.so \ + ${RM} ${STAGEDIR}${PREFIX}/lib/libGLESv2.so + ${LN} -sf libGLESv2-NVIDIA.so.2 \ ${STAGEDIR}${PREFIX}/lib/libGLESv2-NVIDIA.so ${MV} -f ${STAGEDIR}${PREFIX}/lib/libGLESv2.so.2 \ ${STAGEDIR}${PREFIX}/lib/libGLESv2-NVIDIA.so.2 .endif @${MKDIR} ${STAGEDIR}${PREFIX}/etc/libmap.d/ +.if ${PORT_OPTIONS:MOPTIMUS} + @${MKDIR} ${STAGEDIR}${PREFIX}/etc/libmap.d/.nvidia ${INSTALL_DATA} ${WRKDIR}/nvidia.conf \ + ${STAGEDIR}${PREFIX}/etc/libmap.d/.nvidia/ +.else + ${INSTALL_DATA} ${WRKDIR}/nvidia.conf \ ${STAGEDIR}${PREFIX}/etc/libmap.d/ +.endif # Target below can be used instead of standard `makesum' to correctly # update distinfo (i.e., keeping other driver version entries intact) Index: pkg-plist =================================================================== --- pkg-plist (révision 478894) +++ pkg-plist (copie de travail) @@ -1,7 +1,8 @@ bin/nvidia-bug-report.sh bin/nvidia-debugdump bin/nvidia-smi -etc/libmap.d/nvidia.conf +%%NONOPT%%etc/libmap.d/nvidia.conf +%%OPTIMUS%%etc/libmap.d/.nvidia/nvidia.conf lib/libGL-NVIDIA.so lib/libGL-NVIDIA.so.1 lib/libEGL-NVIDIA.so @@ -30,8 +31,10 @@ lib/vdpau/libvdpau_nvidia.so.1 man/man1/nvidia-smi.1.gz %%MODULESDIR%%/drivers/nvidia_drv.so -%%MODULESDIR%%/extensions/.nvidia/libglx.so -%%MODULESDIR%%/extensions/.nvidia/libglx.so.1 +%%NONOPT%%%%MODULESDIR%%/extensions/.nvidia/libglx.so +%%NONOPT%%%%MODULESDIR%%/extensions/.nvidia/libglx.so.1 +%%OPTIMUS%%%%MODULESDIR%%/extensions/.nvidia_optimus/libglx.so +%%OPTIMUS%%%%MODULESDIR%%/extensions/.nvidia_optimus/libglx.so.1 /%%KMODDIR%%/nvidia.ko /%%KMODDIR%%/nvidia-modeset.ko %%LINUX%%%%LINUXBASE%%/usr/lib/libEGL.so.%%SHLIB_VERSION%%