| 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. |