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

Reply via email to