config/companion_libs.in
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Mon Mar 29 00:15:32 2010 +0200 (2010-03-29)
changeset 1864 758d5137fe87
parent 1811 35cf5e2f110a
child 1870 a4c4e51aa541
permissions -rw-r--r--
scripts/populate: optimise search loop

Curently, populate will iterate over all ELF (shared objects|executables)
to look for missing NEEDED DSOs, adding to the list at every iterations
of the search loop.

Instead of looking again at previously handled ELF files, recursively
resolve every ELf files.

Also, in case there are a whole lot of files (more than the shell can
accept as arguments list, or creating a command line longer than the
shell can cope with), use a temporary file with the list of files
to search for missing dependencies.
yann@1318
     1
# Companion libraries config options
yann@1318
     2
# Those libraries are required for different versions of gcc,
yann@1318
     3
# and can be used by binutils and gdb (maybe others as well).
yann@602
     4
yann@1318
     5
menu "Companion libraries"
yann@602
     6
yann@1808
     7
comment "FIXME: check real dependencies!!!"
yann@1808
     8
yann@1809
     9
config COMPLIBS
yann@1809
    10
    bool
yann@1809
    11
    default n
yann@1809
    12
yann@1495
    13
config WRAPPER_NEEDED
yann@1495
    14
    bool
yann@1495
    15
    default n
yann@1495
    16
yann@1808
    17
config GMP
yann@602
    18
    bool
yann@1809
    19
    select COMPLIBS
yann@1495
    20
    select WRAPPER_NEEDED
yann@602
    21
    help
yann@1808
    22
      gcc 4.3.0 and above requires GMP to build some frontends, and some
yann@1808
    23
      other components can use them as well.
yann@1318
    24
      
yann@1808
    25
      This will be automatically selected if you choose gcc>=4.3.0, but you
yann@1808
    26
      can say 'Y' here if you want to build this library for the other
yann@1324
    27
      components (that don't select them by default).
yann@1318
    28
      
yann@602
    29
      The packages that can use GMP and MPFR are:
yann@602
    30
        - binutils
yann@602
    31
        - gcc
yann@602
    32
        - gdb
yann@602
    33
yann@1808
    34
config MPFR
yann@1808
    35
    bool
yann@1808
    36
    select GMP
yann@1809
    37
    select COMPLIBS
yann@1808
    38
    select WRAPPER_NEEDED
yann@1808
    39
    help
yann@1808
    40
      gcc 4.3.0 and above requires MPFR to build some frontends, and some
yann@1808
    41
      other components can use them as well.
yann@1808
    42
      
yann@1808
    43
      This will be automatically selected if you choose gcc>=4.3.0, but you
yann@1808
    44
      can say 'Y' here if you want to build this library for the other
yann@1808
    45
      components (that don't select them by default).
yann@1808
    46
      
yann@1808
    47
      The packages that can use GMP and MPFR are:
yann@1808
    48
        - binutils
yann@1808
    49
        - gcc
yann@1808
    50
        - gdb
yann@1808
    51
yann@1808
    52
config PPL
yann@1808
    53
    bool
yann@1808
    54
    select GMP
yann@1808
    55
    select MPFR
yann@1809
    56
    select COMPLIBS
yann@1808
    57
    select WRAPPER_NEEDED
yann@1808
    58
    help
yann@1808
    59
      gcc-4.4.0 and above requires PPL to build some parts of the optimiser
yann@1808
    60
      (the GRAPHITE loop optimisation, to be precise).
yann@1808
    61
      
yann@1808
    62
      This will be automatically selected if you choose gcc>=4.4.0, but you
yann@1808
    63
      can say 'Y' here, although it is unknown yet if any other component
yann@1808
    64
      can use it.
yann@1808
    65
yann@1808
    66
config CLOOG
yann@1808
    67
    bool
yann@1808
    68
    select GMP
yann@1808
    69
    select MPFR
yann@1808
    70
    select PPL
yann@1809
    71
    select COMPLIBS
yann@1808
    72
    select WRAPPER_NEEDED
yann@1808
    73
    help
yann@1808
    74
      gcc-4.4.0 and above requires CLooG/PPL to build some parts of the
yann@1808
    75
      optimiser (the GRAPHITE loop optimisation, to be precise).
yann@1808
    76
      
yann@1808
    77
      This will be automatically selected if you choose gcc>=4.4.0, but you
yann@1808
    78
      can say 'Y' here, although it is unknown yet if any other component
yann@1808
    79
      can use it.
yann@1808
    80
yann@1808
    81
config MPC
yann@1808
    82
    bool
yann@1808
    83
    select GMP
yann@1808
    84
    select MPFR
yann@1808
    85
    select PPL
yann@1808
    86
    select CLOOG
yann@1809
    87
    select COMPLIBS
yann@1808
    88
    select WRAPPER_NEEDED
yann@1808
    89
    help
yann@1808
    90
      gcc-4.4.0 and above can also optionally use MPC to enable additional
yann@1808
    91
      optimisations on complex numbers. Although MPC is optional,
yann@1808
    92
      crosstool-NG requires it and uses it to build gcc >= 4.4.0.
yann@1808
    93
      
yann@1808
    94
      This will be automatically selected if you choose gcc>=4.4.0, but you
yann@1808
    95
      can say 'Y' here, although it is unknown yet if any other component
yann@1808
    96
      can use it.
yann@1808
    97
yann@1811
    98
config LIBELF
yann@1811
    99
    bool
yann@1811
   100
    select COMPLIBS
yann@1811
   101
    select WRAPPER_NEEDED
yann@1811
   102
    help
yann@1811
   103
      gcc-4.5.0 and above can also use libelf to enable some optimisation
yann@1811
   104
      (LTO, Link-Time Optimisation, to be precise).  Although libelf is
yann@1811
   105
      optional, crosstool-NG requires it and uses it to build gcc >= 4.5.0.
yann@1811
   106
      
yann@1811
   107
      This will be automatically selected if you choose gcc>=4.5.0, but you
yann@1811
   108
      can say 'Y' here, although it is unknown yet if any other component
yann@1811
   109
      can use it.
yann@1811
   110
yann@1810
   111
config GMP_TARGET
yann@1810
   112
    bool
yann@1810
   113
yann@1810
   114
config MPFR_TARGET
yann@1810
   115
    bool
yann@1810
   116
    select GMP_TARGET
yann@1810
   117
yann@1810
   118
config PPL_TARGET
yann@1810
   119
    bool
yann@1810
   120
    select GMP_TARGET
yann@1810
   121
    select MPFR_TARGET
yann@1810
   122
yann@1810
   123
config CLOOG_TARGET
yann@1810
   124
    bool
yann@1810
   125
    select GMP_TARGET
yann@1810
   126
    select MPFR_TARGET
yann@1810
   127
    select PPL_TARGET
yann@1810
   128
yann@1810
   129
config MPC_TARGET
yann@1810
   130
    bool
yann@1810
   131
    select GMP_TARGET
yann@1810
   132
    select MPFR_TARGET
yann@1810
   133
    select PPL_TARGET
yann@1810
   134
    select CLOOG_TARGET
yann@1810
   135
yann@1811
   136
config LIBELF_TARGET
yann@1811
   137
    bool
yann@1811
   138
yann@1810
   139
if GMP || GMP_TARGET
yann@1810
   140
comment "GMP version needed to build for target"
yann@1810
   141
    depends on !GMP
yann@1318
   142
source config/companion_libs/gmp.in
yann@1808
   143
endif
yann@1810
   144
if MPFR || MPFR_TARGET
yann@1810
   145
comment "MPFR version needed to build for target"
yann@1810
   146
    depends on !MPFR
yann@1318
   147
source config/companion_libs/mpfr.in
yann@602
   148
endif
yann@1810
   149
if PPL || PPL_TARGET
yann@1810
   150
comment "PPL version needed to build for target"
yann@1810
   151
    depends on !PPL
yann@1324
   152
source config/companion_libs/ppl.in
yann@1808
   153
endif
yann@1810
   154
if CLOOG || CLOOG_TARGET
yann@1810
   155
comment "CLOOG version needed to build for target"
yann@1810
   156
    depends on !CLOOG
yann@1380
   157
source config/companion_libs/cloog.in
yann@1808
   158
endif
yann@1810
   159
if MPC || MPC_TARGET
yann@1810
   160
comment "MPC version needed to build for target"
yann@1810
   161
    depends on !MPC
yann@1384
   162
source config/companion_libs/mpc.in
yann@1324
   163
endif
yann@1811
   164
if LIBELF || LIBELF_TARGET
yann@1811
   165
comment "libelf version needed to build for target"
yann@1811
   166
    depends on !LIBELF
yann@1811
   167
source config/companion_libs/libelf.in
yann@1811
   168
endif
yann@1324
   169
yann@1398
   170
config FOO
yann@1398
   171
    bool
yann@1398
   172
yann@1398
   173
comment "Companion libraries common options"
yann@1809
   174
    depends on COMPLIBS || WRAPPER_NEEDED
yann@1809
   175
yann@1386
   176
config COMP_LIBS_CHECK
yann@1386
   177
    bool
yann@1398
   178
    prompt "|  Check the companion libraries builds (!!! READ HELP!!!)"
yann@1386
   179
    default n
yann@1810
   180
    depends on COMPLIBS
yann@1386
   181
    help
yann@1386
   182
      It is highly recommended to check the newly built companion libraries.
yann@1386
   183
      Unfortunately, this is a very intensive task, and takes a loooong time.
Yann@1407
   184
      
yann@1386
   185
      Checking the newly built companion libraries is thus disabled by default,
yann@1388
   186
      but it is suggested that you check them at least once on your machine,
yann@1386
   187
      and if they work, disable the check on subsequent builds.
Yann@1407
   188
      
yann@1386
   189
      If you suspect that one (or more) of your companion libraries is the
yann@1386
   190
      cause for incorrectly generated code, you should answer 'Y' here.
yann@1386
   191
      Note however that this will take a really long time. For example,
yann@1386
   192
      building PPL on my machine takes roughly 1'40", while checking it takes
yann@1398
   193
      about 1h40'...
yann@1386
   194
yann@1515
   195
choice
yann@1515
   196
    bool
yann@1515
   197
    prompt "|  Install tools wrapper as:"
yann@1515
   198
    depends on WRAPPER_NEEDED
yann@1515
   199
    default TOOLS_WRAPPER_SHELL
yann@1515
   200
yann@1515
   201
config TOOLS_WRAPPER_SCRIPT
yann@1515
   202
    bool
yann@1515
   203
    prompt "shell script"
yann@1515
   204
    help
yann@1515
   205
      If your host has a shell, then you should say 'Y' here, to use
yann@1515
   206
      a (very very simple) shell script as wrapper.
yann@1515
   207
      
yann@1515
   208
      See docs/overview.txt, section "Tools wrapper".
yann@1515
   209
yann@1515
   210
config TOOLS_WRAPPER_EXEC
yann@1515
   211
    bool
yann@1515
   212
    prompt "executable"
yann@1515
   213
    help
yann@1515
   214
      If your host lacks a shell, then you should say 'Y' here, to use
yann@1515
   215
      an executable.
yann@1515
   216
      
yann@1515
   217
      See docs/overview.txt, section "Tools wrapper".
yann@1515
   218
yann@1515
   219
endchoice
yann@1515
   220
yann@1515
   221
config TOOLS_WRAPPER
yann@1515
   222
    string
yann@1515
   223
    default "script" if TOOLS_WRAPPER_SCRIPT
yann@1515
   224
    default "exec"   if TOOLS_WRAPPER_EXEC
yann@1515
   225
yann@602
   226
endmenu