Как выбрать пользовательский исходный код OVERRIDE_SRCDIR для GCC при создании Buildroot?

#buildroot

#buildroot

Вопрос:

Я использовал настройки BR2_PACKAGE_OVERRIDE_FILE <pkg>_OVERRIDE_SRCDIR в Buildroot 2018.05 для успешного отслеживания пакетов, представляющих интерес, таких как Binutils и glibc, в качестве подмодулей моего проекта:

 BINUTILS_OVERRIDE_SRCDIR = ../../submodules/binutils-gdb
GLIBC_OVERRIDE_SRCDIR = ../../submodules/glibc
  

Однако, когда я попробовал аналогичную процедуру для GCC, похоже, она не возымела эффекта:

 GCC_OVERRIDE_SRCDIR = ../../submodules/gcc
  

Например, под build/ в папке сборки я получаю обычный:

 host-gcc-final-7.3.0
host-gcc-initial-7.3.0
  

вместо ожидаемых -custom версий.

Есть ли способ добиться этого?

Возможно http://buildroot-busybox.2317881.n4.nabble.com/Internal-toolchain-wrapper-ccache-fixes-tp113064p113187.html подразумевает, что это просто исключение для GCC по техническим причинам, но этому потоку уже несколько лет, и я еще не до конца попытался его понять.

Ответ №1:

gcc это не фактический пакет. Он состоит из двух пакетов, которые имеют общую конфигурацию: gcc-initial и gcc-final . Таким образом, вы должны установить

 GCC_INITIAL_OVERRIDE_SRCDIR = ../../submodules/gcc
GCC_FINAL_OVERRIDE_SRCDIR = ../../submodules/gcc
  

или, чтобы немного разложить его по полочкам так же, как это делают пакеты в дереве:

 GCC_OVERRIDE_SRCDIR = ../../submodules/gcc
GCC_INITIAL_OVERRIDE_SRCDIR = $(GCC_OVERRIDE_SRCDIR)
GCC_FINAL_OVERRIDE_SRCDIR = $(GCC_OVERRIDE_SRCDIR)
  

Комментарии:

1. Ах, спасибо, Арноут! Я должен был попробовать это. Это будет красиво. Единственное, чего сейчас не хватает для достижения совершенства, — это отсутствия необходимости строить из SRCDIR из дерева вместо уродливой rsync.