| OLD | NEW |
| 1 # Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 # Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 # for details. All rights reserved. Use of this source code is governed by a | 2 # for details. All rights reserved. Use of this source code is governed by a |
| 3 # BSD-style license that can be found in the LICENSE file. | 3 # BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 declare_args() { | 5 declare_args() { |
| 6 # Instead of using is_debug, we introduce a different flag for specifying a | 6 # Instead of using is_debug, we introduce a different flag for specifying a |
| 7 # Debug build of Dart so that clients can still use a Release build of Dart | 7 # Debug build of Dart so that clients can still use a Release build of Dart |
| 8 # while themselves doing a Debug build. | 8 # while themselves doing a Debug build. |
| 9 dart_debug = false | 9 dart_debug = false |
| 10 | 10 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 | 24 |
| 25 # Explicitly set the target architecture in case of precompilation. Leaving | 25 # Explicitly set the target architecture in case of precompilation. Leaving |
| 26 # this unspecified results in automatic target architecture detection. | 26 # this unspecified results in automatic target architecture detection. |
| 27 # Available options are: arm, arm64, mips, x64 and ia32 | 27 # Available options are: arm, arm64, mips, x64 and ia32 |
| 28 dart_target_arch = "" | 28 dart_target_arch = "" |
| 29 | 29 |
| 30 dart_experimental_interpreter = false | 30 dart_experimental_interpreter = false |
| 31 } | 31 } |
| 32 | 32 |
| 33 config("dart_public_config") { | 33 config("dart_public_config") { |
| 34 include_dirs = [ | 34 include_dirs = [ "." ] |
| 35 ".", | |
| 36 ] | |
| 37 } | 35 } |
| 38 | 36 |
| 39 # Adds PRODUCT define if Flutter has specified "release" for dart_runtime_mode | 37 # Adds PRODUCT define if Flutter has specified "release" for dart_runtime_mode |
| 40 config("dart_maybe_product_config") { | 38 config("dart_maybe_product_config") { |
| 41 defines = [] | 39 defines = [] |
| 42 | 40 |
| 43 if ((dart_runtime_mode != "develop") && | 41 if (dart_runtime_mode != "develop" && dart_runtime_mode != "profile" && |
| 44 (dart_runtime_mode != "profile") && | 42 dart_runtime_mode != "release") { |
| 45 (dart_runtime_mode != "release")) { | |
| 46 print("Invalid |dart_runtime_mode|") | 43 print("Invalid |dart_runtime_mode|") |
| 47 assert(false) | 44 assert(false) |
| 48 } | 45 } |
| 49 | 46 |
| 50 if (dart_runtime_mode == "release") { | 47 if (dart_runtime_mode == "release") { |
| 51 if (dart_debug) { | 48 if (dart_debug) { |
| 52 print("Debug and release mode are mutually exclusive.") | 49 print("Debug and release mode are mutually exclusive.") |
| 53 } | 50 } |
| 54 assert(!dart_debug) | 51 assert(!dart_debug) |
| 55 defines += ["PRODUCT"] | 52 defines += [ "PRODUCT" ] |
| 56 } | 53 } |
| 57 } | 54 } |
| 58 | 55 |
| 59 # Adds the DART_PRECOMPILED_RUNTIME define if Flutter has specified "profile" or | 56 # Adds the DART_PRECOMPILED_RUNTIME define if Flutter has specified "profile" or |
| 60 # "release" for dart_runtime_mode. | 57 # "release" for dart_runtime_mode. |
| 61 config("dart_maybe_precompiled_runtime_config") { | 58 config("dart_maybe_precompiled_runtime_config") { |
| 62 defines = [] | 59 defines = [] |
| 63 | 60 |
| 64 if ((dart_runtime_mode != "develop") && | 61 if (dart_runtime_mode != "develop" && dart_runtime_mode != "profile" && |
| 65 (dart_runtime_mode != "profile") && | 62 dart_runtime_mode != "release") { |
| 66 (dart_runtime_mode != "release")) { | |
| 67 print("Invalid |dart_runtime_mode|") | 63 print("Invalid |dart_runtime_mode|") |
| 68 assert(false) | 64 assert(false) |
| 69 } | 65 } |
| 70 | 66 |
| 71 if (dart_runtime_mode == "release") { | 67 if (dart_runtime_mode == "release") { |
| 72 if (dart_debug) { | 68 if (dart_debug) { |
| 73 print("Debug and release mode are mutually exclusive.") | 69 print("Debug and release mode are mutually exclusive.") |
| 74 } | 70 } |
| 75 assert(!dart_debug) | 71 assert(!dart_debug) |
| 76 | 72 |
| 77 if (!dart_experimental_interpreter) { | 73 if (!dart_experimental_interpreter) { |
| 78 defines += ["DART_PRECOMPILED_RUNTIME"] | 74 defines += [ "DART_PRECOMPILED_RUNTIME" ] |
| 79 } | 75 } |
| 80 } else if (dart_runtime_mode == "profile") { | 76 } else if (dart_runtime_mode == "profile") { |
| 81 if (!dart_experimental_interpreter) { | 77 if (!dart_experimental_interpreter) { |
| 82 defines += ["DART_PRECOMPILED_RUNTIME"] | 78 defines += [ "DART_PRECOMPILED_RUNTIME" ] |
| 83 } | 79 } |
| 84 } | 80 } |
| 85 } | 81 } |
| 86 | 82 |
| 87 config("dart_precompiled_runtime_config") { | 83 config("dart_precompiled_runtime_config") { |
| 88 defines = [] | 84 defines = [] |
| 89 defines += ["DART_PRECOMPILED_RUNTIME"] | 85 defines += [ "DART_PRECOMPILED_RUNTIME" ] |
| 90 } | 86 } |
| 91 | 87 |
| 92 # Controls DART_PRECOMPILER #define. | 88 # Controls DART_PRECOMPILER #define. |
| 93 config("dart_precompiler_config") { | 89 config("dart_precompiler_config") { |
| 94 defines = [] | 90 defines = [] |
| 95 defines += ["DART_PRECOMPILER"] | 91 defines += [ "DART_PRECOMPILER" ] |
| 96 } | 92 } |
| 97 | 93 |
| 98 config("dart_no_snapshot_config") { | 94 config("dart_no_snapshot_config") { |
| 99 defines = [] | 95 defines = [] |
| 100 defines += ["DART_NO_SNAPSHOT"] | 96 defines += [ "DART_NO_SNAPSHOT" ] |
| 101 } | 97 } |
| 102 | 98 |
| 103 config("dart_config") { | 99 config("dart_config") { |
| 104 defines = [] | 100 defines = [] |
| 105 | 101 |
| 106 if (dart_experimental_interpreter) { | 102 if (dart_experimental_interpreter) { |
| 107 dart_target_arch = "dbc" | 103 dart_target_arch = "dbc" |
| 108 } | 104 } |
| 109 | 105 |
| 110 if (dart_target_arch != "") { | 106 if (dart_target_arch != "") { |
| 111 if ((dart_target_arch == "arm") || | 107 if (dart_target_arch == "arm" || dart_target_arch == "simarm") { |
| 112 (dart_target_arch == "simarm")) { | |
| 113 defines += [ "TARGET_ARCH_ARM" ] | 108 defines += [ "TARGET_ARCH_ARM" ] |
| 114 if (target_os == "mac" || target_os == "ios") { | 109 if (target_os == "mac" || target_os == "ios") { |
| 115 defines += [ "TARGET_ABI_IOS" ] | 110 defines += [ "TARGET_ABI_IOS" ] |
| 116 } else { | 111 } else { |
| 117 defines += [ "TARGET_ABI_EABI" ] | 112 defines += [ "TARGET_ABI_EABI" ] |
| 118 } | 113 } |
| 119 } else if ((dart_target_arch == "armv6") || | 114 } else if (dart_target_arch == "armv6" || dart_target_arch == "simarmv6") { |
| 120 (dart_target_arch == "simarmv6")) { | |
| 121 defines += [ "TARGET_ARCH_ARM" ] | 115 defines += [ "TARGET_ARCH_ARM" ] |
| 122 defines += [ "TARGET_ARCH_ARM_6" ] | 116 defines += [ "TARGET_ARCH_ARM_6" ] |
| 123 defines += [ "TARGET_ABI_EABI" ] | 117 defines += [ "TARGET_ABI_EABI" ] |
| 124 } else if ((dart_target_arch == "armv5te") || | 118 } else if (dart_target_arch == "armv5te" || |
| 125 (dart_target_arch == "simarmv5te")) { | 119 dart_target_arch == "simarmv5te") { |
| 126 defines += [ "TARGET_ARCH_ARM" ] | 120 defines += [ "TARGET_ARCH_ARM" ] |
| 127 defines += [ "TARGET_ARCH_ARM_5TE" ] | 121 defines += [ "TARGET_ARCH_ARM_5TE" ] |
| 128 defines += [ "TARGET_ABI_EABI" ] | 122 defines += [ "TARGET_ABI_EABI" ] |
| 129 } else if ((dart_target_arch == "arm64") || | 123 } else if (dart_target_arch == "arm64" || dart_target_arch == "simarm64") { |
| 130 (dart_target_arch == "simarm64")) { | |
| 131 defines += [ "TARGET_ARCH_ARM64" ] | 124 defines += [ "TARGET_ARCH_ARM64" ] |
| 132 } else if ((dart_target_arch == "mips") || | 125 } else if (dart_target_arch == "mips" || dart_target_arch == "simmips") { |
| 133 (dart_target_arch == "simmips")) { | |
| 134 defines += [ "TARGET_ARCH_MIPS" ] | 126 defines += [ "TARGET_ARCH_MIPS" ] |
| 135 } else if (dart_target_arch == "x64") { | 127 } else if (dart_target_arch == "x64") { |
| 136 defines += [ "TARGET_ARCH_X64" ] | 128 defines += [ "TARGET_ARCH_X64" ] |
| 137 } else if (dart_target_arch == "ia32") { | 129 } else if (dart_target_arch == "ia32") { |
| 138 defines += [ "TARGET_ARCH_IA32" ] | 130 defines += [ "TARGET_ARCH_IA32" ] |
| 139 } else if ((dart_target_arch == "dbc") || | 131 } else if (dart_target_arch == "dbc" || dart_target_arch == "simdbc" || |
| 140 (dart_target_arch == "simdbc") || | 132 dart_target_arch == "simdbc64") { |
| 141 (dart_target_arch == "simdbc64")) { | |
| 142 defines += [ "TARGET_ARCH_DBC" ] | 133 defines += [ "TARGET_ARCH_DBC" ] |
| 143 defines += [ "USING_SIMULATOR" ] | 134 defines += [ "USING_SIMULATOR" ] |
| 144 } else { | 135 } else { |
| 145 print("Invalid |dart_target_arch|") | 136 print("Invalid |dart_target_arch|") |
| 146 assert(false) | 137 assert(false) |
| 147 } | 138 } |
| 148 } | 139 } |
| 149 | 140 |
| 150 if (dart_debug) { | 141 if (dart_debug) { |
| 151 defines += ["DEBUG"] | 142 defines += [ "DEBUG" ] |
| 152 } else { | 143 } else { |
| 153 defines += ["NDEBUG"] | 144 defines += [ "NDEBUG" ] |
| 154 } | 145 } |
| 155 | 146 |
| 156 if (!is_win) { | 147 if (!is_win) { |
| 157 cflags = [ | 148 cflags = [ |
| 158 "-Werror", | 149 "-Werror", |
| 159 "-Wall", | 150 "-Wall", |
| 160 "-Wextra", # Also known as -W. | 151 "-Wextra", # Also known as -W. |
| 161 "-Wno-unused-parameter", | 152 "-Wno-unused-parameter", |
| 162 "-Wnon-virtual-dtor", | 153 "-Wnon-virtual-dtor", |
| 163 "-Wvla", | 154 "-Wvla", |
| 164 "-Wno-conversion-null", | 155 "-Wno-conversion-null", |
| 165 "-Woverloaded-virtual", | 156 "-Woverloaded-virtual", |
| 166 "-g3", | 157 "-g3", |
| 167 "-ggdb3", | 158 "-ggdb3", |
| 168 "-fno-rtti", | 159 "-fno-rtti", |
| 169 "-fno-exceptions", | 160 "-fno-exceptions", |
| 170 ] | 161 ] |
| 171 | 162 |
| 172 if (dart_debug) { | 163 if (dart_debug) { |
| 173 cflags += [ | 164 cflags += [ "-O1" ] |
| 174 "-O1", | |
| 175 ] | |
| 176 } else { | 165 } else { |
| 177 cflags += [ | 166 cflags += [ "-O3" ] |
| 178 "-O3", | |
| 179 ] | |
| 180 } | 167 } |
| 181 | 168 |
| 182 if (defined(is_asan) && is_asan) { | 169 if (defined(is_asan) && is_asan) { |
| 183 ldflags = [ | 170 ldflags = [ "-fsanitize=address" ] |
| 184 "-fsanitize=address", | |
| 185 ] | |
| 186 } | 171 } |
| 187 } | 172 } |
| 188 } | 173 } |
| 189 | 174 |
| 190 template("libdart_library") { | 175 template("libdart_library") { |
| 191 extra_configs = [] | 176 extra_configs = [] |
| 192 if (defined(invoker.extra_configs)) { | 177 if (defined(invoker.extra_configs)) { |
| 193 extra_configs += invoker.extra_configs | 178 extra_configs += invoker.extra_configs |
| 194 } | 179 } |
| 195 extra_deps = [] | 180 extra_deps = [] |
| 196 if (defined(invoker.extra_deps)) { | 181 if (defined(invoker.extra_deps)) { |
| 197 extra_deps += invoker.extra_deps | 182 extra_deps += invoker.extra_deps |
| 198 } | 183 } |
| 199 static_library(target_name) { | 184 static_library(target_name) { |
| 200 configs += [ | 185 configs += [ |
| 201 ":dart_config", | 186 ":dart_config", |
| 202 ":dart_maybe_product_config" | 187 ":dart_maybe_product_config", |
| 203 ] + extra_configs | 188 ] + extra_configs |
| 204 deps = [ | 189 deps = [ |
| 205 "vm:libdart_platform", | 190 "vm:libdart_platform", |
| 206 "third_party/double-conversion/src:libdouble_conversion", | 191 "third_party/double-conversion/src:libdouble_conversion", |
| 207 ":generate_version_cc_file", | 192 ":generate_version_cc_file", |
| 208 ] + extra_deps | 193 ] + extra_deps |
| 209 include_dirs = [ | 194 include_dirs = [ "." ] |
| 210 ".", | 195 public_configs = [ ":dart_public_config" ] |
| 211 ] | |
| 212 public_configs = [":dart_public_config"] | |
| 213 sources = [ | 196 sources = [ |
| 197 "$target_gen_dir/version.cc", |
| 214 "include/dart_api.h", | 198 "include/dart_api.h", |
| 215 "include/dart_mirrors_api.h", | 199 "include/dart_mirrors_api.h", |
| 216 "include/dart_native_api.h", | 200 "include/dart_native_api.h", |
| 217 "include/dart_tools_api.h", | 201 "include/dart_tools_api.h", |
| 218 "vm/dart_api_impl.cc", | 202 "vm/dart_api_impl.cc", |
| 219 "vm/debugger_api_impl.cc", | 203 "vm/debugger_api_impl.cc", |
| 220 "vm/mirrors_api_impl.cc", | 204 "vm/mirrors_api_impl.cc", |
| 221 "vm/native_api_impl.cc", | 205 "vm/native_api_impl.cc", |
| 222 "vm/version.h", | 206 "vm/version.h", |
| 223 "$target_gen_dir/version.cc", | |
| 224 ] | 207 ] |
| 225 defines = [ | 208 defines = [ "DART_SHARED_LIB" ] |
| 226 "DART_SHARED_LIB", | |
| 227 ] | |
| 228 } | 209 } |
| 229 } | 210 } |
| 230 | 211 |
| 231 libdart_library("libdart") { | 212 libdart_library("libdart") { |
| 232 extra_configs = [ | 213 extra_configs = [ ":dart_maybe_precompiled_runtime_config" ] |
| 233 ":dart_maybe_precompiled_runtime_config" | |
| 234 ] | |
| 235 extra_deps = [ | 214 extra_deps = [ |
| 236 "vm:libdart_lib", | 215 "vm:libdart_lib", |
| 237 "vm:libdart_vm", | 216 "vm:libdart_vm", |
| 238 ] | 217 ] |
| 239 } | 218 } |
| 240 | 219 |
| 241 libdart_library("libdart_noopt") { | 220 libdart_library("libdart_noopt") { |
| 242 extra_configs = [ | 221 extra_configs = [ |
| 243 ":dart_maybe_precompiled_runtime_config", | 222 ":dart_maybe_precompiled_runtime_config", |
| 244 ":dart_precompiler_config", | 223 ":dart_precompiler_config", |
| 245 ] | 224 ] |
| 246 extra_deps = [ | 225 extra_deps = [ |
| 247 "vm:libdart_lib", | 226 "vm:libdart_lib", |
| 248 "vm:libdart_vm_noopt", | 227 "vm:libdart_vm_noopt", |
| 249 ] | 228 ] |
| 250 } | 229 } |
| 251 | 230 |
| 252 libdart_library("libdart_precompiled_runtime") { | 231 libdart_library("libdart_precompiled_runtime") { |
| 253 extra_configs = [ | 232 extra_configs = [ ":dart_precompiled_runtime_config" ] |
| 254 ":dart_precompiled_runtime_config" | |
| 255 ] | |
| 256 extra_deps = [ | 233 extra_deps = [ |
| 257 "vm:libdart_lib_precompiled_runtime", | 234 "vm:libdart_lib_precompiled_runtime", |
| 258 "vm:libdart_vm_precompiled_runtime", | 235 "vm:libdart_vm_precompiled_runtime", |
| 259 ] | 236 ] |
| 260 } | 237 } |
| 261 | 238 |
| 262 libdart_library("libdart_nosnapshot") { | 239 libdart_library("libdart_nosnapshot") { |
| 263 extra_configs = [ | 240 extra_configs = [ |
| 264 ":dart_no_snapshot_config", | 241 ":dart_no_snapshot_config", |
| 265 ":dart_maybe_precompiled_runtime_config" | 242 ":dart_maybe_precompiled_runtime_config", |
| 266 ] | 243 ] |
| 267 extra_deps = [ | 244 extra_deps = [ |
| 268 "vm:libdart_lib_nosnapshot", | 245 "vm:libdart_lib_nosnapshot", |
| 269 "vm:libdart_vm_nosnapshot", | 246 "vm:libdart_vm_nosnapshot", |
| 270 ] | 247 ] |
| 271 } | 248 } |
| 272 | 249 |
| 273 libdart_library("libdart_nosnapshot_precompiled_runtime") { | 250 libdart_library("libdart_nosnapshot_precompiled_runtime") { |
| 274 extra_configs = [ | 251 extra_configs = [ |
| 275 ":dart_no_snapshot_config", | 252 ":dart_no_snapshot_config", |
| 276 ":dart_precompiled_runtime_config" | 253 ":dart_precompiled_runtime_config", |
| 277 ] | 254 ] |
| 278 extra_deps = [ | 255 extra_deps = [ |
| 279 "vm:libdart_lib_nosnapshot_precompiled_runtime", | 256 "vm:libdart_lib_nosnapshot_precompiled_runtime", |
| 280 "vm:libdart_vm_nosnapshot_precompiled_runtime", | 257 "vm:libdart_vm_nosnapshot_precompiled_runtime", |
| 281 ] | 258 ] |
| 282 } | 259 } |
| 283 | 260 |
| 284 libdart_library("libdart_nosnapshot_with_precompiler") { | 261 libdart_library("libdart_nosnapshot_with_precompiler") { |
| 285 extra_configs = [ | 262 extra_configs = [ |
| 286 ":dart_no_snapshot_config", | 263 ":dart_no_snapshot_config", |
| 287 ":dart_precompiler_config", | 264 ":dart_precompiler_config", |
| 288 ] | 265 ] |
| 289 extra_deps = [ | 266 extra_deps = [ |
| 290 "vm:libdart_lib_nosnapshot_with_precompiler", | 267 "vm:libdart_lib_nosnapshot_with_precompiler", |
| 291 "vm:libdart_vm_nosnapshot_with_precompiler", | 268 "vm:libdart_vm_nosnapshot_with_precompiler", |
| 292 ] | 269 ] |
| 293 } | 270 } |
| 294 | 271 |
| 295 action("generate_version_cc_file") { | 272 action("generate_version_cc_file") { |
| 296 deps = [ | 273 deps = [ |
| 297 ":libdart_dependency_helper", | 274 ":libdart_dependency_helper", |
| 298 ] | 275 ] |
| 299 inputs = [ | 276 inputs = [ |
| 300 "../tools/utils.py", | 277 "../tools/utils.py", |
| 301 "../tools/print_version.py", | 278 "../tools/print_version.py", |
| 302 "../tools/VERSION", | 279 "../tools/VERSION", |
| 303 "vm/version_in.cc", | 280 "vm/version_in.cc", |
| 304 ] | 281 ] |
| 305 output = "$target_gen_dir/version.cc" | 282 output = "$target_gen_dir/version.cc" |
| 306 outputs = [ output, ] | 283 outputs = [ |
| 284 output, |
| 285 ] |
| 307 | 286 |
| 308 script = "../tools/make_version.py" | 287 script = "../tools/make_version.py" |
| 309 args = [ | 288 args = [ |
| 310 "--quiet", | 289 "--quiet", |
| 311 "--output", rebase_path(output, root_build_dir), | 290 "--output", |
| 312 "--input", rebase_path("vm/version_in.cc", root_build_dir), | 291 rebase_path(output, root_build_dir), |
| 292 "--input", |
| 293 rebase_path("vm/version_in.cc", root_build_dir), |
| 313 ] | 294 ] |
| 314 } | 295 } |
| 315 | 296 |
| 316 | |
| 317 executable("libdart_dependency_helper") { | 297 executable("libdart_dependency_helper") { |
| 318 configs += [":dart_config", | 298 configs += [ |
| 319 ":dart_maybe_product_config"] | 299 ":dart_config", |
| 300 ":dart_maybe_product_config", |
| 301 ] |
| 320 deps = [ | 302 deps = [ |
| 303 "third_party/double-conversion/src:libdouble_conversion", |
| 304 "vm:libdart_lib", |
| 321 "vm:libdart_lib_nosnapshot", | 305 "vm:libdart_lib_nosnapshot", |
| 322 "vm:libdart_lib", | 306 "vm:libdart_platform", |
| 323 "vm:libdart_vm", | 307 "vm:libdart_vm", |
| 324 "vm:libdart_platform", | |
| 325 "third_party/double-conversion/src:libdouble_conversion", | |
| 326 ] | 308 ] |
| 327 sources = [ | 309 sources = [ |
| 328 "vm/libdart_dependency_helper.cc", | 310 "vm/libdart_dependency_helper.cc", |
| 329 ] | 311 ] |
| 330 } | 312 } |
| OLD | NEW |