automake - rozdilne flagy pri kompilaci ...

Robert Vojta robert na v0jta.net
Čtvrtek Srpen 1 13:18:39 CEST 2002


Zdravím,
  neznáte někdo elegantnější cestu jak automake donutit aby mi určitý zdroják
překompiloval vícekrát s různými flagy, pokud je daný *.o součástí více
knihoven? Uvedu příklad ...
  Mám knihovnu filter_g7231.so a filter_g7231b.so, která obsahuje věci ze
souborů slin_example.c, g7231_example.c a filter_g7231.c. Ta Bčková se liší
v tom, že je to ANNEX B a je potřeba překompilovat filter_g7231.c s -DANNEX_B.
Takže to mám teď udělané zatím takto ...

lib_LTLIBRARIES = libpals_filter_g7231.so libpals_filter_g7231b.so

g723.1b/libg723b.a:
        make -C g723.1b libg723b.a

g723.1/libg723.a:
        make -C g723.1 libg723.a

filter_g7231.o: filter_g7231.c
                $(CC) ($CFLAGS) $(INCLUDES) filter_g7231.c -c -o filter_g7231.o

filter_g7231b.o: filter_g7231.c
                 $(CC) $(CFLAGS) $(INCLUDES) -DANNEX_B filter_g7231.c -c -o filter_g7231b.o

libpals_filter_g7231_la_SOURCES = slin_example.c g7231_example.c
libpals_filter_g7231_la_LIBADD  = g723.1/libg723.a filter_g7231.o
libpals_filter_g7231_la_LDFLAGS = $(LIBPALSLIBS) $(LISTLIBS) $(LOCKLIBS) $(LOGGERLIBS)

libpals_filter_g7231b_la_SOURCES = g7231_example.c slin_example.c
libpals_filter_g7231b_la_LIBADD = g723.1b/libg723b.a filter_g7231b.o
libpals_filter_g7231b_la_LDFLAGS = $(LIBPALSLIBS) $(LISTLIBS) $(LOCKLIBS) $(LOGGERLIBS)

  Takto to funguje, ale má to dva nedostatky ...

  a) libtool hlásí, že to není portable, protože linkuju proti filter_g7231[b].o
     nehlásí to pouze v případě, že dám do _SOURCES filter_g7231.c

  b) nelíbí se mi to ...

  Jak dosáhnout toho, abych mohl vyhodit pravidla pro filter_g7231[b].o, dát
filter_g7231.c do _SOURCES a mít tam něco jako
libpals_filter_g7231b_la_INCLUDES = -DANNEX_B? Další věc je, že pokud uvedu
v _SOURCES 2x to samé, on to zkompiluje jednou a pak pro A i B použije stejný
*.o. Chci aby to bylo portable, aby to bylo v _SOURCES a pro každou knihovnu se
filter_g7231.c překompiloval s různými flagy a nedaří se mi nic takového najít
a obávám se, že to takto přímo ani automake neumí...

-- 
        Robert V0jta                           Pharocom, s.r.o.
Linux/UNIX specialist, programmer   Interested in Linux based PBX development?
    http://www.v0jta.net/              Watch http://www.pharocom.net/ for
      robert na v0jta.net                      more informations/jobs ...

  Looking for older Sparc/ARM machine ... If you have one, please contact me.


Další informace o konferenci Linux