[autoconf/make] как добавить в automake подержку нового языка?

Landstreicher

Сабж. Метод, указанный в документации по automake просто не работает.

[lorien 1]$ cat configure.in
AC_INIT(gluk, 0.01)
AM_INIT_AUTOMAKE
AC_PROG_LD
AC_PROG_CC
AC_OUTPUT([Makefile])

[lorien 1]$ cat gluk.foo
int main
{
return 0;
}

[lorien 1]$ cat Makefile.am
SUFFIXES = .foo
.foo.o:
$(CC) -c -x c $<
bin_PROGRAMS = gluk
gluk_SOURCES = gluk.foo

[lorien 1]$ make
gcc -c -x c gluk.foo
gluk.o
make: gluk.o: Command not found
make: *** [gluk] Error 127

duantusova

Может что-то такое нужно было? Или нужно было второе правило написать .o -> бинарник


SUFFIXES = .foo
.foo.o:
$(CC) -c -x c $< -o $@
bin_PROGRAMS = gluk.o
gluk_o_SOURCES = gluk.foo


А вообще раз уж теперь питон такой популярный - есть такая штука SCons - очень удобная замена automake

Landstreicher

Оба варианта не помогают.
Чтение сырцов приводит к мысли, что automake не может сам узнать линкер. Если линкуются файлы с расширением .c - то работает C-линкер, если .cpp - то C++-линкер. Если .foo - то облом, линкера нет.
Спасает ручное определение
LINK = $(LIBTOOL) --mode=link $(LD) $(AM_LDFLAGS) $(LDFLAGS) -o $@
2All> Еще один вопрос по automake. Предположим у меня 100 файлов с расширением .foo. Нужно по каждому файлу сделать соотвествующий бинарник, из example.foo делается example. На данный момент единственный вариант который я вижу - это писать 100 строчек вида example_SOURCES = example.foo.
Но это очень криво, есть ли более простые способы? Желательно минимизировать число модификаций Makefile.am при добавлении нового файла .foo.
Оставить комментарий
Имя или ник:
Комментарий: