【Mac】clang によるビルドエラー【Xcode 5.1】
brew upgrade
を実行して mercurial のアップグレードを行っていたら、次のエラーが発生した。
clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future] clang: note: this will be a hard error (cannot be downgraded to a warning) in the future error: command 'clang' failed with exit status 1 make: *** [build] Error 1
今までになかったエラーが出ている。
どうやら Xcode 5.1 へのアップデートによって clang が更新された事が原因ぽい。
https://developer.apple.com/library/ios/releasenotes/DeveloperTools/RN-Xcode/Introduction/Introduction.html
As of Apple LLVM compiler version 5.1 (clang-502) and later, the optimization level -O4 no longer implies link time optimization (LTO). In order to build with LTO explicitly use the -flto option in addition to the optimization level flag. (15633276) The Apple LLVM compiler in Xcode 5.1 treats unrecognized command-line options as errors. This issue has been seen when building both Python native extensions and Ruby Gems, where some invalid compiler options are currently specified. Projects using invalid compiler options will need to be changed to remove those options. To help ease that transition, the compiler will temporarily accept an option to downgrade the error to a warning:
-Wno-error=unused-command-line-argument-hard-error-in-future
Note: This option will not be supported in the future. To workaround this issue, set the ARCHFLAGS environment variable to downgrade the error to a warning. For example, you can install a Python native extension with: $ ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future easy_install ExtensionName
Similarly, you can install a Ruby Gem with:
$ ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install GemName 16214764 updated
どうやら、-Wno-error
を指定することでエラーを回避出来るらしい。
試しに例に習って実行してみたらアップグレードできた。
$ ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future brew upgrade
この -Wno-error
は将来的にサポートされなくなる様なので注意。