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"`