On Monday 31 January 2011, Pauli Sundberg wrote: > Hello! > > I am trying to add -all-static flag for binaries compiled with autotools. > > What i am doing wrong since to me it seems like _LDFLAGS is not working > when i have _LDFLAGS defined in Automake.am: > > > bin_PROGRAMS = linearize > > > > linearize_SOURCES = \ > > Linearize/linearize_main.c Linearize/linearizeParameters.c \ > > Linearize/linearizeParameters.h > > > > if COND_STATIC_BIN > > linearize_LDFLAGS = -all-static > Did you use a literal tab at the beginning of the line? If yes, then automake won't consider this line as a variable assignement, but will be confused into thinking that it's a make recipe (and will it output unchanged).
My advice: never use leading whitespace before a variable assignement or a target declaration. The annoying downside is that you can't use nice indentation with conditionals, the upside is that you won't be bitten by mistakes like this. > > endif > > If i look at the generated Makefile i can find: > > linearize_LDFLAGS = -all-static > > but the link command: > linearize$(EXEEXT): $(linearize_OBJECTS) $(linearize_DEPENDENCIES) > @rm -f linearize$(EXEEXT) > $(LINK) $(linearize_OBJECTS) $(linearize_LDADD) $(LIBS) > > Where link is: > LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ > --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ > $(LDFLAGS) -o $@ > > seems to ignore these linearize_LDFLAGS. > > Full Automake.am can be found from: > http://susundberg.pastebin.com/LuhKbU1K > > Generated automake.in: > http://susundberg.pastebin.com/7HTrC737 > > And generated Makefile: > http://susundberg.pastebin.com/rQHUXZc1 > Thanks for posting these links, they seem to confirm the diagnosis I've made above. > Any tips how to start figure out whats wrong? The project has lots of > Autoconf files and i would rather not post them all here. > Removing that leading tab should be enough to solve your problem. > Thanks! > Pauli Sundberg > > HTH, Stefano
