+ -
当前位置:首页 → 问答吧 → [补丁]让makepkg使用icc

[补丁]让makepkg使用icc

时间:2009-10-03

来源:互联网

给makepkg改了个补丁,可以方便点使用icc...
gentoo wiki:http://en.gentoo-wiki.com/wiki/ICC
原文在我的blog:http://huntxu.blogs.mu/2009/10/03/le...work-with-icc/
代码:
A patch making makepkg work with icc by huntxu (mhuntxu[AT]gmail[dot]com)
--- makepkg.orig        2009-10-02 22:40:42.711085370 +0800
+++ makepkg     2009-10-02 22:41:29.349081726 +0800
@@ -703,8 +703,37 @@
 MAKEFLAGS=""
 fi
 
+       # I don't think ccache can be used with icc
+       local useicc=0
+       if [ "$(check_buildenv icc)" = "y" -a "$(check_option icc)" != "n" ]; then
+ if [ -r /etc/package.icc ]; then
+ while read -a target; do
+ if [ "${target}" = "${pkgname}" ]; then
+ useicc=1
+ CC="icc"
+ CXX="icpc"
+ AR="xiar"
+ LD="xild"
+ CFLAGS=${ICCCFLAGS}
+ CXXFLAGS=${ICCCXXFLAGS}
+ export CC CXX AR LD
+ if [ -r /etc/package.icc-cflags ]; then
+ while read target flags; do
+ if [ "${target}" = "${pkgname}" ]; then
+ CFLAGS="$CFLAGS $flags"
+ CXXFLAGS="$CXXFLAGS $flags"
+ break;
+ fi
+ done < /etc/package.icc-cflags
+ fi
+ break
+ fi
+ done < /etc/package.icc
+ fi
+       fi
+
 # use ccache if it is requested (check buildenv and PKGBUILD opts)
-       if [ "$(check_buildenv ccache)" = "y" -a "$(check_option ccache)" != "n" ]; then
+       if [ "${useicc}" = "0" -a "$(check_buildenv ccache)" = "y" -a "$(check_option ccache)" != "n" ]; then
 [ -d /usr/lib/ccache/bin ] && export PATH="/usr/lib/ccache/bin:$PATH"
 fi
当然要先装icc,再在/etc/makepkg.conf里的BUILDENV加上icc,/etc/makepkg里还要加上ICCCFLAGS和ICCCXXFLAGS两个变量,将要使用icc编译的包名写在/etc/package.icc,对应单独的包用icc编译的CFLAGS写到/etc/package.icc-cflags。
如果暂时不想用icc编译已经将名字写入/etc/package.icc的包的话就在PKGBUILD里的option项加!icc...

我只是懒得每次都在configure前加那么多指定环境变量的东西而已...而且既然打包傻瓜化,那就傻瓜化到底吧...
本来还有另一个补丁是把custom的license自动安装到/usr/share/licenses/$pkgname的目录下的,因为我同样懒得每次都在build()里写install -Dm644 LICENSE .... .不过在pacman-dev的ml已经大概被否决了,说这样不符合kiss...

P.S.: 使用icc的话会禁用掉ccache,据我搜索过的东西显示这两个玩意没办法一起用,所以就多了个$useicc的变量~
上传的附件
makepkg-icc.diff.bz2 (674 字节, 4 次查看)

作者: huntxu   发布时间: 2009-10-03

顶! 支持!

作者: carbonjiao   发布时间: 2009-10-03

收藏,支持一下

作者: axlrose   发布时间: 2009-10-03

想问下,AMD的CPU不用这个了吧?

作者: ubuntu590   发布时间: 2009-10-03

引用:
作者: ubuntu590
想问下,AMD的CPU不用这个了吧?
据说icc是x86平台上优化最好的编译器,对AMD平台也一样。不过对AMD CPU优化得有没有自家的好就不得而知了。

作者: socket9999   发布时间: 2009-10-04

那我这个amd X240飘过算了,和和

作者: ubuntu590   发布时间: 2009-10-04

楼主不妨用来编译firefox试试之后再来推荐

作者: fallening   发布时间: 2009-10-04

某人编译完firefox估计黄花菜都凉了

作者: nonplus   发布时间: 2009-10-05

看了楼主的贴,就想装icc试试,没想到有几百M,就放弃了。

作者: chenwenjin   发布时间: 2009-10-05