summaryrefslogtreecommitdiff
path: root/config/binutils/binutils.in
blob: 508780bbe20f3a4d25d7cd169bfd86584eefa5dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
# binutils options

comment "GNU binutils"

choice
    bool
    prompt "binutils version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW

config BINUTILS_V_2_21
    bool
    depends on EXPERIMENTAL
    prompt "2.21"
    select BINUTILS_2_21_or_later

config BINUTILS_V_2_20_1
    bool
    prompt "2.20.1"

config BINUTILS_V_2_20
    bool
    prompt "2.20"

config BINUTILS_V_2_19_1
    bool
    prompt "2.19.1"

config BINUTILS_V_2_19
    bool
    prompt "2.19"

config BINUTILS_V_2_18
    bool
    prompt "2.18"

config BINUTILS_V_2_17
    bool
    prompt "2.17 (OBSOLETE)"
    depends on OBSOLETE

config BINUTILS_V_2_16_1
    bool
    prompt "2.16.1 (OBSOLETE)"
    depends on OBSOLETE

endchoice

config BINUTILS_VERSION
    string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
    default "2.21" if BINUTILS_V_2_21
    default "2.20.1" if BINUTILS_V_2_20_1
    default "2.20" if BINUTILS_V_2_20
    default "2.19.1" if BINUTILS_V_2_19_1
    default "2.19" if BINUTILS_V_2_19
    default "2.18" if BINUTILS_V_2_18
    default "2.17" if BINUTILS_V_2_17
    default "2.16.1" if BINUTILS_V_2_16_1

config BINUTILS_2_21_or_later
    bool
    select BINUTILS_HAS_GOLD
    select BINUTILS_HAS_PLUGINS

config BINUTILS_HAS_GOLD
    bool

config BINUTILS_GOLD_SUPPORTS_ARCH
    bool

config BINUTILS_HAS_PLUGINS
    bool

# Only these architectures have support in gold
config ARCH_arm
    select BINUTILS_GOLD_SUPPORTS_ARCH

config ARCH_x86
    select BINUTILS_GOLD_SUPPORTS_ARCH

if BINUTILS_HAS_GOLD && BINUTILS_GOLD_SUPPORTS_ARCH

choice
    bool
    prompt "Linkers to enable"

config BINUTILS_LINKER_LD
    bool
    prompt "ld"
    help
      The historical, bfd linker.

config BINUTILS_LINKER_GOLD
    bool
    prompt "gold"
    depends on BINUTILS_HAS_GOLD
    depends on EXPERIMENTAL
    select BINUTILS_GOLD_INSTALLED
    help
      gold is a new, optimised, multi-threaded linker with support
      for plugins. Designed to be a drop-in replacement for the
      original linker, ld, it can be much faster, with a 5:1 or
      bigger ratio being not uncommon, YMMV.

config BINUTILS_LINKER_LD_GOLD
    bool
    prompt "ld, gold"
    depends on BINUTILS_HAS_GOLD
    depends on EXPERIMENTAL
    select BINUTILS_GOLD_INSTALLED
    select BINUTILS_LINKER_BOTH
    help
      Both the historical ld and the new gold linkers will be
      installed, with ld being the default linker used.
      
      See help for gold, above.

config BINUTILS_LINKER_GOLD_LD
    bool
    prompt "gold, ld"
    depends on BINUTILS_HAS_GOLD
    depends on EXPERIMENTAL
    select BINUTILS_GOLD_INSTALLED
    select BINUTILS_LINKER_BOTH
    help
      Both the historical ld and the new gold linkers will be
      installed, with gold being the default linker used.
      
      See help for gold, above.

endchoice # Enable linkers

config BINUTILS_GOLD_INSTALLED
    bool

config BINUTILS_GOLD_THREADS
    bool
    prompt "|  Enable threaded gold"
    depends on BINUTILS_GOLD_INSTALLED
    help
      When configured with threads, gold can link in parallel,
      possibly cooperating with a make jobserver.

config BINUTILS_LINKER_BOTH
    bool

config BINUTILS_LINKERS_LIST
    string
    default "ld"        if BINUTILS_LINKER_LD
    default "gold"      if BINUTILS_LINKER_GOLD
    default "ld,gold"   if BINUTILS_LINKER_LD_GOLD
    default "gold,ld"   if BINUTILS_LINKER_GOLD_LD

config BINUTILS_LD_WRAPPER
    bool
    prompt "|  Add ld wrapper"
    depends on BINUTILS_LINKER_BOTH
    help
      Add an ld wrapper that calls to either gold or ld.
      
      By default, the wrapper will call to the default wrapper,
      but if you set the environment variable CTNG_LD_IS, you
      can change which linker will get called:
        CTNG_LD_IS=gold     will unconditionally call the gold linker
        CTNG_LD_IS=bfd      will unconditionally call the old bfd ld linker

config BINUTILS_LINKER_DEFAULT
    string
    depends on BINUTILS_LD_WRAPPER
    default "bfd"   if BINUTILS_LINKER_LD_GOLD
    default "gold"  if BINUTILS_LINKER_GOLD_LD

endif # BINUTILS_HAS_GOLD

config BINUTILS_PLUGINS
    bool
    prompt "Enable support for plugins"
    depends on BINUTILS_HAS_PLUGINS
    depends on ! STATIC_TOOLCHAIN
    help
      binutils can be extended through the use of plugins.
      Especially, gold can use the lto-plugin, as installed
      by gcc, to handle LTO.

config BINUTILS_EXTRA_CONFIG
    string
    prompt "binutils extra config"
    default ""
    help
      Extra flags passed onto ./configure when configuring

config BINUTILS_FOR_TARGET
    bool
    prompt "binutils libraries for the target"
    depends on ! BARE_METAL
    depends on ! BACKEND
    default n
    help
      Some utilities may need binutils libraries to be available on
      the target, eg. oprofile.

if BINUTILS_FOR_TARGET

config BINUTILS_FOR_TARGET_IBERTY
    bool
    prompt "libiberty"
    default y

config BINUTILS_FOR_TARGET_BFD
    bool
    prompt "libbfd"
    default y

endif # BINUTILS_FOR_TARGET