1{
2  'variables': {
3    'configuring_node%': 0,
4    'asan%': 0,
5    'werror': '',                     # Turn off -Werror in V8 build.
6    'visibility%': 'hidden',          # V8's visibility setting
7    'target_arch%': 'ia32',           # set v8's target architecture
8    'host_arch%': 'ia32',             # set v8's host architecture
9    'want_separate_host_toolset%': 0, # V8 should not build target and host
10    'library%': 'static_library',     # allow override to 'shared_library' for DLL/.so builds
11    'component%': 'static_library',   # NB. these names match with what V8 expects
12    'msvs_multi_core_compile': '0',   # we do enable multicore compiles, but not using the V8 way
13    'enable_pgo_generate%': '0',
14    'enable_pgo_use%': '0',
15    'python%': 'python',
16
17    'node_shared%': 'false',
18    'force_dynamic_crt%': 0,
19    'node_use_v8_platform%': 'true',
20    'node_use_bundled_v8%': 'true',
21    'node_module_version%': '',
22    'node_with_ltcg%': '',
23    'node_shared_openssl%': 'false',
24
25    'node_tag%': '',
26    'uv_library%': 'static_library',
27
28    'clang%': 0,
29    'error_on_warn%': 'false',
30
31    'openssl_product': '<(STATIC_LIB_PREFIX)openssl<(STATIC_LIB_SUFFIX)',
32    'openssl_no_asm%': 0,
33
34    # Don't use ICU data file (icudtl.dat) from V8, we use our own.
35    'icu_use_data_file_flag%': 0,
36
37    # Reset this number to 0 on major V8 upgrades.
38    # Increment by one for each non-official patch applied to deps/v8.
39    'v8_embedder_string': '-node.36',
40
41    ##### V8 defaults for Node.js #####
42
43    # Turn on SipHash for hash seed generation, addresses HashWick
44    'v8_use_siphash': 'true',
45
46    # These are more relevant for V8 internal development.
47    # Refs: https://github.com/nodejs/node/issues/23122
48    # Refs: https://github.com/nodejs/node/issues/23167
49    # Enable compiler warnings when using V8_DEPRECATED apis from V8 code.
50    'v8_deprecation_warnings': 0,
51    # Enable compiler warnings when using V8_DEPRECATE_SOON apis from V8 code.
52    'v8_imminent_deprecation_warnings': 0,
53
54    # Enable disassembler for `--print-code` v8 options
55    'v8_enable_disassembler': 1,
56
57    # Sets -dOBJECT_PRINT.
58    'v8_enable_object_print%': 1,
59
60    # https://github.com/nodejs/node/pull/22920/files#r222779926
61    'v8_enable_handle_zapping': 0,
62
63    # Disable pointer compression. Can be enabled at build time via configure
64    # options but default values are required here as this file is also used by
65    # node-gyp to build addons.
66    'v8_enable_pointer_compression%': 0,
67    'v8_enable_31bit_smis_on_64bit_arch%': 0,
68
69    # Disable v8 hugepage by default.
70    'v8_enable_hugepage%': 0,
71
72    # This is more of a V8 dev setting
73    # https://github.com/nodejs/node/pull/22920/files#r222779926
74    'v8_enable_fast_mksnapshot': 0,
75
76    'v8_win64_unwinding_info': 1,
77
78    # TODO(refack): make v8-perfetto happen
79    'v8_use_perfetto': 0,
80
81    ##### end V8 defaults #####
82
83    'conditions': [
84      ['OS == "win"', {
85        'os_posix': 0,
86        'v8_postmortem_support%': 0,
87        'obj_dir': '<(PRODUCT_DIR)/obj',
88        'v8_base': '<(PRODUCT_DIR)/lib/libv8_snapshot.a',
89      }, {
90        'os_posix': 1,
91        'v8_postmortem_support%': 1,
92      }],
93      ['GENERATOR == "ninja"', {
94        'obj_dir': '<(PRODUCT_DIR)/obj',
95        'v8_base': '<(PRODUCT_DIR)/obj/tools/v8_gypfiles/libv8_snapshot.a',
96      }, {
97        'obj_dir%': '<(PRODUCT_DIR)/obj.target',
98        'v8_base': '<(PRODUCT_DIR)/obj.target/tools/v8_gypfiles/libv8_snapshot.a',
99      }],
100      ['OS=="mac"', {
101        'clang%': 1,
102        'obj_dir%': '<(PRODUCT_DIR)/obj.target',
103        'v8_base': '<(PRODUCT_DIR)/libv8_snapshot.a',
104      }],
105      # V8 pointer compression only supports 64bit architectures.
106      ['target_arch in "arm ia32 mips mipsel ppc"', {
107        'v8_enable_pointer_compression': 0,
108        'v8_enable_31bit_smis_on_64bit_arch': 0,
109      }],
110      ['target_arch in "ppc64 s390x"', {
111        'v8_enable_backtrace': 1,
112      }],
113      ['OS=="linux"', {
114        'node_section_ordering_info%': ''
115      }],
116      ['OS == "zos"', {
117        # use ICU data file on z/OS
118        'icu_use_data_file_flag%': 1
119      }]
120    ],
121  },
122
123  'target_defaults': {
124    'default_configuration': 'Release',
125    'configurations': {
126      'Debug': {
127        'variables': {
128          'v8_enable_handle_zapping': 1,
129          'conditions': [
130            ['node_shared != "true"', {
131              'MSVC_runtimeType': 1,    # MultiThreadedDebug (/MTd)
132            }, {
133              'MSVC_runtimeType': 3,    # MultiThreadedDebugDLL (/MDd)
134            }],
135          ],
136        },
137        'defines': [ 'DEBUG', '_DEBUG', 'V8_ENABLE_CHECKS' ],
138        'cflags': [ '-g', '-O0' ],
139        'conditions': [
140          ['OS in "aix os400"', {
141            'cflags': [ '-gxcoff' ],
142            'ldflags': [ '-Wl,-bbigtoc' ],
143          }],
144          ['OS == "android"', {
145            'cflags': [ '-fPIC' ],
146            'ldflags': [ '-fPIC' ]
147          }],
148        ],
149        'msvs_settings': {
150          'VCCLCompilerTool': {
151            'BasicRuntimeChecks': 3,        # /RTC1
152            'MinimalRebuild': 'false',
153            'OmitFramePointers': 'false',
154            'Optimization': 0,              # /Od, no optimization
155            'RuntimeLibrary': '<(MSVC_runtimeType)',
156          },
157          'VCLinkerTool': {
158            'LinkIncremental': 2, # enable incremental linking
159          },
160        },
161        'xcode_settings': {
162          'GCC_OPTIMIZATION_LEVEL': '0', # stop gyp from defaulting to -Os
163        },
164      },
165      'Release': {
166        'variables': {
167          'v8_enable_handle_zapping': 0,
168          'pgo_generate': ' -fprofile-generate ',
169          'pgo_use': ' -fprofile-use -fprofile-correction ',
170          'conditions': [
171            ['node_shared != "true"', {
172              'MSVC_runtimeType': 0    # MultiThreaded (/MT)
173            }, {
174              'MSVC_runtimeType': 2   # MultiThreadedDLL (/MD)
175            }],
176            ['llvm_version=="0.0"', {
177              'lto': ' -flto=4 -fuse-linker-plugin -ffat-lto-objects ', # GCC
178            }, {
179              'lto': ' -flto ', # Clang
180            }],
181          ],
182        },
183        'cflags': [ '-O3' ],
184        'conditions': [
185          ['enable_lto=="true"', {
186            'cflags': ['<(lto)'],
187            'ldflags': ['<(lto)'],
188            'xcode_settings': {
189              'LLVM_LTO': 'YES',
190            },
191          }],
192          ['OS=="linux"', {
193            'conditions': [
194              ['node_section_ordering_info!=""', {
195                'cflags': [
196                  '-fuse-ld=gold',
197                  '-ffunction-sections',
198                ],
199                'ldflags': [
200                  '-fuse-ld=gold',
201                  '-Wl,--section-ordering-file=<(node_section_ordering_info)',
202                ],
203              }],
204            ],
205          }],
206          ['OS=="solaris"', {
207            # pull in V8's postmortem metadata
208            'ldflags': [ '-Wl,-z,allextract' ]
209          }],
210          ['OS=="zos"', {
211            # increase performance, number from experimentation
212            'cflags': [ '-qINLINE=::150:100000' ]
213          }],
214          ['OS!="mac" and OS!="win" and OS!="zos"', {
215            # -fno-omit-frame-pointer is necessary for the --perf_basic_prof
216            # flag to work correctly. perf(1) gets confused about JS stack
217            # frames otherwise, even with --call-graph dwarf.
218            'cflags': [ '-fno-omit-frame-pointer' ],
219          }],
220          ['OS=="linux"', {
221            'conditions': [
222              ['enable_pgo_generate=="true"', {
223                'cflags': ['<(pgo_generate)'],
224                'ldflags': ['<(pgo_generate)'],
225              },],
226              ['enable_pgo_use=="true"', {
227                'cflags': ['<(pgo_use)'],
228                'ldflags': ['<(pgo_use)'],
229              },],
230            ],
231          },],
232          ['OS == "android"', {
233            'cflags': [ '-fPIC' ],
234            'ldflags': [ '-fPIC' ]
235          }],
236        ],
237        'msvs_settings': {
238          'VCCLCompilerTool': {
239            'conditions': [
240              ['target_arch=="arm64"', {
241                'FloatingPointModel': 1 # /fp:strict
242              }]
243            ],
244            'EnableFunctionLevelLinking': 'true',
245            'EnableIntrinsicFunctions': 'true',
246            'FavorSizeOrSpeed': 1,          # /Ot, favor speed over size
247            'InlineFunctionExpansion': 2,   # /Ob2, inline anything eligible
248            'OmitFramePointers': 'true',
249            'Optimization': 3,              # /Ox, full optimization
250            'RuntimeLibrary': '<(MSVC_runtimeType)',
251            'RuntimeTypeInfo': 'false',
252          }
253        },
254        'xcode_settings': {
255          'GCC_OPTIMIZATION_LEVEL': '3', # stop gyp from defaulting to -Os
256        },
257      }
258    },
259
260    # Defines these mostly for node-gyp to pickup, and warn addon authors of
261    # imminent V8 deprecations, also to sync how dependencies are configured.
262    'defines': [
263      'V8_DEPRECATION_WARNINGS',
264      'V8_IMMINENT_DEPRECATION_WARNINGS',
265      '_GLIBCXX_USE_CXX11_ABI=1',
266    ],
267
268    # Forcibly disable -Werror.  We support a wide range of compilers, it's
269    # simply not feasible to squelch all warnings, never mind that the
270    # libraries in deps/ are not under our control.
271    'conditions': [
272      [ 'error_on_warn=="false"', {
273        'cflags!': ['-Werror'],
274      }, '(_target_name!="<(node_lib_target_name)" or '
275          '_target_name!="<(node_core_target_name)")', {
276        'cflags!': ['-Werror'],
277      }],
278    ],
279    'msvs_settings': {
280      'VCCLCompilerTool': {
281        'AdditionalOptions': [
282          '/Zc:__cplusplus',
283          '-std:c++17'
284        ],
285        'BufferSecurityCheck': 'true',
286        'DebugInformationFormat': 1,          # /Z7 embed info in .obj files
287        'ExceptionHandling': 0,               # /EHsc
288        'MultiProcessorCompilation': 'true',
289        'StringPooling': 'true',              # pool string literals
290        'SuppressStartupBanner': 'true',
291        'WarnAsError': 'false',
292        'WarningLevel': 3,                    # /W3
293      },
294      'VCLinkerTool': {
295        'target_conditions': [
296          ['_type=="executable"', {
297            'SubSystem': 1,                   # /SUBSYSTEM:CONSOLE
298          }],
299        ],
300        'conditions': [
301          ['target_arch=="ia32"', {
302            'TargetMachine' : 1,              # /MACHINE:X86
303          }],
304          ['target_arch=="x64"', {
305            'TargetMachine' : 17,             # /MACHINE:X64
306          }],
307          ['target_arch=="arm64"', {
308            'TargetMachine' : 0,              # NotSet. MACHINE:ARM64 is inferred from the input files.
309          }],
310        ],
311        'GenerateDebugInformation': 'true',
312        'SuppressStartupBanner': 'true',
313      },
314    },
315    # Disable warnings:
316    # - "C4251: class needs to have dll-interface"
317    # - "C4275: non-DLL-interface used as base for DLL-interface"
318    #   Over 10k of these warnings are generated when compiling node,
319    #   originating from v8.h. Most of them are false positives.
320    #   See also: https://github.com/nodejs/node/pull/15570
321    #   TODO: re-enable when Visual Studio fixes these upstream.
322    #
323    # - "C4267: conversion from 'size_t' to 'int'"
324    #   Many any originate from our dependencies, and their sheer number
325    #   drowns out other, more legitimate warnings.
326    # - "C4244: conversion from 'type1' to 'type2', possible loss of data"
327    #   Ususaly safe. Disable for `dep`, enable for `src`
328    'msvs_disabled_warnings': [4351, 4355, 4800, 4251, 4275, 4244, 4267],
329    'msvs_cygwin_shell': 0, # prevent actions from trying to use cygwin
330
331    'conditions': [
332      [ 'configuring_node', {
333        'msvs_configuration_attributes': {
334          'OutputDirectory': '<(DEPTH)/out/$(Configuration)/',
335          'IntermediateDirectory': '$(OutDir)obj/$(ProjectName)/'
336        },
337      }],
338      [ 'target_arch=="x64"', {
339        'msvs_configuration_platform': 'x64',
340      }],
341      [ 'target_arch=="arm64"', {
342        'msvs_configuration_platform': 'arm64',
343        'cflags': ['-mbranch-protection=pac-ret+b-key+bti'],
344      }],
345      ['asan == 1 and OS != "mac" and OS != "zos"', {
346        'cflags+': [
347          '-fno-omit-frame-pointer',
348          '-fsanitize=address',
349          '-fsanitize-address-use-after-scope',
350        ],
351        'defines': [ 'LEAK_SANITIZER', 'V8_USE_ADDRESS_SANITIZER' ],
352        'cflags!': [ '-fomit-frame-pointer' ],
353        'ldflags': [ '-fsanitize=address' ],
354      }],
355      ['asan == 1 and OS == "mac"', {
356        'xcode_settings': {
357          'OTHER_CFLAGS+': [
358            '-fno-omit-frame-pointer',
359            '-gline-tables-only',
360            '-fsanitize=address',
361            '-DLEAK_SANITIZER'
362          ],
363          'OTHER_CFLAGS!': [
364            '-fomit-frame-pointer',
365          ],
366        },
367        'target_conditions': [
368          ['_type!="static_library"', {
369            'xcode_settings': {'OTHER_LDFLAGS': ['-fsanitize=address']},
370          }],
371        ],
372      }],
373      ['v8_enable_pointer_compression == 1', {
374        'defines': [
375          'V8_COMPRESS_POINTERS',
376          'V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE',
377        ],
378      }],
379      ['v8_enable_pointer_compression == 1 or v8_enable_31bit_smis_on_64bit_arch == 1', {
380        'defines': ['V8_31BIT_SMIS_ON_64BIT_ARCH'],
381      }],
382      ['OS == "win"', {
383        'defines': [
384          'WIN32',
385          # we don't really want VC++ warning us about
386          # how dangerous C functions are...
387          '_CRT_SECURE_NO_DEPRECATE',
388          # ... or that C implementations shouldn't use
389          # POSIX names
390          '_CRT_NONSTDC_NO_DEPRECATE',
391          # Make sure the STL doesn't try to use exceptions
392          '_HAS_EXCEPTIONS=0',
393          'BUILDING_V8_SHARED=1',
394          'BUILDING_UV_SHARED=1',
395        ],
396      }],
397      [ 'OS in "linux freebsd openbsd solaris aix os400"', {
398        'cflags': [ '-pthread' ],
399        'ldflags': [ '-pthread' ],
400      }],
401      [ 'OS in "linux freebsd openbsd solaris android aix os400 cloudabi"', {
402        'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ],
403        'cflags_cc': [ '-fno-rtti', '-fno-exceptions', '-std=gnu++17' ],
404        'defines': [ '__STDC_FORMAT_MACROS' ],
405        'ldflags': [ '-rdynamic' ],
406        'target_conditions': [
407          # The 1990s toolchain on SmartOS can't handle thin archives.
408          ['_type=="static_library" and OS=="solaris"', {
409            'standalone_static_library': 1,
410          }],
411          ['OS=="openbsd"', {
412            'cflags': [ '-I/usr/local/include' ],
413            'ldflags': [ '-Wl,-z,wxneeded' ],
414          }],
415          ['_toolset=="host"', {
416            'conditions': [
417              [ 'host_arch=="ia32"', {
418                'cflags': [ '-m32' ],
419                'ldflags': [ '-m32' ],
420              }],
421              [ 'host_arch=="x64"', {
422                'cflags': [ '-m64' ],
423                'ldflags': [ '-m64' ],
424              }],
425              [ 'host_arch=="ppc" and OS not in "aix os400"', {
426                'cflags': [ '-m32' ],
427                'ldflags': [ '-m32' ],
428              }],
429              [ 'host_arch=="ppc64" and OS not in "aix os400"', {
430                'cflags': [ '-m64', '-mminimal-toc' ],
431                'ldflags': [ '-m64' ],
432              }],
433              [ 'host_arch=="s390x" and OS=="linux"', {
434                'cflags': [ '-m64', '-march=z196' ],
435                'ldflags': [ '-m64', '-march=z196' ],
436              }],
437            ],
438          }],
439          ['_toolset=="target"', {
440            'conditions': [
441              [ 'target_arch=="ia32"', {
442                'cflags': [ '-m32' ],
443                'ldflags': [ '-m32' ],
444              }],
445              [ 'target_arch=="x64"', {
446                'cflags': [ '-m64' ],
447                'ldflags': [ '-m64' ],
448              }],
449              [ 'target_arch=="ppc" and OS not in "aix os400"', {
450                'cflags': [ '-m32' ],
451                'ldflags': [ '-m32' ],
452              }],
453              [ 'target_arch=="ppc64" and OS not in "aix os400"', {
454                'cflags': [ '-m64', '-mminimal-toc' ],
455                'ldflags': [ '-m64' ],
456              }],
457              [ 'target_arch=="s390x" and OS=="linux"', {
458                'cflags': [ '-m64', '-march=z196' ],
459                'ldflags': [ '-m64', '-march=z196' ],
460              }],
461            ],
462          }],
463        ],
464        'conditions': [
465          [ 'OS=="solaris"', {
466            'cflags': [ '-pthreads' ],
467            'ldflags': [ '-pthreads' ],
468            'cflags!': [ '-pthread' ],
469            'ldflags!': [ '-pthread' ],
470          }],
471          [ 'node_shared=="true"', {
472            'cflags': [ '-fPIC' ],
473          }],
474        ],
475      }],
476      [ 'OS in "aix os400"', {
477        'variables': {
478          # Used to differentiate `AIX` and `OS400`(IBM i).
479          'aix_variant_name': '<!(uname -s)',
480        },
481        'cflags': [ '-maix64', ],
482        'ldflags!': [ '-rdynamic', ],
483        'ldflags': [
484          '-Wl,-bbigtoc',
485          '-maix64',
486        ],
487        'conditions': [
488          [ '"<(aix_variant_name)"=="OS400"', {            # a.k.a. `IBM i`
489            'ldflags': [
490              '-Wl,-blibpath:/QOpenSys/pkgs/lib:/QOpenSys/usr/lib',
491              '-Wl,-brtl',
492            ],
493          }, {                                             # else it's `AIX`
494            # Disable the following compiler warning:
495            #
496            #   warning: visibility attribute not supported in this
497            #   configuration; ignored [-Wattributes]
498            #
499            # This is gcc complaining about __attribute((visibility("default"))
500            # in static library builds. Legitimate but harmless and it drowns
501            # out more relevant warnings.
502            'cflags': [ '-Wno-attributes' ],
503            'ldflags': [
504              '-Wl,-blibpath:/usr/lib:/lib:/opt/freeware/lib/pthread/ppc64',
505            ],
506          }],
507        ],
508      }],
509      ['OS=="android"', {
510        'target_conditions': [
511          ['_toolset=="target"', {
512            'defines': [ '_GLIBCXX_USE_C99_MATH' ],
513            'libraries': [ '-llog' ],
514          }],
515          ['_toolset=="host"', {
516            'cflags': [ '-pthread' ],
517            'ldflags': [ '-pthread' ],
518          }],
519        ],
520      }],
521      ['OS=="mac"', {
522        'defines': ['_DARWIN_USE_64_BIT_INODE=1'],
523        'xcode_settings': {
524          'ALWAYS_SEARCH_USER_PATHS': 'NO',
525          'GCC_CW_ASM_SYNTAX': 'NO',                # No -fasm-blocks
526          'GCC_DYNAMIC_NO_PIC': 'NO',               # No -mdynamic-no-pic
527                                                    # (Equivalent to -fPIC)
528          'GCC_ENABLE_CPP_EXCEPTIONS': 'NO',        # -fno-exceptions
529          'GCC_ENABLE_CPP_RTTI': 'NO',              # -fno-rtti
530          'GCC_ENABLE_PASCAL_STRINGS': 'NO',        # No -mpascal-strings
531          'PREBINDING': 'NO',                       # No -Wl,-prebind
532          'MACOSX_DEPLOYMENT_TARGET': '10.15',      # -mmacosx-version-min=10.15
533          'USE_HEADERMAP': 'NO',
534          'OTHER_CFLAGS': [
535            '-fno-strict-aliasing',
536          ],
537          'WARNING_CFLAGS': [
538            '-Wall',
539            '-Wendif-labels',
540            '-W',
541            '-Wno-unused-parameter',
542          ],
543        },
544        'target_conditions': [
545          ['_type!="static_library"', {
546            'xcode_settings': {
547              'OTHER_LDFLAGS': [
548                '-Wl,-search_paths_first'
549              ],
550            },
551          }],
552        ],
553        'conditions': [
554          ['target_arch=="ia32"', {
555            'xcode_settings': {'ARCHS': ['i386']},
556          }],
557          ['target_arch=="x64"', {
558            'xcode_settings': {'ARCHS': ['x86_64']},
559          }],
560          ['target_arch=="arm64"', {
561            'xcode_settings': {
562              'ARCHS': ['arm64'],
563              'OTHER_LDFLAGS!': [
564                '-Wl,-no_pie',
565              ],
566            },
567          }],
568          ['clang==1', {
569            'xcode_settings': {
570              'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
571              'CLANG_CXX_LANGUAGE_STANDARD': 'gnu++17',  # -std=gnu++17
572              'CLANG_CXX_LIBRARY': 'libc++',
573            },
574          }],
575        ],
576      }],
577      ['OS=="freebsd"', {
578        'ldflags': [
579          '-Wl,--export-dynamic',
580        ],
581      }],
582      # if node is built as an executable,
583      #      the openssl mechanism for keeping itself "dload"-ed to ensure proper
584      #      atexit cleanup does not apply
585      ['node_shared_openssl!="true" and node_shared!="true"', {
586        'defines': [
587          # `OPENSSL_NO_PINSHARED` prevents openssl from dload
588          #      current node executable,
589          #      see https://github.com/nodejs/node/pull/21848
590          #      or https://github.com/nodejs/node/issues/27925
591          'OPENSSL_NO_PINSHARED'
592        ],
593      }],
594      ['node_shared_openssl!="true"', {
595        # `OPENSSL_THREADS` is defined via GYP for openSSL for all architectures.
596        'defines': [
597          'OPENSSL_THREADS',
598        ],
599      }],
600      ['node_shared_openssl!="true" and openssl_no_asm==1', {
601        'defines': [
602          'OPENSSL_NO_ASM',
603        ],
604      }],
605      ['OS == "zos"', {
606        'defines': [
607          '_XOPEN_SOURCE_EXTENDED',
608          '_XOPEN_SOURCE=600',
609          '_UNIX03_THREADS',
610          '_UNIX03_WITHDRAWN',
611          '_UNIX03_SOURCE',
612          '_OPEN_SYS_SOCK_IPV6',
613          '_OPEN_SYS_FILE_EXT=1',
614          '_POSIX_SOURCE',
615          '_OPEN_SYS',
616          '_OPEN_SYS_IF_EXT',
617          '_OPEN_SYS_SOCK_IPV6',
618          '_OPEN_MSGQ_EXT',
619          '_LARGE_TIME_API',
620          '_ALL_SOURCE',
621          '_AE_BIMODAL=1',
622          '__IBMCPP_TR1__',
623          'NODE_PLATFORM="os390"',
624          'PATH_MAX=1024',
625          '_ENHANCED_ASCII_EXT=0xFFFFFFFF',
626          '_Export=extern',
627          '__static_assert=static_assert',
628        ],
629        'cflags': [
630          '-q64',
631          '-Wc,DLL',
632          '-Wa,GOFF',
633          '-qARCH=10',
634          '-qASCII',
635          '-qTUNE=12',
636          '-qENUM=INT',
637          '-qEXPORTALL',
638          '-qASM',
639        ],
640        'cflags_cc': [
641          '-qxclang=-std=c++14',
642        ],
643        'ldflags': [
644          '-q64',
645        ],
646        # for addons due to v8config.h include of "zos-base.h":
647        'include_dirs':  ['<(zoslib_include_dir)'],
648      }],
649    ],
650  }
651}
652