LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1013|回复: 8

[补丁]让makepkg使用icc

[复制链接]
发表于 2009-10-3 02:14:24 | 显示全部楼层 |阅读模式
给makepkg改了个补丁,可以方便点使用icc...
gentoo wiki:http://en.gentoo-wiki.com/wiki/ICC
原文在我的blog:http://huntxu.blogs.mu/2009/10/03/let-makepkg-work-with-icc/
  1. A patch making makepkg work with icc by huntxu (mhuntxu[AT]gmail[dot]com)
  2. --- makepkg.orig        2009-10-02 22:40:42.711085370 +0800
  3. +++ makepkg        2009-10-02 22:41:29.349081726 +0800
  4. @@ -703,8 +703,37 @@
  5.                 MAKEFLAGS=""
  6.         fi

  7. +        # I don't think ccache can be used with icc
  8. +        local useicc=0
  9. +        if [ "$(check_buildenv icc)" = "y" -a "$(check_option icc)" != "n" ]; then
  10. +          if [ -r /etc/package.icc ]; then
  11. +                        while read -a target; do
  12. +                                if [ "${target}" = "${pkgname}" ]; then
  13. +                                        useicc=1
  14. +                                        CC="icc"
  15. +                                        CXX="icpc"
  16. +                                        AR="xiar"
  17. +                                        LD="xild"
  18. +                                        CFLAGS=${ICCCFLAGS}
  19. +                                        CXXFLAGS=${ICCCXXFLAGS}
  20. +                                        export CC CXX AR LD
  21. +                                        if [ -r /etc/package.icc-cflags ]; then
  22. +                                                while read target flags; do
  23. +                                                        if [ "${target}" = "${pkgname}" ]; then
  24. +                                                                CFLAGS="$CFLAGS $flags"
  25. +                                                                CXXFLAGS="$CXXFLAGS $flags"
  26. +                                                                break;
  27. +                                                        fi
  28. +                                                done < /etc/package.icc-cflags
  29. +                                        fi
  30. +                                        break
  31. +                                fi
  32. +                        done < /etc/package.icc
  33. +                fi
  34. +        fi
  35. +
  36.         # use ccache if it is requested (check buildenv and PKGBUILD opts)
  37. -        if [ "$(check_buildenv ccache)" = "y" -a "$(check_option ccache)" != "n" ]; then
  38. +        if [ "${useicc}" = "0" -a "$(check_buildenv ccache)" = "y" -a "$(check_option ccache)" != "n" ]; then
  39.                 [ -d /usr/lib/ccache/bin ] && export PATH="/usr/lib/ccache/bin:$PATH"
  40.         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的变量~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2009-10-3 07:46:05 | 显示全部楼层
顶! 支持!
回复 支持 反对

使用道具 举报

发表于 2009-10-3 16:15:51 | 显示全部楼层
收藏,支持一下
回复 支持 反对

使用道具 举报

发表于 2009-10-3 16:46:29 | 显示全部楼层
想问下,AMD的CPU不用这个了吧?
回复 支持 反对

使用道具 举报

发表于 2009-10-3 20:03:03 | 显示全部楼层
Post by ubuntu590;2032687
想问下,AMD的CPU不用这个了吧?

据说icc是x86平台上优化最好的编译器,对AMD平台也一样。不过对AMD CPU优化得有没有自家的好就不得而知了。
回复 支持 反对

使用道具 举报

发表于 2009-10-3 22:34:43 | 显示全部楼层
那我这个amd X240飘过算了,和和
回复 支持 反对

使用道具 举报

发表于 2009-10-4 16:32:14 | 显示全部楼层
楼主不妨用来编译firefox试试之后再来推荐
回复 支持 反对

使用道具 举报

发表于 2009-10-5 08:28:59 | 显示全部楼层
某人编译完firefox估计黄花菜都凉了
回复 支持 反对

使用道具 举报

发表于 2009-10-5 08:56:31 | 显示全部楼层
看了楼主的贴,就想装icc试试,没想到有几百M,就放弃了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表