makefile и озвучка, в зов-ти от результата

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модератор: SLEDopit

Ответить
Аватара пользователя
sunjob
Сообщения: 326
Контактная информация:

makefile и озвучка, в зов-ти от результата

Сообщение sunjob »

добрый день!

нужно озвучить работу makefile, в зов-ти от успеха/ошибки
makefile - в общем-то стандартный (не без надстроек :о)
рассмотрим, самый простой случай

Код: Выделить всё

make all
makefile

Код: Выделить всё

all:   build
build: elf hex epp lss sym

elf: 		$(TARGET).elf
hex: 		$(TARGET).hex
eep: 		$(TARGET).eep
lss: 		$(TARGET).lss
sym: 		$(TARGET).sym
нужно, что-бы при успехе/ошибке, внутри makefile вызывались команды, соответственно:

Код: Выделить всё

${BEEP_OK}  # OK
${BEEP_ERR} # ERR  
+

Код: Выделить всё

slackware 12.2/14.2 x32/64
avr-gcc/xc8
bash
спасибо
p.s.
все с набегу пока мысля не влетела в голову...

уточняю - надо все упаковать в makefile
Последний раз редактировалось sunjob 20.01.2021 07:49, всего редактировалось 2 раза.
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Аватара пользователя
yoricI
Сообщения: 2345
ОС: gentoo fluxbox

Re: makefile и озвучка, в зов-ти от результата

Сообщение yoricI »

А если по коду завершения? make || beep-err
Спасибо сказали:
Аватара пользователя
sunjob
Сообщения: 326
Контактная информация:

Re: makefile и озвучка, в зов-ти от результата

Сообщение sunjob »

уточняю - надо все упаковать в makefile

так-то скриптами без проблем

Код: Выделить всё

make && ${BEEP_OK} || ${BEEP_ERR}
но нужна в makefile

спасибо
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: makefile и озвучка, в зов-ти от результата

Сообщение Hephaestus »

sunjob писал(а):
20.01.2021 07:46
но нужна в makefile
Можно вызывать этот makefile из другого makefile :D

А можно попробовать и напрямую.
Можно сигналить для каждой цели отдельно, указав сигнал прямо в команде сборки.
Хотя в Вашем примере я команд сборки не вижу.

Либо завести переменную, куда сохранять код завершения.
Если всё хорошо, переменная будет равна нулю,
сигналим OK, в противном случае - сигналим ERR.
Какая-никакая работа с переменными в make есть. Условные конструкции тоже есть.
Хотя этот вариант не сработает, так как первая же цель в случае неудачи прервет выполнение.

Значит, надо сигналить для каждой цели в случае неудачи.
А в случае удачи сигналить отдельно (спец. цель создать).

Заработает или нет, не знаю. Проверять лень.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
sunjob
Сообщения: 326
Контактная информация:

Re: makefile и озвучка, в зов-ти от результата

Сообщение sunjob »

я команд сборки не вижу
пример схематичный, что-бы "намекнуть" что целей гора и маленький троллейбуз :crazy:
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: makefile и озвучка, в зов-ти от результата

Сообщение Bizdelnick »

Код: Выделить всё

all:
	$(MAKE) build || { $(BEEP_ERR); exit 1 }
	$(BEEP_OK)
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
sunjob
Сообщения: 326
Контактная информация:

Re: makefile и озвучка, в зов-ти от результата

Сообщение sunjob »

Bizdelnick писал:
20.01.2021 13:16
ТЫЦ
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: makefile и озвучка, в зов-ти от результата

Сообщение Bizdelnick »

sunjob писал(а):
20.01.2021 14:12
ТЫЦ
Можно изъясняться словами, а не тыцами? Мне непонятна Ваша мысль. В приведённом там примере в случае неудачи проиграются оба звука и код выхода будет 0.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: makefile и озвучка, в зов-ти от результата

Сообщение Hephaestus »

sunjob
Чего же Вам ещё не хватает?
Примеры с кодом возврата в сети есть
типа такого:

Код: Выделить всё

.ONESHELL:

some_recipe:
    @echo 'doing stuff'; sh -c 'exit 123'
    @EXIT_CODE=$$?
    @echo "command exited with $$EXIT_CODE"
    @exit $$EXIT_CODE
Взято здесь
В принципе, это работает.
Получится ли адаптировать под Вашу задачу -- это только Вы можете проверить.
Варианты с врапперами Вы отвергаете изначально. Кстати, можете объяснить, почему?
А на уровне "чистого make" других вариантов, кроме уже предложенных, вроде как и нет.
Те примеры, которые обнаруживаются в сети - они все сводятся к этим же идеям.


Единственное, если целей много, наверно всё-таки лучше, чтобы каждая цель сама сигналила о себе.
Можно функцию/макрос набросать, в конце концов.
Да, файл будет развесистый. Но он у Вас и так развесистый, если я правильно понял.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Ответить