Autotools: Как правильно добавить переменные prefix, datarootdir, docdir в config.h (1 решение)

Модератор: Модераторы разделов

nick87720z
Сообщения: 180
ОС: Gentoo / Calculate

Autotools: Как правильно добавить переменные prefix, datarootdir, docdir в config.h (1 решение)

Сообщение nick87720z »

Пока мне удалось найти только такой способ (узнал из другого источника, какого именно - не помню, искать надо).
1. Создаем файл acinclude.m4 (если нет). Вот содержимое моего (содержимое взято из коммита в git :)):

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

+dnl AS_AC_EXPAND(VAR, CONFIGURE_VAR)
+dnl
+dnl example
+dnl AS_AC_EXPAND(SYSCONFDIR, $sysconfdir)
+dnl will set SYSCONFDIR to /usr/local/etc if prefix=/usr/local
+
+AC_DEFUN([AS_AC_EXPAND],
+[
+  EXP_VAR=[$1]
+  FROM_VAR=[$2]
+
+  dnl first expand prefix and exec_prefix if necessary
+  prefix_save=$prefix
+  exec_prefix_save=$exec_prefix
+
+  dnl if no prefix given, then use /usr/local, the default prefix
+  if test "x$prefix" = "xNONE"; then
+    prefix=$ac_default_prefix
+  fi
+  dnl if no exec_prefix given, then use prefix
+  if test "x$exec_prefix" = "xNONE"; then
+    exec_prefix=$prefix
+  fi
+
+  full_var="$FROM_VAR"
+  dnl loop until it doesn't change anymore
+  while true; do
+    new_full_var="`eval echo $full_var`"
+    if test "x$new_full_var"="x$full_var"; then break; fi
+    full_var=$new_full_var
+  done
+
+  dnl clean up
+  full_var=$new_full_var
+  AC_SUBST([$1], "$full_var")
+
+  dnl restore prefix and exec_prefix
+  prefix=$prefix_save
+  exec_prefix=$exec_prefix_save
+])


2. Включаем этот файл в другой файл - aclocal.m4:

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

m4_include([acinclude.m4])


Ну и в configure.in добавляем:

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

AS_AC_EXPAND(DATAROOTDIR, $datarootdir)
AC_DEFINE_UNQUOTED(DATAROOTDIR, "$DATAROOTDIR", [Install prefix.])


Как видите, есть одна большая проблема - необходимость самому писать функцию для приведения переменных окружения к виду, пригодному для использования в коде на C. Без этого в config.h появляется что-то вроде этого:

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

#define DATAROOTDIR "${prefix}/share"   // Нормально, да^^ )))))


P.S. Решение 1: используем команду eval:

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

blabladir=`eval "echo $blabladir"`
Спасибо сказали:
nick87720z
Сообщения: 180
ОС: Gentoo / Calculate

Re: Autotools: Как правильно добавить переменные prefix, datarootdir, docdir в config.h (1 решение)

Сообщение nick87720z »

Молчание....
Если я правильно понял, autotools не ориентированы на конкретный язык, а значит - для каждого надо писать свои дополнения. Однако поддержка для С вроде бы присутствует, иначе зачем оно создает config.h... Тем более DATADIR и SYSCONFDIR важны не меньше, чем HAVE_ALLOCA_H, HAVE_DIRENT_H, HAVE_LOCALE_H (IMHO, разумеется)Ю
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Autotools: Как правильно добавить переменные prefix, datarootdir, docdir в config.h (1 решение)

Сообщение serzh-z »

nick87720z писал(а):
11.02.2011 13:55
для каждого надо писать свои дополнения.
Там много готовых макросов: http://www.gnu.org/software/autoconf-archive/. Как называется пакет для Ubuntu - не знаю.
Спасибо сказали:
nick87720z
Сообщения: 180
ОС: Gentoo / Calculate

Re: Autotools: Как правильно добавить переменные prefix, datarootdir, docdir в config.h (1 решение)

Сообщение nick87720z »

Спасибо за наводку. Нашел такой пакет, так и называется - autoconf-archive. Сижу на Lucid, версия пакета - 20090426.
Спасибо сказали:
nick87720z
Сообщения: 180
ОС: Gentoo / Calculate

Re: Autotools: Как правильно добавить переменные prefix, datarootdir, docdir в config.h (1 решение)

Сообщение nick87720z »

Только перешел к поиску по слову "path", как сервер засбоил (ошибка 500).
А арив времен 2009-04-26 заметно староват (даже многие имена не совпадают).
Может у кого-нибудь есть более свежая версия?

P.S. Подозреваю, что необходимости в этом посте особой не было, только удалить не могу. В общем, поищу пока в архивах source-based дистров.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Autotools: Как правильно добавить переменные prefix, datarootdir, docdir в config.h (1 решение)

Сообщение serzh-z »

nick87720z писал(а):
11.02.2011 22:56
поищу пока в архивах source-based дистров.

http://mirror.yongbok.net/gnu/autoconf-arc...11.01.02.tar.xz
Спасибо сказали:
nick87720z
Сообщения: 180
ОС: Gentoo / Calculate

Re: Autotools: Как правильно добавить переменные prefix, datarootdir, docdir в config.h (1 решение)

Сообщение nick87720z »

Спасибо, уже нашел. Хотя и сайт как раз починили, опять на нем лазаю :]
Внезапно... в мануале для ax_expand_prefix наткнулся на упоминание про eval.
Всего то: blabladir=`eval "echo $blabladir"`
Спасибо сказали: