summary refs log tree commit diff stats
path: root/tests/async
Commit message (Collapse)AuthorAgeFilesLines
* Fix tests on NixOS (#9209) (#9285)xzfc2018-10-102-3/+3
| | | | | | | * Replace `/bin/sleep` with just `sleep`, i.e. use environment variable `$PATH` to locate binary. * Replace `/usr/share/zoneinfo` with `$TZDIR` when it is defined, fallback to hardcoded path otherwise. This is the same behavior that Glibc2 normally have, see man 3 tzset.
* Fixes #8994. FutureStream read procedure data loss no longer occurs. (#9183)Dominik Picheta2018-10-091-0/+20
| | | | | | * Fixes #8994. FutureStream read procedure data loss no longer occurs. * Optimises the fix for #8994.
* asyncmacro: add nnkSym support for getName() (#9204)alaviss2018-10-091-0/+14
| | | Fixes #9201
* Fix regression w/ templates defined in async procLemonBoy2018-10-031-0/+11
|
* remove test_async.txt after test to keep git status cleanTimothee Cour2018-09-291-0/+1
|
* Skip nested procedures in .async. macroLemonBoy2018-09-221-0/+29
| | | | Fixes #3075
* Convert *_family fields to cushortLemonBoy2018-09-193-9/+3
| | | | Fixes #9008
* make async test more reliableAraq2018-09-151-3/+5
|
* Process timers before and after `select`. Fixes flaky #7758 test. (#8750)Dominik Picheta2018-08-251-5/+6
|
* disables flaky test; fixes #8756Andreas Rumpf2018-08-241-0/+1
|
* Adds test case for #6846. (#8729)Dominik Picheta2018-08-231-0/+16
|
* Don't skip poll() when no handles are present. (#8727)Dominik Picheta2018-08-231-0/+17
| | | | | | | | | | | Fixes #7886. Fixes #7758. Fixes #6929. Fixes #3909. Replaces #8209.
* make more tests green; system.repr does not produce 'nil' for strings and ↵Araq2018-08-221-1/+1
| | | | seqs anymore
* WIP: disallow 'nil' for strings and seqsAndreas Rumpf2018-08-132-4/+3
|
* disable tioselectors test for OSXAndreas Rumpf2018-08-061-1/+3
|
* Fixed #8399 (#8401)Yuriy Glukhov2018-07-223-34/+47
|
* make tests green againAndreas Rumpf2018-07-053-10/+10
|
* Removed oldIterTranf featureYuriy Glukhov2018-06-101-18/+0
|
* Fixes #7985Yuriy Glukhov2018-06-071-0/+19
|
* Fixed testsYuriy Glukhov2018-06-063-8/+24
|
* Review comments addressed. More thorough line info tracking.Yuriy Glukhov2018-05-101-2/+2
|
* Yield in tryYuriy Glukhov2018-05-091-1/+3
|
* Extended tasync_in_seq_constr testYuriy Glukhov2018-05-091-6/+14
|
* Closure iter transformationYuriy Glukhov2018-05-091-2/+1
|
* make tests greenAndreas Rumpf2018-05-051-6/+6
|
* make more tests greenAndreas Rumpf2018-04-301-2/+2
|
* Fix some usages of typedesc in async procsZahary Karadjov2018-04-131-6/+37
| | | | | This also fixes a compilation error in modules, based only on the new async module (i.e. not importing the full asyncdispatch)
* fixes #7347, asyncfile.getFileSize (#7354)andri lim2018-03-172-0/+12
| | | | | | * fixes #7347 * fixes #7347
* Fix AsyncFile open flags. Fixes #5531Ruslan Mustakov2018-02-171-2/+2
|
* Merge pull request #7023 from yglukhov/unify-asyncDominik Picheta2018-01-172-2/+30
|\ | | | | Unify async macro and futures for js and native targets
| * Unify async macro and futures for js and native targetsYuriy Glukhov2018-01-052-2/+30
| |
* | Fix tasync_traceback test.Dominik Picheta2018-01-111-0/+1
| |
* | Use regex to match output of tasync_traceback.Dominik Picheta2018-01-111-60/+69
| |
* | Merge pull request #6962 from nim-lang/fixes/6100Dominik Picheta2018-01-102-1/+16
|\ \ | |/ |/| Fixes #6100.
| * Fixes #6100.Dominik Picheta2017-12-272-1/+16
| |
* | Simplify async traceback processing.Dominik Picheta2017-12-281-29/+43
| |
* | No need to recurse now that mergeEntries doesn't do any pattern matching.Dominik Picheta2017-12-281-2/+2
| |
* | Show only detailed async tracebacks.Dominik Picheta2017-12-281-10/+17
| |
* | Rename cb0 to asyncProcName_continue + other improvements to async tracebacks.Dominik Picheta2017-12-281-0/+1
| |
* | Go through the re-raise stacks for more detailed tracebacks.Dominik Picheta2017-12-281-3/+44
| |
* | Refine the async tracebacks.Dominik Picheta2017-12-281-5/+12
| |
* | Implement some simple pattern-based transformation for async tracebacks.Dominik Picheta2017-12-281-0/+46
|/
* make asyncdispatch.poll completing all opterations that can be comple… (#6911)Andreas Rumpf2017-12-191-3/+3
| | | introduce asyncdispatch.drain that completes all operations that can be completed immediately; implements #6523
* fixes #6626Araq2017-12-151-2/+3
|
* Use addCallback rather than callback= in asyncfutures.all() (#6850)Mathias Stearn2017-12-091-0/+17
| | | | | | | | | | * Use addCallback rather than callback= in asyncfutures.all() Addresses part of #6849 * Stop using do notation for #6849 * Update example style
* Add an attempted reproduction for #5531.Dominik Picheta2017-11-261-0/+15
|
* Async upcoming (#6585)Dominik Picheta2017-11-221-1/+1
| | | | | | | | | | | | | * Merge upcoming async with current. * Various improvements to selectors (mostly docs). Two changes to highlight: * Renamed ``setEvent`` to ``trigger`` * Reused setBlocking from nativesockets. * Various changes/fixes to asyncdispatch after upcoming merge. * Make some attempts to be compatible with older selectors. * Reuse epoll module in ioselectors_epoll.
* make tests green againAndreas Rumpf2017-11-181-5/+4
|
* Tests should not rely on external services (#6703)Sergey Avseyev2017-11-151-2/+13
| | | | This test depends on example.com site to be reachable, and fails when there is no internet connection.
* Fix endianness in the test (#6715)Sergey Avseyev2017-11-111-1/+1
|
2a1e5e57ae24fd15d2b53ffd5'>61a6098f2 ^
e11297492 ^




782819982 ^
cd2c6128d ^
61a6098f2 ^

91eba77b9 ^
61a6098f2 ^

cd2c6128d ^
61a6098f2 ^

cd2c6128d ^
f7f87a770 ^
5be4e7b9f ^















4e183dc10 ^








1bc2e1949 ^


4e183dc10 ^

e4e493143 ^







f7f87a770 ^












cd2c6128d ^
4a0debfe8 ^

3a4ec7f10 ^
721534119 ^
3a4ec7f10 ^
721534119 ^
3a4ec7f10 ^
4a0debfe8 ^

721534119 ^
cd2c6128d ^









303ef57b1 ^
61a6098f2 ^
cd2c6128d ^


303ef57b1 ^
d67a9f024 ^
721534119 ^
642ce799e ^


303ef57b1 ^

721534119 ^
303ef57b1 ^




cd2c6128d ^
86206b253 ^
0ab1229c6 ^
86206b253 ^

e99f35ff2 ^
a71f78025 ^
e99f35ff2 ^
a71f78025 ^
e99f35ff2 ^
f3b56e7ac ^
d27bc03b2 ^
a13e2bd5e ^
4002bdf87 ^
e99f35ff2 ^
3ce8bec35 ^
cd2c6128d ^
3ce8bec35 ^
cd2c6128d ^
cd2c6128d ^

5b176f14a ^

2da0341b4 ^
15422a3e5 ^

2da0341b4 ^


15422a3e5 ^
2da0341b4 ^


15422a3e5 ^
7072eaad7 ^







2da0341b4 ^

13505c3be ^
5300baae0 ^



13505c3be ^

13505c3be ^
dc5fa90b4 ^
13505c3be ^
d27bc03b2 ^




e86a6d24d ^

d27bc03b2 ^


e86a6d24d ^

d27bc03b2 ^


















e4e493143 ^
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
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
                                          
                        




                                                   

                                                


        





                                                             
                                            
 




                                                                           
                                                                            


                                                   
 

                           



                            
                              



                          
                

                
 



                                
    
                                
 
                    









                     

    

                      
                         


               
           
                

    




                                                                                                      

                                                        

                                                     

                                                         
 

                                                        














                                                            

    
         
          

                                                                        
              




                                                          






                                     
      

    
            
            





                                               
      

    

                   



                                                                                                                                                                         

    







                                             
                                    
                 
                   


      

                                    




                                                           
                                 
            

                                                                  
              

                                                                                    
      

                                                                  
    
 















                                                                              








                                                                                         


                                 

    







                                 












                                                                                                                                                                
 

                                                         
            
                                         
      
                               
    

                                                             
                                 









                                            
                              
                                           


                           
            
                                                                   
                                                


                                       

                                           
                                                




                                   
                                              
                                                                          
                              

                                                                                                          
                      
                          
                            
                                
 
                               
                                        
                                 
                                     
                         
                             
                        
                            
 

                                        

                                        
           

                                                 


                                  
                                       


                                  
                                       







                                           

      
 



                                   

                   
                            
                           
    




                                                                   

                                                                                


                                                           

                                                                    


















                                                                              
    
# Configuration file for the Nim Compiler.
# (c) 2017 Andreas Rumpf

# Feel free to edit the default values as you need.

# You may set environment variables with
# @putenv "key" "val"
# Environment variables can be accessed like so:
#  gcc.path %= "$CC_PATH"

cc = gcc

# additional options always passed to the compiler:
--parallel_build: "0" # 0 to auto-detect number of processors

hint[LineTooLong]=off
#hint[XDeclaredButNotUsed]=off

# Examples of how to setup a cross-compiler:

# Cross-compiling for Raspberry Pi.
# (This compiler is available in gcc-arm-linux-gnueabihf package on Ubuntu)
arm.linux.gcc.exe = "arm-linux-gnueabihf-gcc"
arm.linux.gcc.linkerexe = "arm-linux-gnueabihf-gcc"

# For OpenWRT, you will also need to adjust PATH to point to your toolchain.
mips.linux.gcc.exe = "mips-openwrt-linux-gcc"
mips.linux.gcc.linkerexe = "mips-openwrt-linux-gcc"


path="$lib/deprecated/core"
path="$lib/deprecated/pure"
path="$lib/pure/collections"
path="$lib/pure/concurrency"
path="$lib/impure"
path="$lib/wrappers"
path="$lib/wrappers/linenoise"
path="$lib/windows"
path="$lib/posix"
path="$lib/js"
path="$lib/pure/unidecode"
path="$lib/arch"
path="$lib/core"
path="$lib/pure"

@if not windows:
  nimblepath="/opt/nimble/pkgs/"
@else:
  # TODO:
@end
nimblepath="$home/.nimble/pkgs/"

@if danger or quick:
  obj_checks:off
  field_checks:off
  range_checks:off
  bound_checks:off
  overflow_checks:off
  assertions:off
  stacktrace:off
  linetrace:off
  debugger:off
  line_dir:off
@end

@if release or danger:
  stacktrace:off
  excessiveStackTrace:off
  linetrace:off
  debugger:off
  line_dir:off
  opt:speed
  define:release
@end

@if false: # not danger: # this does not work yet.
  clang.options.always %= "${clang.options.always} -fsanitize=null -fsanitize-undefined-trap-on-error"
  gcc.options.always %= "${gcc.options.always} -fsanitize=null -fsanitize-undefined-trap-on-error"
@end

@if unix and mingw:
  # Cross compile for Windows from Linux/OSX using MinGW
  i386.windows.gcc.exe = "i686-w64-mingw32-gcc"
  i386.windows.gcc.linkerexe = "i686-w64-mingw32-gcc"
  i386.windows.gcc.cpp.exe = "i686-w64-mingw32-g++"
  i386.windows.gcc.cpp.linkerexe = "i686-w64-mingw32-g++"

  amd64.windows.gcc.exe = "x86_64-w64-mingw32-gcc"
  amd64.windows.gcc.linkerexe = "x86_64-w64-mingw32-gcc"
  amd64.windows.gcc.cpp.exe = "x86_64-w64-mingw32-g++"
  amd64.windows.gcc.cpp.linkerexe = "x86_64-w64-mingw32-g++"

  @if macosx:
    i386.windows.gcc.path = "/usr/local/bin"
    amd64.windows.gcc.path = "/usr/local/bin"
  @else:
    i386.windows.gcc.path = "/usr/bin"
    amd64.windows.gcc.path = "/usr/bin"
  @end

  os = windows

  gcc.options.linker = ""
  gcc.cpp.options.linker = ""
@end

@if unix:
  @if bsd:
    # BSD got posix_spawn only recently, so we deactivate it for osproc:
    define:useFork
  @elif haiku:
    gcc.options.linker = "-Wl,--as-needed -lnetwork"
    gcc.cpp.options.linker = "-Wl,--as-needed -lnetwork"
    clang.options.linker = "-Wl,--as-needed -lnetwork"
    clang.cpp.options.linker = "-Wl,--as-needed -lnetwork"
    tcc.options.linker = "-Wl,--as-needed -lnetwork"
  @else:
    # -fopenmp
    gcc.options.linker = "-ldl"
    gcc.cpp.options.linker = "-ldl"
    clang.options.linker = "-ldl"
    clang.cpp.options.linker = "-ldl"
    tcc.options.linker = "-ldl"
  @end
@end

@if android:
  cc = clang
  @if termux:
    gcc.options.linker = "-landroid-glob"
    gcc.cpp.options.linker = "-landroid-glob"
    clang.options.linker = "-landroid-glob"
    clang.cpp.options.linker = "-landroid-glob"
    tcc.options.linker = "-landroid-glob"
  @end
@end

@if nintendoswitch:
  cc = "switch_gcc"
  switch_gcc.options.linker = "-g -march=armv8-a -mtune=cortex-a57 -mtp=soft -fPIE"
  switch_gcc.cpp.options.linker = "-g -march=armv8-a -mtune=cortex-a57 -mtp=soft -fPIE"
  switch_gcc.options.always = "-g -Wall -O2 -ffunction-sections -march=armv8-a -mtune=cortex-a57 -mtp=soft -fPIE -D__SWITCH__"
  switch_gcc.cpp.options.always = "-g -Wall -O2 -ffunction-sections -march=armv8-a -mtune=cortex-a57 -mtp=soft -fPIE -D__SWITCH__ -fno-rtti -fno-exceptions -std=gnu++11"
@end

# Configuration for the Intel C/C++ compiler:
@if windows:
  icl.options.speed = "/Ox /arch:SSE2"
  icl.options.always = "/nologo"
@end

# Configuration for the GNU C/C++ compiler:
@if windows:
  #gcc.path = r"$nim\dist\mingw\bin"
  @if gcc or tcc:
    tlsEmulation:on
  @end
@end

gcc.maxerrorsimpl = "-fmax-errors=3"

@if bsd:
  # at least NetBSD has problems with thread local storage:
  tlsEmulation:on
@end

@if macosx or freebsd or openbsd:
  cc = clang
  gcc.options.always %= "-w ${gcc.maxerrorsimpl}"
  gcc.cpp.options.always %= "-w ${gcc.maxerrorsimpl} -fpermissive"
@elif windows:
  gcc.options.always %= "-w ${gcc.maxerrorsimpl} -mno-ms-bitfields"
  gcc.cpp.options.always %= "-w ${gcc.maxerrorsimpl} -fpermissive -mno-ms-bitfields"
@else:
  gcc.options.always %= "-w ${gcc.maxerrorsimpl}"
  gcc.cpp.options.always %= "-w ${gcc.maxerrorsimpl} -fpermissive"
@end

# Configuration for Objective-C compiler:
#
# Options for GNUStep. GNUStep configuration varies wildly, so you'll probably
# have to add additional compiler and linker flags on a per-project basis.
gcc.objc.options.linker = "-lobjc -lgnustep-base"
llvm_gcc.objc.options.linker = "-lobjc -lgnustep-base"
clang.objc.options.linker = "-lobjc -lgnustep-base"

# Options for Mac OS X. Mac OS X uses its own Objective-C stack that is
# totally different from GNUStep.
@if macosx:
  gcc.objc.options.linker = "-framework Foundation"
  llvm_gcc.objc.options.linker = "-framework Foundation"
  clang.objc.options.linker = "-framework Foundation"
@end

# Options for FreeBSD, OpenBSD, NetBSD linker to add locations for searching
# shared libraries.
@if freebsd or openbsd or netbsd:
  gcc.options.linker = "-Wl,-rpath=.:/usr/local/lib:/usr/pkg/lib:/usr/X11R6/lib"
  gcc.cpp.options.linker = "-Wl,-rpath=.:/usr/local/lib:/usr/pkg/lib:/usr/X11R6/lib"
  llvm_gcc.options.linker = "-Wl,-rpath=.:/usr/local/lib:/usr/pkg/lib:/usr/X11R6/lib"
  llvm_gcc.cpp.options.linker = "-Wl,-rpath=.:/usr/local/lib:/usr/pkg/lib:/usr/X11R6/lib"
  clang.options.linker = "-Wl,-rpath=.:/usr/local/lib:/usr/pkg/lib:/usr/X11R6/lib"
  clang.cpp.options.linker = "-Wl,-rpath=.:/usr/local/lib:/usr/pkg/lib:/usr/X11R6/lib"

  cincludes: "/usr/local/include"
  clibdir: "/usr/local/lib"
@end

@if freebsd or openbsd:
  cincludes: "/usr/local/include"
  clibdir: "/usr/local/lib"
@elif netbsd:
  cincludes: "/usr/pkg/include"
  clibdir: "/usr/pkg/lib"
@end

# Configuration for the VxWorks
# This has been tested with VxWorks 6.9 only
@if vxworks:
  # For now we only support compiling RTPs applications (i.e. no DKMs)
  gcc.options.always = "-mrtp -fno-strict-aliasing -D_C99 -D_HAS_C9X -std=c99 -fasm -Wall -Wno-write-strings"
  # The linker config must add the VxWorks common library for the selected
  # processor which is usually found in:
  # "$WIND_BASE/target/lib/usr/lib/PROCESSOR_FAMILY/PROCESSOR_TYPE/common",
  # where PROCESSOR_FAMILY and PROCESSOR_TYPE are those supported by the VxWorks
  # compiler (e.g. ppc/PPC32 or mips/MIPSI64, etc)
  # For now we only support the PowerPC CPU
  gcc.options.linker %= "-L $WIND_BASE/target/lib/usr/lib/ppc/PPC32/common -mrtp -fno-strict-aliasing -D_C99 -D_HAS_C9X -std=c99 -fasm -Wall -Wno-write-strings"
@end

gcc.options.speed = "-O3 -fno-strict-aliasing -fno-ident"
gcc.options.size = "-Os -fno-ident"
@if windows:
  gcc.options.debug = "-g3 -Og -gdwarf-3"
@else:
  gcc.options.debug = "-g3 -Og"
@end
gcc.cpp.options.speed = "-O3 -fno-strict-aliasing -fno-ident"
gcc.cpp.options.size = "-Os -fno-ident"
gcc.cpp.options.debug = "-g3 -Og"
#passl = "-pg"

# Configuration for the LLVM GCC compiler:
llvm_gcc.options.debug = "-g"
llvm_gcc.options.always = "-w"
llvm_gcc.options.speed = "-O2"
llvm_gcc.options.size = "-Os"

# Configuration for the LLVM CLang compiler:
clang.options.debug = "-g"
clang.cpp.options.debug = "-g"
clang.options.always = "-w -ferror-limit=3"
clang.options.speed = "-O3"
clang.options.size = "-Os"

@if windows:
  clang_cl.cpp.options.always %= "${clang_cl.options.always} /EHsc"
  @if not release and not safety and not danger:
    clang_cl.options.linker = "/Z7"
    clang_cl.cpp.options.linker = "/Z7"
  @end
  clang.options.debug = "-g -gcodeview"
  clang.cpp.options.debug = "-g -gcodeview"
  @if not release and not safety and not danger:
    clang.options.linker = "-g"
    clang.cpp.options.linker = "-g"
  @end
@end

# Configuration for the Visual C/C++ compiler:
# VCCEXE is a tool that invokes the Visual Studio Developer Command Prompt
# before calling the compiler.
# Please make sure either Visual Studio or C++ Build SKU is installed when using the vcc compiler backend.

vcc.exe = "vccexe.exe"
vcc.cpp.exe = "vccexe.exe"
vcc.linkerexe = "vccexe.exe"
vcc.cpp.linkerexe = "vccexe.exe"

vcc.options.always =  "/nologo"
vcc.cpp.options.always = "/nologo /EHsc"
vcc.options.debug = "/Zi /FS /Od"
vcc.cpp.options.debug = "/Zi /FS /Od"
vcc.options.speed = "/O2"
vcc.cpp.options.speed = "/O2"
vcc.options.size = "/O1"
vcc.cpp.options.size = "/O1"

# Configuration for the Tiny C Compiler:
tcc.options.always = "-w"

# Configuration for the Genode toolchain
@if genode:
  noCppExceptions # avoid std C++
  tlsEmulation:on # no TLS segment register magic
  @if i386 or amd64:
    gcc.exe = "genode-x86-gcc"
    gcc.cpp.exe = "genode-x86-g++"
    gcc.cpp.linkerexe = "genode-x86-ld"
  @elif arm:
    gcc.exe = "genode-arm-gcc"
    gcc.cpp.exe = "genode-arm-g++"
    gcc.cpp.linkerexe = "genode-arm-ld"
  @elif arm64:
    gcc.exe = "genode-aarch64-gcc"
    gcc.cpp.exe = "genode-aarch64-g++"
    gcc.cpp.linkerexe = "genode-aarch64-ld"
  @elif riscv64:
    gcc.exe = "genode-riscv-gcc"
    gcc.cpp.exe = "genode-riscv-g++"
    gcc.cpp.linkerexe = "genode-riscv-ld"
  @end
@end

@if arm or arm64:
  --define:nimEmulateOverflowChecks
@end

@if nimv019:
  --multimethods:on
  --define:nimOldCaseObjects
  --define:nimOldShiftRight
@end

@if lto or lto_incremental:
  @if lto_incremental:
   vcc.options.always%= "${vcc.options.always} /GL /Gw /Gy"
   vcc.cpp.options.always%= "${vcc.cpp.options.always} /GL /Gw /Gy"
   vcc.options.linker %= "${vcc.options.linker} /link /LTCG:incremental"
   vcc.cpp.options.linker %= "${vcc.cpp.options.linker} /link /LTCG:incremental"
  @else:
   vcc.options.always%= "${vcc.options.always} /GL"
   vcc.cpp.options.always%= "${vcc.cpp.options.always} /GL"
   vcc.options.linker %= "${vcc.options.linker} /link /LTCG"
   vcc.cpp.options.linker %= "${vcc.cpp.options.linker} /link /LTCG"
  @end
  clang_cl.options.always%= "${clang_cl.options.always} -flto"
  clang_cl.cpp.options.always%= "${clang.cpp.options.always} -flto"
  clang.options.always%= "${clang.options.always} -flto"
  clang.cpp.options.always%= "${clang.cpp.options.always} -flto"
  icl.options.always %= "${icl.options.always} /Qipo"
  icl.cpp.options.always %= "${icl.cpp.options.always} /Qipo"
  gcc.options.always %= "${gcc.options.always} -flto"
  gcc.cpp.options.always %= "${gcc.cpp.options.always} -flto"
  clang.options.linker %= "${clang.options.linker} -fuse-ld=lld -flto"
  clang.cpp.options.linker %= "${clang.cpp.options.linker} -fuse-ld=lld -flto"
  gcc.options.linker %= "${gcc.options.linker} -flto"
  gcc.cpp.options.linker %= "${gcc.cpp.options.linker} -flto"
@end
@if strip:
  gcc.options.linker %= "${gcc.options.linker} -s"
  gcc.cpp.options.linker %= "${gcc.cpp.options.linker} -s"
  clang.options.linker %= "${clang.options.linker} -s"
  clang.cpp.options.linker %= "${clang.cpp.options.linker} -s"
@end