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

 
 
 
Reply to this topicStart new topic
> си препроцессор в gcc as
MBR
сообщение Jul 5 2012, 07:27
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



Добрый день!

У кого-нибудь получалось работа с сабж? Информация об этом в интернете весьма скудна.

Проблема в том, что когда переименовываешь .s в .S, напрочь игнорируется VPATH в Makefile, равно как и include (согласно ману -I name). Кто-нибудь знает, как это побороть?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 5 2012, 09:22
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



gcc -x assembler-with-cpp ?

Цитата(MBR @ Jul 5 2012, 13:27) *
Проблема в том, что когда переименовываешь .s в .S, напрочь игнорируется VPATH в Makefile


Не замечал такого. Покажите свой Makefile, посмотрим...


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 5 2012, 09:24
Сообщение #3


Гуру
******

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



QUOTE (MBR @ Jul 5 2012, 10:27) *
У кого-нибудь получалось работа с сабж? Информация об этом в интернете весьма скудна.
Да всегда только так и работаем.
QUOTE (MBR @ Jul 5 2012, 10:27) *
Проблема в том, что когда переименовываешь .s в .S, напрочь игнорируется VPATH в Makefile,
А какое расширение там прописано? Покажите строчку.
QUOTE (MBR @ Jul 5 2012, 10:27) *
равно как и include (согласно ману -I name).
Это недопонял.

Система какая? Кроме .S есть еще одно решение: ASMFLAGS += -x assembler-with-cpp


--------------------
На любой вопрос даю любой ответ
"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
MBR
сообщение Jul 5 2012, 10:17
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



Извините, был напуган (с) Что было, я так и не понял, но сейчас все заработало

Цитата(Сергей Борщ @ Jul 5 2012, 13:24) *
А какое расширение там прописано? Покажите строчку.

вот так выглядит строчка сборки:

.S.o:
@-mkdir -p $(BUILD_DIR)
@echo AS: $<
$(GCC) $(INCLUDES) -I. $(DEFINES) -c -x assembler-with-cpp ./$< -o $(BUILD_DIR)/$@

Цитата(Сергей Борщ @ Jul 5 2012, 13:24) *
Это недопонял.

В смысле, не искался как сам исходник по VPATH, так и не находился путь для инклудов.

Цитата(Сергей Борщ @ Jul 5 2012, 13:24) *
Система какая? Кроме .S есть еще одно решение: ASMFLAGS += -x assembler-with-cpp

arm-none-eabi-gcc (Sourcery G++ Lite 2011.03-42) 4.5.2.

Спасибо за флаг, это выглядит куда изящнее переименовывания файлов.

Еще вопрос по теме - во включенных файлах все, что не явлется препроцессором (typedef, enum, определение функций), выдает ошибку. Есть ли иное решение, кроме как оборачивать это препроцессором?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 5 2012, 10:57
Сообщение #5


Гуру
******

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



QUOTE (MBR @ Jul 5 2012, 13:17) *
вот так выглядит строчка сборки:
Имелась ввиду строчка VPATH.
QUOTE (MBR @ Jul 5 2012, 13:17) *
arm-none-eabi-gcc (Sourcery G++ Lite 2011.03-42) 4.5.2.
sm.gif До него дело еще не дошло, за VPATH отвечает make. Система имелась ввиду Win/Lin/Mac?
QUOTE (MBR @ Jul 5 2012, 13:17) *
Есть ли иное решение, кроме как оборачивать это препроцессором?
либо обернуть в #ifndef __ASSEMBLER__, либо выносить в отдельный файл и не включать этот файл в ассемблерный исходник.


--------------------
На любой вопрос даю любой ответ
"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
AHTOXA
сообщение Jul 5 2012, 19:37
Сообщение #6


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(MBR @ Jul 5 2012, 16:17) *
$(GCC) $(INCLUDES) -I. $(DEFINES) -c -x assembler-with-cpp ./$< -o $(BUILD_DIR)/$@

А зачем вы поставили "./" перед "$<"? Может от этого VPATH и не работает?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
MBR
сообщение Jul 6 2012, 04:57
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



Цитата(Сергей Борщ @ Jul 5 2012, 14:57) *
Имелась ввиду строчка VPATH.

Да все стандартно.

VPATH += $(INCLUDE_FOLDERS) $(BUILD_DIR)

Цитата(Сергей Борщ @ Jul 5 2012, 14:57) *
sm.gif До него дело еще не дошло, за VPATH отвечает make. Система имелась ввиду Win/Lin/Mac?

Linux

Цитата(Сергей Борщ @ Jul 5 2012, 14:57) *
либо обернуть в #ifndef __ASSEMBLER__, либо выносить в отдельный файл и не включать этот файл в ассемблерный исходник.

Спасибо, в итоге так и сделал, все работает.

Цитата(AHTOXA @ Jul 5 2012, 23:37) *
А зачем вы поставили "./" перед "$<"? Может от этого VPATH и не работает?

Нет, проблема не в этом была. Конфиг больше года назад писался и работал под разными проектами. "./" - это привычка после баша, чтобы убирать двусмысленность поиска, чтобы файлы искались от текущего каталога.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th July 2025 - 12:55
Рейтинг@Mail.ru


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