реклама на сайте
подробности

 
 
> Передача параметра в Makefile
inventor
сообщение Apr 5 2016, 09:18
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Не совсем уверен что мне в эту ветку нужно писать свой вопрос,
но полагаю что это наиболее близко.
такое дело:

делаю проект для проца блекфин и в зависимости от разной частоты генератора
мне нужен различный рабочий файл
проект делаю с помошь 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 могли меняться
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
cpl
сообщение Apr 5 2016, 10:23
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 6-12-04
Пользователь №: 1 340



Пример из мак файла:
Код
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
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 5 2016, 10:55
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



вроде бы так:
Код
QUARTZ_FREQ ?= 19200000   #default frequency


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

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


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


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
inventor
сообщение Apr 5 2016, 11:17
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



спасиб, получилось
еще пара вопросов:

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

if - else if - else - endif

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


2) для каждого варианта у меня своя папка - как ее создать внутри Makefile
Go to the top of the page
 
+Quote Post
cpl
сообщение Apr 5 2016, 13:22
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 6-12-04
Пользователь №: 1 340



1)используйте else

2) mkdir
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 06:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.0143 секунд с 7
ELECTRONIX ©2004-2016