On Thu, Nov 28, 2013 at 09:48:59PM +0400, Vadim Zhukov wrote:
> 2013/11/28 Juan Francisco Cantero Hurtado <[email protected]>:
> > On Wed, Nov 27, 2013 at 11:00:29PM +0000, Stuart Henderson wrote:
> >> On 2013/11/27 23:56, Juan Francisco Cantero Hurtado wrote:
> >> > On Wed, Nov 27, 2013 at 07:38:32PM +0000, Stuart Henderson wrote:
> >> > > On 2013/11/27 22:53, Vadim Zhukov wrote:
> >> > > > > Why not add support for ports-gcc/clang?. The symlinks only works
> >> > > > > with
> >> > > > > base-gcc but ccache can work with any compiler using
> >> > > > > "CCACHE_CC=mycompiler". I think a script in ${WRKDIR}/bin with
> >> > > > > "CCACHE_CC=mycompiler ccache $@" inside or something similar
> >> > > > > should be
> >> > > > > enough.
> >> > > >
> >> > > > Won't work for more than one language: either C or C++, but not both.
> >> > >
> >> > > something like (untested)
> >> > >
> >> > > .if !empty(_MODGCC4_LINKS)
> >> > > . for _src _dest in ${_MODGCC4_LINKS}
> >> > > . if ${USE_CCACHE:L} == "yes"
> >> > > printf '#!/bin/sh\nexec CCACHE_CC="${_src}" ccache $@\n' >
> >> > > ${WRKDIR}/bin/${_dest}
> >> > > chmod +x ${WRKDIR}/bin/${_dest}
> >> > > . else
> >> > > MODGCC4_post-patch += ln -sf ${LOCALBASE}/bin/${_src}
> >> > > ${WRKDIR}/bin/${_dest};
> >> > > . endif
> >> > > . endfor
> >> > > .endif
> >> > >
> >> >
> >> > *** Parse error in /usr/ports/www/webkit: Need an operator in '''
> >> > (/usr/ports/lang/gcc/4.6/gcc4.port.mk:81)
> >> > *** Parse error: Need an operator in '/bin/gcc'
> >> > (/usr/ports/lang/gcc/4.6/gcc4.port.mk:82)
> >> > *** Parse error: Need an operator in '''
> >> > (/usr/ports/lang/gcc/4.6/gcc4.port.mk:81)
> >> > *** Parse error: Need an operator in '/bin/cc'
> >> > (/usr/ports/lang/gcc/4.6/gcc4.port.mk:82)
> >> > *** Parse error: Need an operator in '''
> >> > (/usr/ports/lang/gcc/4.6/gcc4.port.mk:81)
> >> > *** Parse error: Need an operator in '/bin/g++'
> >> > (/usr/ports/lang/gcc/4.6/gcc4.port.mk:82)
> >> > *** Parse error: Need an operator in '''
> >> > (/usr/ports/lang/gcc/4.6/gcc4.port.mk:81)
> >> > *** Parse error: Need an operator in '/bin/c++'
> >> > (/usr/ports/lang/gcc/4.6/gcc4.port.mk:82)
> >> >
> >> > Line 81 is the printf.
> >> >
> >> > --
> >> > Juan Francisco Cantero Hurtado http://juanfra.info
> >> >
> >>
> >> Oh yes, that needs some "MODGCC4_post-patch +="
> >>
> >
> > MODGCC4_post-patch += printf '#!/bin/sh\nexec CCACHE_CC="${_src}" ccache
> > $@\n' > ${WRKDIR}/bin/${_dest}
> > MODGCC4_post-patch += chmod +x ${WRKDIR}/bin/${_dest}
> >
> > or
> >
> > MODGCC4_post-patch += printf '#!/bin/sh\nexec CCACHE_CC="${_src}" ccache
> > $@\n' > ${WRKDIR}/bin/${_dest}; chmod +x ${WRKDIR}/bin/${_dest}
> >
> > These lines don't work. Webkit uses ccache with system-gcc.
>
> I had success with x11/vlc, Clang and the following patch.
> If the idea is welcome, I can do and run more changes/tests.
OK to the patch. Works for me.
The same changes within gcc4.port.mk doesn't work. I can't find where is
the problem :(
>
> --
> WBR,
> Vadim Zhukov
>
>
> Index: lang/clang/clang.port.mk
> ===================================================================
> RCS file: /cvs/ports/lang/clang/clang.port.mk,v
> retrieving revision 1.6
> diff -u -p -r1.6 clang.port.mk
> --- lang/clang/clang.port.mk 27 Nov 2013 20:42:08 -0000 1.6
> +++ lang/clang/clang.port.mk 28 Nov 2013 17:46:11 -0000
> @@ -29,21 +29,29 @@ _MODCLANG_ARCH_USES = Yes
>
> _MODCLANG_LINKS =
> .if ${_MODCLANG_ARCH_USES:L} == "yes"
> -# not supported for all languages Clang supports
> -NO_CCACHE = Yes
>
> BUILD_DEPENDS += devel/llvm>=${MODCLANG_VERSION}
> _MODCLANG_LINKS = clang gcc clang cc
>
> -.if ${MODCLANG_LANGS:L:Mc++}
> +. if ${MODCLANG_LANGS:L:Mc++}
> _MODCLANG_LINKS += clang++ g++ clang++ c++
> -.endif
> +. endif
> .endif
>
> .if !empty(_MODCLANG_LINKS)
> -. for _src _dest in ${_MODCLANG_LINKS}
> +. if "${USE_CCACHE:L}" == "yes" && "${NO_CCACHE:L}" != "yes"
> +. for _src _dest in ${_MODCLANG_LINKS}
> +MODCLANG_post-patch += rm -f ${WRKDIR}/bin/${_dest};
> +MODCLANG_post-patch += echo '\#!/bin/sh' >${WRKDIR}/bin/${_dest};
> +MODCLANG_post-patch += echo exec ccache ${LOCALBASE}/bin/${_src}
> \"\$$@\"
> +MODCLANG_post-patch += >>${WRKDIR}/bin/${_dest};
> +MODCLANG_post-patch += chmod +x ${WRKDIR}/bin/${_dest};
> +. endfor
> +. else
> +. for _src _dest in ${_MODCLANG_LINKS}
> MODCLANG_post-patch += ln -sf ${LOCALBASE}/bin/${_src}
> ${WRKDIR}/bin/${_dest};
> -. endfor
> +. endfor
> +. endif
> .endif
>
> SUBST_VARS+= MODCLANG_VERSION
>
--
Juan Francisco Cantero Hurtado http://juanfra.info