From b4394e5b13e38f5a201b4329b14eeaac04439230 Mon Sep 17 00:00:00 2001 From: "jochen@chromium.org" Date: Mon, 26 May 2014 07:29:39 +0000 Subject: [PATCH] Some progress on translating toolchain.gypi to gn BUG=none R=brettw@chromium.org LOG=n Review URL: https://codereview.chromium.org/299173002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21478 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- BUILD.gn | 135 ++++++++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 99 insertions(+), 36 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index 7d09895..670830e 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -13,18 +13,11 @@ v8_enable_i18n_support = true v8_enable_verify_heap = false v8_interpreted_regexp = false v8_object_print = false -#v8_postmortem_support = false +v8_postmortem_support = false v8_use_default_platform = true #v8_use_snapshot = true - -if (is_debug) { - v8_enable_extra_checks = true -} else { - v8_enable_extra_checks = false -} - -# TODO(jochen): Add support for want_seperate_host_toolset. -# TODO(jochen): Add toolchain.gypi support. +v8_enable_extra_checks = is_debug +v8_target_arch = cpu_arch ############################################################################### @@ -105,11 +98,55 @@ config("features") { } } +config("toolchain") { + visibility = ":*" # Only targets in this file can depend on this. + + defines = [] + cflags = [] + + # TODO(jochen): Add support for arm, mips, mipsel. + + if (v8_target_arch == "arm64") { + defines += [ + "V8_TARGET_ARCH_ARM64", + ] + } + if (v8_target_arch == "x86") { + defines += [ + "V8_TARGET_ARCH_IA32", + ] + } + if (v8_target_arch == "x64") { + defines += [ + "V8_TARGET_ARCH_X64", + ] + } + if (is_win) { + defines += [ + "WIN32", + ] + # TODO(jochen): Support v8_enable_prof. + } + + # TODO(jochen): Add support for compiling with simulators. + + if (is_debug) { + # TODO(jochen): Add support for different debug optimization levels. + defines += [ + "ENABLE_DISASSEMBLER", + "V8_ENABLE_CHECKS", + "OBJECT_PRINT", + "VERIFY_HEAP", + "DEBUG", + "OPTIMIZED_DEBUG", + ] + } +} + ############################################################################### # Actions # -# TODO(jochen): Do actions need visibility settings as well? action("generate_trig_table") { visibility = ":*" # Only targets in this file can depend on this. @@ -162,7 +199,7 @@ action("js2c") { args = rebase_path(outputs, root_build_dir) + - [ "EXPERIMENTAL", v8_compress_startup_data ] + + [ "EXPERIMENTAL", v8_compress_startup_data ] + rebase_path(sources, root_build_dir) } @@ -195,7 +232,7 @@ action("js2c_experimental") { args = rebase_path(outputs, root_build_dir) + - [ "CORE", v8_compress_startup_data ] + + [ "CORE", v8_compress_startup_data ] + rebase_path(sources, root_build_dir) } @@ -241,7 +278,7 @@ source_set("v8_nosnapshot") { configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code" ] - configs += [ ":internal_config", ":features" ] + configs += [ ":internal_config", ":features", ":toolchain" ] } source_set("v8_base") { @@ -605,7 +642,7 @@ source_set("v8_base") { "src/zone.h", ] - if (cpu_arch == "x86") { + if (v8_target_arch == "x86") { sources += [ "src/ia32/assembler-ia32-inl.h", "src/ia32/assembler-ia32.cc", @@ -635,7 +672,7 @@ source_set("v8_base") { "src/ia32/regexp-macro-assembler-ia32.h", "src/ia32/stub-cache-ia32.cc", ] - } else if (cpu_arch == "x64") { + } else if (v8_target_arch == "x64") { sources += [ "src/x64/assembler-x64-inl.h", "src/x64/assembler-x64.cc", @@ -665,7 +702,7 @@ source_set("v8_base") { "src/x64/regexp-macro-assembler-x64.h", "src/x64/stub-cache-x64.cc", ] - } else if (cpu_arch == "arm") { + } else if (v8_target_arch == "arm") { sources += [ "src/arm/assembler-arm-inl.h", "src/arm/assembler-arm.cc", @@ -698,7 +735,7 @@ source_set("v8_base") { "src/arm/simulator-arm.cc", "src/arm/stub-cache-arm.cc", ] - } else if (cpu_arch == "arm64") { + } else if (v8_target_arch == "arm64") { sources += [ "src/arm64/assembler-arm64.cc", "src/arm64/assembler-arm64.h", @@ -742,7 +779,7 @@ source_set("v8_base") { "src/arm64/utils-arm64.cc", "src/arm64/utils-arm64.h", ] - } else if (cpu_arch == "mipsel") { + } else if (v8_target_arch == "mipsel") { sources += [ "src/mips/assembler-mips.cc", "src/mips/assembler-mips.h", @@ -779,10 +816,10 @@ source_set("v8_base") { configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code" ] - configs += [ ":internal_config", ":features" ] + configs += [ ":internal_config", ":features", ":toolchain" ] defines = [] - deps = [] + deps = [ ":v8_libbase" ] if (is_posix) { sources += [ @@ -795,21 +832,30 @@ source_set("v8_base") { "src/platform-linux.cc" ] - # TODO(brettw) - # 'conditions': [ - # ['v8_compress_startup_data=="bz2"', { - # 'libraries': [ - # '-lbz2', - # ] - # }], - # ], - libs = [ "rt" ] + if (v8_compress_startup_data == "bz2") { + libs += [ "bz2" ] + } } else if (is_android) { - # TODO(brettw) OS=="android" condition from tools/gyp/v8.gyp + defines += [ "CAN_USE_VFP_INSTRUCTIONS" ] + sources += [ "src/platform-posix,cc" ] + + if (build_os == "mac") { + if (current_toolchain == host_toolchain) { + sources += [ "src/platform-macos.cc" ] + } else { + sources += [ "src/platform-linux.cc" ] + } + } else { + sources += [ "src/platform-linux.cc" ] + if (current_toolchain == host_toolchain) { + defines += [ "V8_LIBRT_NOT_AVAILABLE" ] + } + } } else if (is_mac) { sources += [ "src/platform-macos,cc" ] } else if (is_win) { + # TODO(jochen): Add support for cygwin. sources += [ "src/platform-win32.cc", "src/win32-math.cc", @@ -821,12 +867,16 @@ source_set("v8_base") { libs = [ "winmm.lib", "ws2_32.lib" ] } + # TODO(jochen): Add support for qnx, freebsd, openbsd, netbsd, and solaris. + if (v8_enable_i18n_support) { deps += [ "//third_party/icu" ] if (is_win) { deps += [ "//third_party/icu:icudata" ] } + # TODO(jochen): Add support for icu_use_data_file_flag + defines += [ "ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE" ] } else { sources -= [ "src/i18n.cc", @@ -834,16 +884,29 @@ source_set("v8_base") { ] } - # TODO(brettw) other conditions from v8.gyp - # TODO(brettw) icu_use_data_file_flag + if (v8_postmortem_support) { + sources += [ "$target_gen_dir/debug-support.cc" ] + deps += [ ":postmortem-metadata" ] + } +} + +source_set("v8_libbase") { + visibility = ":*" # Only targets in this file can depend on this. + + sources = [ + "src/base/macros.h", + ] + + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":internal_config", ":features", ":toolchain" ] } ############################################################################### # Executables # -# TODO(jochen): Remove this as soon as toolchain.gypi is integrated. -if (build_cpu_arch != cpu_arch) { +if (current_toolchain != host_toolchain && is_android) { source_set("mksnapshot") { sources = [ @@ -859,7 +922,7 @@ executable("mksnapshot") { configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code" ] - configs += [ ":internal_config", ":features" ] + configs += [ ":internal_config", ":features", ":toolchain" ] deps = [ ":v8_base", -- 2.7.4