2012-02-27 2 views
0

Я хочу скомпилировать и связать один файл объекта в соответствии с menuconfig, чтобы выбрать флаги для компиляции различных исходных файлов.linux kbuild makefile

like;

OBJ - $ (config1): sample.o (но он должен строить из sample_1.c) OBJ - $ (config2): sample.o (но он должен строить из sample_2.c)

ли это возможно через make-файл, или если это невозможно через linux kbuild, любые трюки для достижения этого высоко ценятся.

Rgds, Sharanu

+0

Есть несколько способов сделать это, ни один совершенными. Нам нужна дополнительная информация о ваших намерениях/приоритетах. Почему вы хотите использовать имя 'sample.o' для двух разных файлов? – Beta

+0

Я не хочу менять файл сценария, который загружает модули, поскольку есть много зависимостей. Вместо этого он должен загрузить один модуль, но построенный в соответствии с директивой компиляции. –

+0

любое решение для этого даже не идеально ... –

ответ

0

Там нет ничего, что я не знаю, чтобы сделать это автоматически, однако, Kbuild файлы Makefiles, так что вы можете использовать Makefile условными в них. Вы могли бы сделать что-то вроде этого:

ifneq ($(findstring $(config1),"ym"),) 
    $(obj)sample.o: $(obj)sample_1.o 
     $(Q)$(CC) $(CFLAGS) $< -c -o [email protected] 
else 
ifneq ($(findstring $(config2),"ym"),) 
    $(obj)sample.o: $(obj)sample_2.o 
     $(Q)$(CC) $(CFLAGS) $< -c -o [email protected] 
endif 
endif 

obj-($config1) += sample.o 
obj-($config2) += sample.o 

Надеется, что это помогает

John

Смежные вопросы