Spec-Zone.ru › GNU Make

Утилиты в файлах Make

Запишите команды Makefile (и любые скрипты оболочки, такие как configure) для выполнения в sh (как в традиционной оболочке Bourne, так и в POSIX оболочке), а не в csh. Не используйте никакие специальные возможности ksh или bash, или POSIX возможности, не широко поддерживаемые в традиционной оболочке Bourne sh.

Скрипт configure и правила Makefile для построения и установки не должны напрямую использовать какие-либо утилиты, кроме этих:

awk cat cmp cp diff echo egrep expr false grep install-info ln ls
mkdir mv printf pwd rm rmdir sed sleep sort tar test touch tr true

Программы сжатия, такие как gzip, могут быть использованы в правиле dist.

В целом, придерживайтесь широко поддерживаемых (обычно POSIX-определённых) опций и функций этих программ. Например, не используйте ‘mkdir -p’, как бы удобен он ни был, потому что некоторые системы его совсем не поддерживают, а на других он не безопасен для параллельного выполнения. Список известных несовместимостей см. в Программирование портативных оболочек в Autoconf.

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

Правила Makefile для построения и установки также могут использовать компиляторы и связанные программы, но должны делать это через переменные make, чтобы пользователь мог подставить альтернативы. Вот некоторые из программ, которые мы имеем в виду:

ar bison cc flex install ld ldconfig lex
make makeinfo ranlib texi2dvi yacc

Используйте следующие make переменные для запуска этих программ:

$(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LDCONFIG) $(LEX)
$(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC)

Когда вы используете ranlib или ldconfig, убедитесь, что ничего плохого не произойдёт, если на системе нет соответствующей программы. Организуйте игнорирование ошибки от этой команды и выведите сообщение перед командой, чтобы сообщить пользователю, что неудача этой команды не означает проблему. (Макрос Autoconf ‘AC_PROG_RANLIB’ может помочь с этим.)

Если вы используете символические ссылки, вы должны реализовать резервный вариант для систем, которые не поддерживают символические ссылки.

Дополнительные утилиты, которые можно использовать через переменные Make, включают:

chgrp chmod chown mknod

Использование других утилит в частях Makefile (или скриптах), предназначенных только для определённых систем, где известно, что эти утилиты существуют, допустимо.

Copyright © 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/make/manual/html_node/Utilities-in-Makefiles.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API