config/global/build-behave.in
author Michael Hope <michael.hope@linaro.org>
Thu Sep 29 12:40:42 2011 +1300 (2011-09-29)
changeset 2695 f2495884ca3e
parent 1866 1539194a1877
child 2701 99de89e9acba
permissions -rw-r--r--
config: add a 'auto' value for the number of parallel jobs

When CT_PARALLEL_JOBS is -1, set the number of parallel jobs to the
number of online CPUs + 1. Update documentation to match.

I find this useful when building in the cloud. You can use the same
.config file and have the build adapt to the number of processors
available. Limited testing shows that NCPUS+1 is faster than NCPUS+0
or NCPUS+2.

Signed-off-by: Michael Hope <michael.hope@linaro.org>
yann@445
     1
# Options related to how the build behaves
yann@121
     2
yann@121
     3
comment "Build behavior"
yann@121
     4
yann@1866
     5
comment "Build options hiden"
yann@1866
     6
    depends on BACKEND
yann@1866
     7
yann@1
     8
config PARALLEL_JOBS
yann@1
     9
    int
yann@1866
    10
    prompt "Number of parallel jobs" if ! BACKEND
yann@1
    11
    default 1
yann@1
    12
    help
yann@1
    13
      Number of jobs make will be allowed to run concurently.
yann@1
    14
      Set this higher than the number of processors you have, but not too high.
yann@1
    15
      A good rule of thumb is twice the number of processors you have.
yann@1
    16
      
yann@1
    17
      Enter 1 (or 0) to have only one job at a time.
yann@1
    18
michael@2695
    19
      Enter -1 to set automatically based on how many processors the host has.
michael@2695
    20
yann@1
    21
config LOAD
yann@1
    22
    int
yann@1866
    23
    prompt "Maximum allowed load" if ! BACKEND
yann@1
    24
    default 0
yann@1
    25
    help
yann@1
    26
      Specifies that no new jobs should be started if there are others jobs
yann@1
    27
      running and the load average is at least this value.
yann@1
    28
      
yann@1
    29
      Makes sense on SMP machines only.
yann@1
    30
      
yann@1
    31
      Enter 0 to have no limit on the load average.
yann@1
    32
      
yann@1
    33
      Note: only the integer part of the load is allowed here (you can't enter
yann@1
    34
            0.75 for example).
yann@1
    35
yann@1
    36
config USE_PIPES
yann@1
    37
    bool
yann@1866
    38
    prompt "Use -pipe" if ! BACKEND
yann@1
    39
    default y
yann@1
    40
    help
yann@1
    41
      Use gcc's option -pipe to use pipes rather than temp files when building
yann@1
    42
      the toolchain.
yann@805
    43
yann@1444
    44
choice
yann@1444
    45
    bool
yann@1444
    46
    prompt "Shell to use as CONFIG_SHELL"
yann@1459
    47
    default CONFIG_SHELL_BASH
yann@1866
    48
    depends on ! BACKEND
yann@1444
    49
yann@1444
    50
config CONFIG_SHELL_SH
yann@1444
    51
    bool
yann@1444
    52
    prompt "sh (the system shell)"
yann@1444
    53
    help
yann@1444
    54
      Use 'sh' as CONFIG_SHELL.
yann@1444
    55
      
yann@1444
    56
      ./configure scripts and Makefiles make intensive use of calling
yann@1444
    57
      sub-shells. This is usually done by calling /bin/sh. /bin/sh ought
yann@1444
    58
      to be an at-least-POSIX-conformant shell (that is, able to interpret
yann@1444
    59
      POSIX shell scripts).
yann@1444
    60
      
yann@1444
    61
      On many (most?) systems, /bin/sh is a symlink to bash. On some other
yann@1444
    62
      systems (eg. Ubuntu, latest Debian), /bin/sh points to dash (or ash).
yann@1444
    63
      bash is a full-featured shell, with many extension to POSIX, but is
yann@1444
    64
      quite slow (see ection BUGS in the bash man page), while dash is
yann@1444
    65
      faster, with very few extensions to POSIX.  On the other hand, some
yann@1444
    66
      ./configure scripts, although written to use /bin/sh, may really
yann@1444
    67
      require to be run by bash.
yann@1444
    68
      
yann@1459
    69
      The default is to use bash, as some components (eg. GMP) will fail
yann@1459
    70
      to build with anything else than bash.
yann@1459
    71
yann@805
    72
config CONFIG_SHELL_ASH
yann@805
    73
    bool
yann@1447
    74
    prompt "ash (READ HELP!)"
yann@805
    75
    help
yann@1444
    76
      Use 'ash' as CONFIG_SHELL.
yann@805
    77
      
yann@1444
    78
      See help for CONFIG_SHELL_SH, above, for more explanations.
yann@1447
    79
      
yann@1447
    80
      NOTE: It is advised that you do NOT use ash as CONFIG_SHELL, as some
yann@1447
    81
      components are broken. If you decide to use ash, and the build breaks,
yann@1447
    82
      don't come moaning and set the CONFIG_SHELL to bash, below.
yann@1444
    83
yann@1445
    84
config CONFIG_SHELL_BASH
yann@1445
    85
    bool
yann@1445
    86
    prompt "bash"
yann@1445
    87
    help
yann@1445
    88
      Use 'bash' as CONFIG_SHELL.
yann@1445
    89
      
yann@1445
    90
      See help for CONFIG_SHELL_SH, above, for more explanations.
yann@1445
    91
yann@1446
    92
config CONFIG_SHELL_CUSTOM
yann@1446
    93
    bool
yann@1446
    94
    prompt "custom shell"
yann@1446
    95
    help
yann@1446
    96
      Enter full path to the custom shell below.
yann@1446
    97
      
yann@1446
    98
      See help for CONFIG_SHELL_SH, above, for more explanations.
yann@1446
    99
yann@1444
   100
endchoice
yann@1444
   101
yann@1444
   102
config CONFIG_SHELL
yann@1444
   103
    string
yann@1446
   104
    default "sh"        if CONFIG_SHELL_SH
yann@1446
   105
    default "ash"       if CONFIG_SHELL_ASH
yann@1446
   106
    default "bash"      if CONFIG_SHELL_BASH
yann@1866
   107
    default "custom"    if CONFIG_SHELL_CUSTOM || BACKEND
yann@1866
   108
yann@1866
   109
config CONFIG_SHELL_CUSTOM_PATH
yann@1866
   110
    string
yann@1866
   111
    prompt "Path to custom shell" if ! BACKEND
yann@1866
   112
    depends on CONFIG_SHELL_CUSTOM || BACKEND
yann@1866
   113
    default "/bin/sh"