Как создать список исходных файлов, скомпилированных для конкретной конфигурации платы в исходных кодах u-boot? - PullRequest
0 голосов
/ 16 мая 2018

U-boot, являющийся загрузчиком, предназначенным для другой архитектуры и SoC, содержит несколько исходных файлов, и только некоторые из них попадают в финальный исполняемый файл для конкретной платы. Например, в каталоге arch / существует один каталог для каждой архитектуры. Если сборка предназначена для SoC с архитектурой ARM, только некоторые файлы из arch / arm / будут скомпилированы в исполняемый файл.

Какой из исходных файлов будет скомпилирован в исполняемый файл, зависит от конфигурации сборки. Эта конфигурация контролируется файлом, присутствующим в каталоге configs /. В случае BeagleBone Black это файл configs / am335x_boneblack_defconfig . Этот файл определяет несколько переменных, которые используются в Makefiles.

Часть config / am335x_defconfig показана ниже:

CONFIG_ARM=y
CONFIG_ARCH_OMAP2PLUS=y
CONFIG_TI_COMMON_CMD_OPTIONS=y
CONFIG_AM33XX=y
CONFIG_DISTRO_DEFAULTS=y

Переменные, определенные в этих файлах, позже упоминаются в других файлах Makefile. Например, переменная CONFIG_AM33XX, определенная выше, упоминается в / arch / arm / mach-omap2 / am33xx / Makefile, как показано ниже:

obj-$(CONFIG_AM33XX)    += clock_am33xx.o
obj-$(CONFIG_TI814X)    += clock_ti814x.o
obj-$(CONFIG_AM43XX)    += clock_am43xx.o

ifneq ($(CONFIG_AM43XX)$(CONFIG_AM33XX),)
obj-y   += clock.o
endif

Я думаю, при выполнении команды

$ make am335x_boneblack_defconfig

значение переменной CONFIG_AM33XX заменяется в некоторой временной копии Makefile, так что содержимое вышеупомянутого make-файла заменяется на

obj-y + = clock_am33xx.o

Выяснить, какие исходные файлы включены в окончательный исполняемый файл, просто выполнив поиск переменных конфигурации во всех файлах Makefile, является утомительной задачей. Мне нужен способ для создания списка исходных файлов, который автоматически компилируется для определенного файла конфигурации . Есть ли способ сделать это?

1 Ответ

0 голосов
/ 16 мая 2018

Просто выполните чистую сборку и найдите все объектные файлы:

make mrproper
make foo_defconfig
make -j6
find . -name '*.o'

Возможно, вы хотите исключить каталоги tools / и scripts / .

...