| OLD | NEW |
| 1 # Copyright 2012 the V8 project authors. All rights reserved. | 1 # Copyright 2012 the V8 project authors. All rights reserved. |
| 2 # Redistribution and use in source and binary forms, with or without | 2 # Redistribution and use in source and binary forms, with or without |
| 3 # modification, are permitted provided that the following conditions are | 3 # modification, are permitted provided that the following conditions are |
| 4 # met: | 4 # met: |
| 5 # | 5 # |
| 6 # * Redistributions of source code must retain the above copyright | 6 # * Redistributions of source code must retain the above copyright |
| 7 # notice, this list of conditions and the following disclaimer. | 7 # notice, this list of conditions and the following disclaimer. |
| 8 # * Redistributions in binary form must reproduce the above | 8 # * Redistributions in binary form must reproduce the above |
| 9 # copyright notice, this list of conditions and the following | 9 # copyright notice, this list of conditions and the following |
| 10 # disclaimer in the documentation and/or other materials provided | 10 # disclaimer in the documentation and/or other materials provided |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 # also controls coverage granularity (1 for function-level, 2 for | 81 # also controls coverage granularity (1 for function-level, 2 for |
| 82 # block-level, 3 for edge-level). | 82 # block-level, 3 for edge-level). |
| 83 'sanitizer_coverage%': 0, | 83 'sanitizer_coverage%': 0, |
| 84 # Use libc++ (buildtools/third_party/libc++ and | 84 # Use libc++ (buildtools/third_party/libc++ and |
| 85 # buildtools/third_party/libc++abi) instead of stdlibc++ as standard | 85 # buildtools/third_party/libc++abi) instead of stdlibc++ as standard |
| 86 # library. This is intended to be used for instrumented builds. | 86 # library. This is intended to be used for instrumented builds. |
| 87 'use_custom_libcxx%': 0, | 87 'use_custom_libcxx%': 0, |
| 88 | 88 |
| 89 'clang_dir%': '<(base_dir)/third_party/llvm-build/Release+Asserts', | 89 'clang_dir%': '<(base_dir)/third_party/llvm-build/Release+Asserts', |
| 90 | 90 |
| 91 'use_lto%': 0, |
| 92 |
| 93 # Control Flow Integrity for virtual calls and casts. |
| 94 # See http://clang.llvm.org/docs/ControlFlowIntegrity.html |
| 95 'cfi_vptr%': 0, |
| 96 'cfi_diag%': 0, |
| 97 |
| 91 # goma settings. | 98 # goma settings. |
| 92 # 1 to use goma. | 99 # 1 to use goma. |
| 93 # If no gomadir is set, it uses the default gomadir. | 100 # If no gomadir is set, it uses the default gomadir. |
| 94 'use_goma%': 0, | 101 'use_goma%': 0, |
| 95 'gomadir%': '', | 102 'gomadir%': '', |
| 96 'conditions': [ | 103 'conditions': [ |
| 97 # Set default gomadir. | 104 # Set default gomadir. |
| 98 ['OS=="win"', { | 105 ['OS=="win"', { |
| 99 'gomadir': 'c:\\goma\\goma-win', | 106 'gomadir': 'c:\\goma\\goma-win', |
| 100 }, { | 107 }, { |
| 101 'gomadir': '<!(/bin/echo -n ${HOME}/goma)', | 108 'gomadir': '<!(/bin/echo -n ${HOME}/goma)', |
| 102 }], | 109 }], |
| 103 ['host_arch!="ppc" and host_arch!="ppc64" and host_arch!="ppc64le"', { | 110 ['host_arch!="ppc" and host_arch!="ppc64" and host_arch!="ppc64le"', { |
| 104 'host_clang%': '1', | 111 'host_clang%': '1', |
| 105 }, { | 112 }, { |
| 106 'host_clang%': '0', | 113 'host_clang%': '0', |
| 107 }], | 114 }], |
| 115 # linux_use_bundled_gold: whether to use the gold linker binary checked |
| 116 # into third_party/binutils. Force this off via GYP_DEFINES when you |
| 117 # are using a custom toolchain and need to control -B in ldflags. |
| 118 # Do not use 32-bit gold on 32-bit hosts as it runs out address space |
| 119 # for component=static_library builds. |
| 120 ['(OS=="linux" or OS=="android") and (target_arch=="x64" or target_arch=
="arm" or (target_arch=="ia32" and host_arch=="x64"))', { |
| 121 'linux_use_bundled_gold%': 1, |
| 122 }, { |
| 123 'linux_use_bundled_gold%': 0, |
| 124 }], |
| 108 ], | 125 ], |
| 109 }, | 126 }, |
| 110 'base_dir%': '<(base_dir)', | 127 'base_dir%': '<(base_dir)', |
| 111 'clang_dir%': '<(clang_dir)', | 128 'clang_dir%': '<(clang_dir)', |
| 112 'host_arch%': '<(host_arch)', | 129 'host_arch%': '<(host_arch)', |
| 113 'host_clang%': '<(host_clang)', | 130 'host_clang%': '<(host_clang)', |
| 114 'target_arch%': '<(target_arch)', | 131 'target_arch%': '<(target_arch)', |
| 115 'v8_target_arch%': '<(v8_target_arch)', | 132 'v8_target_arch%': '<(v8_target_arch)', |
| 116 'werror%': '-Werror', | 133 'werror%': '-Werror', |
| 117 'use_goma%': '<(use_goma)', | 134 'use_goma%': '<(use_goma)', |
| 118 'gomadir%': '<(gomadir)', | 135 'gomadir%': '<(gomadir)', |
| 119 'asan%': '<(asan)', | 136 'asan%': '<(asan)', |
| 120 'lsan%': '<(lsan)', | 137 'lsan%': '<(lsan)', |
| 121 'msan%': '<(msan)', | 138 'msan%': '<(msan)', |
| 122 'tsan%': '<(tsan)', | 139 'tsan%': '<(tsan)', |
| 123 'sanitizer_coverage%': '<(sanitizer_coverage)', | 140 'sanitizer_coverage%': '<(sanitizer_coverage)', |
| 124 'use_custom_libcxx%': '<(use_custom_libcxx)', | 141 'use_custom_libcxx%': '<(use_custom_libcxx)', |
| 142 'linux_use_bundled_gold%': '<(linux_use_bundled_gold)', |
| 143 'use_lto%': '<(use_lto)', |
| 144 'cfi_vptr%': '<(cfi_vptr)', |
| 145 'cfi_diag%': '<(cfi_diag)', |
| 125 | 146 |
| 126 # Add a simple extra solely for the purpose of the cctests | 147 # Add a simple extra solely for the purpose of the cctests |
| 127 'v8_extra_library_files': ['../test/cctest/test-extra.js'], | 148 'v8_extra_library_files': ['../test/cctest/test-extra.js'], |
| 128 | 149 |
| 129 # .gyp files or targets should set v8_code to 1 if they build V8 specific | 150 # .gyp files or targets should set v8_code to 1 if they build V8 specific |
| 130 # code, as opposed to external code. This variable is used to control such | 151 # code, as opposed to external code. This variable is used to control such |
| 131 # things as the set of warnings to enable, and whether warnings are treated | 152 # things as the set of warnings to enable, and whether warnings are treated |
| 132 # as errors. | 153 # as errors. |
| 133 'v8_code%': 0, | 154 'v8_code%': 0, |
| 134 | 155 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 200 }], | 221 }], |
| 201 ['tsan==1', { | 222 ['tsan==1', { |
| 202 'use_custom_libcxx%': 1, | 223 'use_custom_libcxx%': 1, |
| 203 }], | 224 }], |
| 204 ['msan==1', { | 225 ['msan==1', { |
| 205 # Use a just-built, MSan-instrumented libc++ instead of the system-wide | 226 # Use a just-built, MSan-instrumented libc++ instead of the system-wide |
| 206 # libstdc++. This is required to avoid false positive reports whenever | 227 # libstdc++. This is required to avoid false positive reports whenever |
| 207 # the C++ standard library is used. | 228 # the C++ standard library is used. |
| 208 'use_custom_libcxx%': 1, | 229 'use_custom_libcxx%': 1, |
| 209 }], | 230 }], |
| 231 ['cfi_vptr==1', { |
| 232 'use_lto%': 1, |
| 233 }], |
| 210 ['OS=="linux"', { | 234 ['OS=="linux"', { |
| 211 # Gradually roll out v8_use_external_startup_data. | 235 # Gradually roll out v8_use_external_startup_data. |
| 212 # Should eventually be default enabled on all platforms. | 236 # Should eventually be default enabled on all platforms. |
| 213 'v8_use_external_startup_data%': 1, | 237 'v8_use_external_startup_data%': 1, |
| 214 }], | 238 }], |
| 215 ['OS=="android"', { | 239 ['OS=="android"', { |
| 216 # Location of Android NDK. | 240 # Location of Android NDK. |
| 217 'variables': { | 241 'variables': { |
| 218 'variables': { | 242 'variables': { |
| 219 # The Android toolchain needs to use the absolute path to the NDK | 243 # The Android toolchain needs to use the absolute path to the NDK |
| (...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 528 ['_toolset=="target"', { | 552 ['_toolset=="target"', { |
| 529 'cflags': [ | 553 'cflags': [ |
| 530 '-fsanitize-coverage=<(sanitizer_coverage)', | 554 '-fsanitize-coverage=<(sanitizer_coverage)', |
| 531 ], | 555 ], |
| 532 'defines': [ | 556 'defines': [ |
| 533 'SANITIZER_COVERAGE', | 557 'SANITIZER_COVERAGE', |
| 534 ], | 558 ], |
| 535 }], | 559 }], |
| 536 ], | 560 ], |
| 537 }], | 561 }], |
| 562 ['linux_use_bundled_gold==1 and not (clang==0 and use_lto==1)', { |
| 563 # Put our binutils, which contains gold in the search path. We pass |
| 564 # the path to gold to the compiler. gyp leaves unspecified what the |
| 565 # cwd is when running the compiler, so the normal gyp path-munging |
| 566 # fails us. This hack gets the right path. |
| 567 # |
| 568 # Disabled when using GCC LTO because GCC also uses the -B search |
| 569 # path at link time to find "as", and our bundled "as" can only |
| 570 # target x86. |
| 571 'ldflags': [ |
| 572 # Note, Chromium allows ia32 host arch as well, we limit this to |
| 573 # x64 in v8. |
| 574 '-B<(base_dir)/third_party/binutils/Linux_x64/Release/bin', |
| 575 ], |
| 576 }], |
| 538 ], | 577 ], |
| 539 }, | 578 }, |
| 540 }], | 579 }], |
| 541 ['OS=="mac"', { | 580 ['OS=="mac"', { |
| 542 'target_defaults': { | 581 'target_defaults': { |
| 543 'conditions': [ | 582 'conditions': [ |
| 544 ['asan==1', { | 583 ['asan==1', { |
| 545 'xcode_settings': { | 584 'xcode_settings': { |
| 546 # FIXME(machenbach): This is outdated compared to common.gypi. | 585 # FIXME(machenbach): This is outdated compared to common.gypi. |
| 547 'OTHER_CFLAGS+': [ | 586 'OTHER_CFLAGS+': [ |
| (...skipping 589 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1137 # make generator doesn't support CC_wrapper without CC | 1176 # make generator doesn't support CC_wrapper without CC |
| 1138 # in make_global_settings yet. | 1177 # in make_global_settings yet. |
| 1139 ['use_goma==1 and ("<(GENERATOR)"=="ninja" or clang==1)', { | 1178 ['use_goma==1 and ("<(GENERATOR)"=="ninja" or clang==1)', { |
| 1140 'make_global_settings': [ | 1179 'make_global_settings': [ |
| 1141 ['CC_wrapper', '<(gomadir)/gomacc'], | 1180 ['CC_wrapper', '<(gomadir)/gomacc'], |
| 1142 ['CXX_wrapper', '<(gomadir)/gomacc'], | 1181 ['CXX_wrapper', '<(gomadir)/gomacc'], |
| 1143 ['CC.host_wrapper', '<(gomadir)/gomacc'], | 1182 ['CC.host_wrapper', '<(gomadir)/gomacc'], |
| 1144 ['CXX.host_wrapper', '<(gomadir)/gomacc'], | 1183 ['CXX.host_wrapper', '<(gomadir)/gomacc'], |
| 1145 ], | 1184 ], |
| 1146 }], | 1185 }], |
| 1186 ['use_lto==1', { |
| 1187 'target_defaults': { |
| 1188 'target_conditions': [ |
| 1189 ['_toolset=="target"', { |
| 1190 'cflags': [ |
| 1191 '-flto', |
| 1192 ], |
| 1193 }], |
| 1194 ], |
| 1195 }, |
| 1196 }], |
| 1197 ['use_lto==1 and clang==0', { |
| 1198 'target_defaults': { |
| 1199 'target_conditions': [ |
| 1200 ['_toolset=="target"', { |
| 1201 'cflags': [ |
| 1202 '-ffat-lto-objects', |
| 1203 ], |
| 1204 }], |
| 1205 ], |
| 1206 }, |
| 1207 }], |
| 1208 ['use_lto==1 and clang==1', { |
| 1209 'target_defaults': { |
| 1210 'target_conditions': [ |
| 1211 ['_toolset=="target"', { |
| 1212 'arflags': [ |
| 1213 '--plugin', '<(clang_dir)/lib/LLVMgold.so', |
| 1214 ], |
| 1215 # Apply a lower optimization level with lto. Chromium does this |
| 1216 # for non-official builds only - a differentiation that doesn't |
| 1217 # exist in v8. |
| 1218 'ldflags': [ |
| 1219 '-Wl,--plugin-opt,O1', |
| 1220 ], |
| 1221 }], |
| 1222 ], |
| 1223 }, |
| 1224 }], |
| 1225 ['use_lto==1 and clang==0', { |
| 1226 'target_defaults': { |
| 1227 'target_conditions': [ |
| 1228 ['_toolset=="target"', { |
| 1229 'ldflags': [ |
| 1230 '-flto=32', |
| 1231 ], |
| 1232 }], |
| 1233 ], |
| 1234 }, |
| 1235 }], |
| 1236 ['use_lto==1 and clang==1', { |
| 1237 'target_defaults': { |
| 1238 'target_conditions': [ |
| 1239 ['_toolset=="target"', { |
| 1240 'ldflags': [ |
| 1241 '-flto', |
| 1242 ], |
| 1243 }], |
| 1244 ], |
| 1245 }, |
| 1246 }], |
| 1247 ['cfi_diag==1', { |
| 1248 'target_defaults': { |
| 1249 'target_conditions': [ |
| 1250 ['_toolset=="target"', { |
| 1251 'cflags': [ |
| 1252 '-fno-sanitize-trap=cfi', |
| 1253 '-fsanitize-recover=cfi', |
| 1254 ], |
| 1255 'ldflags': [ |
| 1256 '-fno-sanitize-trap=cfi', |
| 1257 '-fsanitize-recover=cfi', |
| 1258 ], |
| 1259 }], |
| 1260 ], |
| 1261 }, |
| 1262 }], |
| 1263 ['cfi_vptr==1', { |
| 1264 'target_defaults': { |
| 1265 'target_conditions': [ |
| 1266 ['_toolset=="target"', { |
| 1267 'cflags': [ |
| 1268 '-fsanitize=cfi-vcall', |
| 1269 '-fsanitize=cfi-derived-cast', |
| 1270 '-fsanitize=cfi-unrelated-cast', |
| 1271 ], |
| 1272 'ldflags': [ |
| 1273 '-fsanitize=cfi-vcall', |
| 1274 '-fsanitize=cfi-derived-cast', |
| 1275 '-fsanitize=cfi-unrelated-cast', |
| 1276 ], |
| 1277 }], |
| 1278 ], |
| 1279 }, |
| 1280 }], |
| 1147 ], | 1281 ], |
| 1148 } | 1282 } |
| OLD | NEW |