LINUX.ORG.RU

Проверка существования директории средствами autotools

 , , ,


1

2

Никак не могу найти, есть ли возможность средствами при написании файла конфигурации для autoconf проверить существует ли в подкаталогах исходников определённая директория?

Есть макрос AC_CHECK_FILE, но из его описания

Check whether file file exists on the native system

следует, что проверять он будет в самой системе. Или это будет работать и для относительных путей,в том числе внутри sandbox?

Мне это нужно для проверки наличия директории и если она есть (может и не быть), то пропатчить лежащие внутри файлы Makefile.am (вызовом внешнего скрипта - но искать нужно не скрипт), и использовать их для сборки этого «плагина».

★★★★★

native system

Это, видимо, в противоположность целевой системе, так как макрос не работает при кросс-компиляции:

[test "$cross_compiling" = yes &&
  AC_MSG_ERROR([cannot check for file existence when cross compiling])

Вся проверка:

if test -r "$1"; then

Это в файле /usr/share/autoconf/autoconf/general.m4.

xaizek ★★★★★ ()
Последнее исправление: xaizek (всего исправлений: 1)
Ответ на: комментарий от xaizek

Надо проверить, вдруг он директорию всё же файлом считает. А проверку на всякий случай обложить условием, что это linux.

grem ★★★★★ ()
Ответ на: комментарий от grem

test -r директории принимает. В любом случае можно такой же if написать и без макроса обойтись.

xaizek ★★★★★ ()

то пропатчить лежащие внутри файлы Makefile.am (вызовом внешнего скрипта - но искать нужно не скрипт), и использовать их для сборки этого «плагина».

ты что-то очень не так делаешь. Если вызывается configure скрипт, то к этому моменту Makefile-ы из Makefile.am уже должны быть сгенерированы

Harald ★★★★★ ()
Ответ на: комментарий от Harald

Я делаю что-то так. Плагин имеет свои .am файлы, на случай сборки отдельным пакетом. Хочется, чтобы он сразу собирался вместе с остальными плагинами в рамках одного пакета. Для этого пару строк внутри его .am файлов мне нужно будет изменить, в основном значения переменных в них.

К тому же, к моменту запуска ./configure должны быть сгенерены Makefile.in, а не Makefile файлы. На основе am, m4 и ac если не путаю.

grem ★★★★★ ()
Ответ на: комментарий от grem

ну ок, зачем тебе именно директория, она же не пустая будет, проверяй наличие какого-нибудь файла исходников в ней

configure правильность указанния директории исходников именно так проверяет, макросом AC_CONFIG_SRCDIR

Harald ★★★★★ ()

следует, что проверять он будет в самой системе. Или это будет работать и для относительных путей,в том числе внутри sandbox?

какая-то переменная, указывающая на директорию с исходниками, обязательно выставляется, можно относительно неё путь задавать

Harald ★★★★★ ()
Ответ на: комментарий от Harald

Самой директории может не быть, но раз уж её не будет, то и файл можно проверить, пожалуй.

Спасибо, на макрос посмотрю.

grem ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.