kconfig/lkc_proto.h
author "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
Fri Jan 27 13:31:16 2012 +0100 (2012-01-27)
changeset 2854 a70abdbfa342
parent 943 1cca90ce0481
permissions -rw-r--r--
complibs/cloog: fix linking with libm

In Ubuntu 11.04 and 11.10, the default options for ld have changed.
--no-copy-dt-needed-entries and --as-needed are now enabled by default, which
causes errors like:

[EXTRA] Checking CLooG/ppl
[DEBUG] ==> Executing: 'make' '-j3' '-s' 'check'
[ALL ] Making check in .
[ALL ] config.status: creating include/cloog/cloog-config.h
[ALL ] config.status: include/cloog/cloog-config.h is unchanged
[ALL ] libtool: link: i686-build_pc-linux-gnu-gcc -Wall -fomit-frame-pointer
-pipe -o cloog cloog.o -L/<snip>/build/static/lib ./.libs/libcloog.a -lm
/<snip>/build/static/lib/libppl_c.a /<snip>/build/static/lib/libpwl.a
/<snip>/build/static/lib/libppl.a /<snip>/build/static/lib/libgmpxx.a
/<snip>/build/static/lib/libgmp.a -lstdc++
[ALL ] /usr/bin/ld: /<snip>/build/static/lib/libppl.a(MIP_Problem.o):
undefined reference to symbol 'sqrt@@GLIBC_2.0'
[ALL ] /usr/bin/ld: note: 'sqrt@@GLIBC_2.0' is defined in DSO
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/libm.so so try adding
it to the linker command line
[ALL ] /usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/libm.so:
could not read symbols: Invalid operation
[ALL ] collect2: ld returned 1 exit status
[ERROR] make[2]: *** [cloog] Error 1
[ERROR] make[1]: *** [check-recursive] Error 1

See:
https://wiki.ubuntu.com/NattyNarwhal/ToolchainTransition

This patch fixes these errors by placing '-lm' at the right place on the command
line as libppl requires libm when linking cloog.

Signed-off-by: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
yann@2448
     1
#include <stdarg.h>
yann@1
     2
yann@1
     3
/* confdata.c */
yann@1
     4
P(conf_parse,void,(const char *name));
yann@1
     5
P(conf_read,int,(const char *name));
yann@1
     6
P(conf_read_simple,int,(const char *name, int));
yann@2448
     7
P(conf_write_defconfig,int,(const char *name));
yann@1
     8
P(conf_write,int,(const char *name));
yann@1
     9
P(conf_write_autoconf,int,(void));
yann@39
    10
P(conf_get_changed,bool,(void));
yann@39
    11
P(conf_set_changed_callback, void,(void (*fn)(void)));
yann@2448
    12
P(conf_set_message_callback, void,(void (*fn)(const char *fmt, va_list ap)));
yann@1
    13
yann@1
    14
/* menu.c */
yann@1
    15
P(rootmenu,struct menu,);
yann@1
    16
yann@2448
    17
P(menu_is_visible, bool, (struct menu *menu));
yann@2448
    18
P(menu_has_prompt, bool, (struct menu *menu));
yann@1
    19
P(menu_get_prompt,const char *,(struct menu *menu));
yann@1
    20
P(menu_get_root_menu,struct menu *,(struct menu *menu));
yann@1
    21
P(menu_get_parent_menu,struct menu *,(struct menu *menu));
yann@943
    22
P(menu_has_help,bool,(struct menu *menu));
yann@943
    23
P(menu_get_help,const char *,(struct menu *menu));
yann@2448
    24
P(get_symbol_str, void, (struct gstr *r, struct symbol *sym));
yann@2448
    25
P(get_relations_str, struct gstr, (struct symbol **sym_arr));
yann@2448
    26
P(menu_get_ext_help,void,(struct menu *menu, struct gstr *help));
yann@1
    27
yann@1
    28
/* symbol.c */
yann@1
    29
P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]);
yann@1
    30
yann@943
    31
P(sym_lookup,struct symbol *,(const char *name, int flags));
yann@1
    32
P(sym_find,struct symbol *,(const char *name));
yann@2448
    33
P(sym_expand_string_value,const char *,(const char *in));
yann@1
    34
P(sym_re_search,struct symbol **,(const char *pattern));
yann@1
    35
P(sym_type_name,const char *,(enum symbol_type type));
yann@1
    36
P(sym_calc_value,void,(struct symbol *sym));
yann@1
    37
P(sym_get_type,enum symbol_type,(struct symbol *sym));
yann@1
    38
P(sym_tristate_within_range,bool,(struct symbol *sym,tristate tri));
yann@1
    39
P(sym_set_tristate_value,bool,(struct symbol *sym,tristate tri));
yann@1
    40
P(sym_toggle_tristate_value,tristate,(struct symbol *sym));
yann@1
    41
P(sym_string_valid,bool,(struct symbol *sym, const char *newval));
yann@1
    42
P(sym_string_within_range,bool,(struct symbol *sym, const char *str));
yann@1
    43
P(sym_set_string_value,bool,(struct symbol *sym, const char *newval));
yann@1
    44
P(sym_is_changable,bool,(struct symbol *sym));
yann@1
    45
P(sym_get_choice_prop,struct property *,(struct symbol *sym));
yann@1
    46
P(sym_get_default_prop,struct property *,(struct symbol *sym));
yann@1
    47
P(sym_get_string_value,const char *,(struct symbol *sym));
yann@1
    48
yann@1
    49
P(prop_get_type_name,const char *,(enum prop_type type));
yann@1
    50
yann@1
    51
/* expr.c */
yann@1
    52
P(expr_compare_type,int,(enum expr_type t1, enum expr_type t2));
yann@1
    53
P(expr_print,void,(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken));