Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Передача параметра в Makefile
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
inventor
Не совсем уверен что мне в эту ветку нужно писать свой вопрос,
но полагаю что это наиболее близко.
такое дело:

делаю проект для проца блекфин и в зависимости от разной частоты генератора
мне нужен различный рабочий файл
проект делаю с помошь gnu-make в Windows

пока у меня 2 командных файла и 2 Makefile для различной тактовой частоты
например для компиляции для частоты 19.2 Mhz у меня такой командник
@echo Компиляция программы
@echo off
@set PATH=c:\Windows\system32
@if not exist Release_19MHz mkdir Release_19MHz
..\Utils\gmake-378.exe -fMakefile_19MHz.mak

соответсвенно для другой частоты подобный командник и подобный Makefile

вопрос такой: хотелось бы иметь разные командники и один Makefile
который просто из командника принимает параметры:
типа gmake-378 -CPU=xxxxx

Внутри makefile у меня написано так:

CODE

QUARTZ_FREQ = 19200000
CORE_CLOCK = 60000000
RELEASE_FOLDER = Release_19MHz


REVISION = -si-revision 0.1

INC_DIRS = adc;config;drivers;irq;log;modem;periph;pll;sdcard;utils


CFLAGS = -Os -DQUARTZ_CLK_FREQ=${QUARTZ_FREQ} -structs-do-not-overlap -no-multiline -D__PROCESSOR_SPEED__=${CORE_CLOCK} -double-size-32 -I${INC_DIRS} \
-decls-strong -warn-protos ${REVISION} -proc ADSP-BF504F -file-attr ProjectName=${PROGNAME}



хотелось бы передать QUARTZ_FREQ внутрь и чтобы внутри Makefile было нечто проверки условия
при котором CORE_CLOCK и RELEASE_FOLDER могли меняться
cpl
Пример из мак файла:
Код
ifeq ($(ARCH),cortexm4-hardfloat)
  CFLAGS+=-DCORTEX_M4_HARDFLOAT -mcpu=cortex-m4 -mthumb -mlittle-endian -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb-interwork -fsingle-precision-constant
endif

ifeq ($(ARCH),cortexm4-softfloat)
  CFLAGS+=-DCORTEX_M4_SOFTFLOAT -mcpu=cortex-m4 -mthumb -mlittle-endian -mfloat-abi=soft -mthumb-interwork
endif

ifeq ($(ARCH),cortexm3)
  CFLAGS+=-DCORTEX_M3 -mcpu=cortex-m3 -mthumb -mlittle-endian -mthumb-interwork
endif

ifeq ($(ARCH),arm9)
  CFLAGS+=-DARM9 -mcpu=arm9e -march=armv5te -gdwarf-2 -Wall -marm -mthumb-interwork -fpack-struct
endif


make ARCH=arm9
Сергей Борщ
вроде бы так:
Код
QUARTZ_FREQ ?= 19200000   #default frequency


Код
# собираем для частоты по-умолчанию (19.2)
make

# хочется странного
make QUARTZ_FREQ=38400000


Но надо помнить, что при смене параметра для зависящих от него файлов может понадобиться принудительный clean.
inventor
спасиб, получилось
еще пара вопросов:

1) как сделать конструкцию типа

if - else if - else - endif

в такой конструкции как ifeq - принимает только определенные параметры
а если параметра нет - то как то скомпилиться неправильно


2) для каждого варианта у меня своя папка - как ее создать внутри Makefile
cpl
1)используйте else

2) mkdir
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.