6.21. Использование iconv

После 10-08-2013 (254273) в составе FreeBSD  10-CURRENT и более новых версий имеется собственный iconv. В более ранних версиях дополнительной зависимостью выступал converters/libiconv.

Для программного обеспечения, которому нужен iconv, определите USES=iconv. Версии FreeBSD до 10-CURRENT от 13-08-2013 (254273) не имеют собственного iconv. На этих более ранных версиях будет автоматически добавлена зависимость от converters/libiconv.

Когда порт задаёт USES=iconv, становятся доступными следующие переменные:

Имя переменнойНазначениеЗначение до FreeBSD 10-CURRENT 254273 (13-08-2013)Значение после FreeBSD 10-CURRENT 254273 (13-08-2013)
ICONV_CMDКаталог размещения двоичного файла iconv${LOCALBASE}/bin/iconv/usr/bin/iconv
ICONV_LIBАргумент ld для компоновки с libiconv (если нужно)-liconv(пусто)
ICONV_PREFIXКаталог размещения реализации iconv (используется для сценариев конфигурации)${LOCALBASE}/usr
ICONV_CONFIGURE_ARGПараметр предварительно собранной конфигурации для сценариев конфигурации--with-libiconv-prefix=${LOCALBASE}(пусто)
ICONV_CONFIGURE_BASEПараметр предварительно собранной конфигурации для сценариев конфигурации--with-libiconv=${LOCALBASE}(пусто)

В следующих двух примерах демонстрируется автоматическое присвоение переменным правильных значений для систем, использующих converters/libiconv или собственный iconv.

Пример 6.16. Простое использование iconv
USES=		iconv
LDFLAGS+=	-L${LOCALBASE}/lib ${ICONV_LIB}

Пример 6.17. Использование iconv с configure
USES=		iconv
CONFIGURE_ARGS+=${ICONV_CONFIGURE_ARG}

Как показано выше, ICONV_LIB имеет пустое значение с собственным iconv. Эту особенность можно использовать для обнаружения собственного iconv с соответствующими действиями.

Иногда в программе параметр ld или путь поиска жёстко заданы в Makefile или сценарии конфигурации. Для решения этой проблемы можно использовать следующий подход:

Пример 6.18. Исправление жёстко заданного -liconv
USES=		iconv

post-patch:
	@${REINPLACE_CMD} -e 's/-liconv/${ICONV_LIB}/' ${WRKSRC}/Makefile

В некоторых случаях необходимо установить альтернативные значения или выполнить операции в случае использования собственного iconv. Перед проверкой значения ICONV_LIB обязан быть подключён bsd.port.pre.mk:

Пример 6.19. Проверка доступности собственного iconv
USES=		iconv

.include <bsd.port.pre.mk>

post-patch:
.if empty(ICONV_LIB)
	# обнаружен собственный iconv
	@${REINPLACE_CMD} -e 's|iconv||' ${WRKSRC}/Config.sh
.endif

.include <bsd.port.post.mk>

Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.

По вопросам, связанным с этой документацией, пишите в рассылку <doc@FreeBSD.org>.