Summary: | llvm-config возвращает опции не совместимые с gcc | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | obirvalger <obirvalger> |
Component: | llvm11.0-devel | Assignee: | Arseny Maslennikov <arseny> |
Status: | RESOLVED LATER | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P3 | CC: | glebfm, lakostis |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux | ||
Bug Depends on: | |||
Bug Blocks: | 34681 |
Description
obirvalger@altlinux.org
2018-03-21 22:27:55 MSK
Опции сборки llvm будут совместимы с gcc только если сам llvm собран gcc, а сейчас это не так. Я не очень хочу пересобирать llvm, потому потеряются возможности lld и thinLTO, поэтому в качестве варианта можно использовать след. 1) Пересобрать проект clang'ом. Должно получиться, если проект уже собирается нативно под Darwin. 2) Отфильтровать ненужные флаги, как это, например, делают в Mesalib: # Call this inside ` ` to get the return value. # $1 is the llvm-config command with arguments. strip_unwanted_llvm_flags() { echo " `$1` " | sed -E \ -e 's/[[[:space:]]]+-m[[^[:space:]]]*//g' \ -e 's/[[[:space:]]]+-DNDEBUG[[[:space:]]]/ /g' \ -e 's/[[[:space:]]]+-D_GNU_SOURCE[[[:space:]]]/ /g' \ -e 's/[[[:space:]]]+-pedantic[[[:space:]]]/ /g' \ -e 's/[[[:space:]]]+-W[[^[:space:]]]*//g' \ -e 's/[[[:space:]]]+-O[[^[:space:]]]*//g' \ -e 's/[[[:space:]]]+-g[[^[:space:]]]*//g' \ -e 's/-fno-rtti[[[:space:]]]/-Fno-rtti /g' \ -e 's/[[[:space:]]]+-f[[^[:space:]]]*//g' \ -e 's/-Fno-rtti[[[:space:]]]/-fno-rtti /g' \ -e 's/^[[[:space:]]]//' \ -e 's/[[[:space:]]]$//' } ... dnl dnl Set defines and buildtime variables only when using LLVM. dnl if test "x$enable_llvm" = xyes; then DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH" LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags` LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags" Дарю новому мантейнеру, не благодарите. Сейчас, спустя 3 года, у нас llvm собирается gcc, начиная ещё с 11.0.0-alt1. Если включить --with clang, то см. аннотацию к коммиту http://git.altlinux.org/people/arseny/packages/llvm11.0.git?p=llvm11.0.git;a=commit;h=4b3c6c13e4d70fd201691c636d57b5b020e00709 , это отдельная проблема, которой не было в llvm 10. Это имеет смысл переоткрыть, когда мы начнём собирать llvm при помощи clang. |