Портирование проектов ELF совместно используемой библиотеки в autoconf на OS X - PullRequest
2 голосов
/ 04 июля 2010

Как использовать макросы autoconf для условного изменения значений в скрипте configure или Makefile, которые он выводит через AC_OUTPUT.

Цель состоит в том, чтобы использовать AC_CANONICAL_TARGET или каким-либо другим способом, чтобы определить, что я работаю в OS X, а затем разрешить моим Make-файлам адаптировать LDFLAGS, удалив -shared и заменив -soname на -dylib_install_name.

Поэтому мне нужно узнать, как изменить значения AC_SUBST или локальные переменные в файле configure.ac с помощью условного оператора, который проверяет целевой хост.

Я должен добавить, что я пытался использовать AC_COMPILE_IFELSE с AC_LANG_PROGRAM для компиляции этого кода.

#include <unistd.h>
#ifndef __APPLE__
error: This is not apple Darwin
#endif

Хотя я не получаю никаких ошибок, я не могу подтвердить, что это работает.Когда я запускаю новый скрипт на FreeBSD или Darwin, с ним ничего не связано.Также я всегда использую autoconf -Wall.

Второй и третий аргументы AC_COMPILE_IFELSE - это [is_darwin = yes], [is_darwin = no], но как мне получить доступ к этим значениям?

Большое спасибо заранее за любую помощь.

1 Ответ

0 голосов
/ 05 июля 2010

Ну, просто чтобы снять вопрос со стека, я отвечу на него, сказав, что эти переменные во втором и третьем аргументах AC_COMPILE_IFELSE доступны как переменные SHELL в скрипте configure.ac. Фактически я решил эту проблему, поместив несколько определений переменных в эти два аргумента, поскольку они принимают несколько строк кода Shell, а не только одно определение переменной.

...