LINUX.ORG.RU

Сборка приложения на FreeBSD, зависящего от сторонних библиотек, средствами autotools

 , ,


0

1

Как известно, на FreeBSD всё, что не входит в базовую систему и ставится из портов, по дефолту лежит в директории /usr/local/, в том числе библиотеки в /usr/local/lib. Но /usr/local/lib не выставлена по дефолту в список системных директорий с либами, и когда я запускаю ./configure на FreeBSD, то он падает на этапе выполнения макросов AC_CHECK_LIB, когда библиотека лежит в /usr/local/lib а не /usr/lib

Собственно, как правильно и кроссплатформенно разруливать эту ситуацию в configure.ac? Делать проверку на FreeBSD, например, так

AC_CANONICAL_HOST

...

     AS_CASE([$host],
       [*-*-freebsd*], [LDFLAGS="$LDFLAGS -L/usr/local/lib"],
       #тут проверки для других ОС
       ...
       []
     )

и вручную выставлять правильные директории для каждой ОС, или есть какой-то изкоробочный макрос для этого дела, выставляющий нужные директории?

Тебя же с говном съедят за одну мысль, чтобы в Святую Бздю лезть со своей гнутой ересью.

anonymous
()

А ежели поглядеть как это реализовано в других приложениях?

IPR ★★★★★
()

Не надо ничего в configure.ac разруливать. Это управляется параметрами ./configure (тебе нужен скорее всего --prefix). С большой вероятностью правильные параметры передаются сборщиком порта, нужно не вручную собирать а сделать порт

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

А, блин, невнимательно прочитал. Но ответил почти правильно! Нужно крутить параметры ./configure. Например:

./configure CFLAGS="-I ..." LDFLAGS="-L ..." LIBS="..."

В любом случае разруливать пути в configure.ac так себе идея

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

Уточню, приложение моё собственное, а не стороннее, и configure.ac писал я. Передавать параметры ./configure конечно можно, но ведь как бы весь смысл configure в том, чтобы учитывать индивидуальные особенности каждой платформы и автоматически всё конфигурять. А параметры выставляются, когда сборщик хочет чего-нибудь странного и нестандартного

antonsv
() автор топика
Ответ на: комментарий от antonsv

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

С точки зрения autotools заголовочные файлы в /usr/local/include это нестандартное. Можно добавить в configure.ac для FreeBSD CFLAGS=«$CFLAGS -I/usr/local/include» и т.п., так иногда делают, но обычно считают что это должна делать система сборки порта, параметрами ./configure.

То есть если хочешь осчастливить пользователей FreeBSD своей программой, лучше конечно сделай порт. А любители собирать руками под FreeBSD обычно готовы к тому что нужно давать ./configure дополнительные параметры

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

Обычный configure тоже работает.

А поиск флагов сборки через pkg-config

anonymous
()
Ответ на: Сделай порт от iZEN

Какой нахуй порт, когда чувак просто не знает, как собрать прогу под фрёй

anonymous
()

А лучше используй cmake, там есть FIND_PACKAGE

anonymous
()

Как человек, писавший порты для FreeBSD, могу сказать что гораздо лучше когда configure не умничает и не лезет куда не просят, ибо тогда больше сил уходит на то чтобы эти вы%боны выкорчевать. Например, в отквоченном куске -L/usr/local/lib категорически неправильно, потому что $PREFIX и $LOCALBASE могут быть любыми. Лучше не порти жизнь портерам, ибо системные особенности - их задача, и решаются они тривиально, просто посмотри:

egrep -R '^(LD|CPP)FLAGS.*LOCALBASE' /usr/ports

Но вообще, мне попадались порты без {LD,CPP}FLAGS+=, без патчей на configure и при этом собирающиеся нормально с изменённым LOCALBASE. Предполагаю, что в какой-то версии autocrap это как-то изкоробки учтено EDIT: Вероятно, просто используется pkg-config.

А лучше всего - да, возьми cmake, говорю опять же как портер и как человек использующий его в своём софте. В отличие от autocrap, FreeBSD'шные особенности единожды учтены в самом порте cmake, и его FIND_PACKAGE (либо FIND_LIBRARY/FIND_PATH, если нужно написать .cmake файл для поиска редкой библиотеки) всегда работают правильно, даже при неумолчальной LOCALBASE.

slovazap ★★★★★
()
Последнее исправление: slovazap (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.