From 29dd267a6dd009c56b356f5a8ded744df9e0daca Mon Sep 17 00:00:00 2001 From: Jinank Jain Date: Wed, 6 May 2015 15:33:28 +0200 Subject: [PATCH] Fixed #5933 --- README.md | 9 ++++++--- python/servo/build_commands.py | 18 +++++++++++++++++- python/servo/command_base.py | 2 +- servobuild.example | 3 +++ 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 126973503694..b395e17f6d56 100644 --- a/README.md +++ b/README.md @@ -74,15 +74,18 @@ Mach tools to orchestrate the build and other tasks. ### Normal build + +To build Servo in development mode. This is useful for development, but +the resulting binary is very slow. + ``` sh git clone https://github.com/servo/servo cd servo -./mach build +./mach build --dev ./mach run tests/html/about-mozilla.html ``` -By default, Servo builds in debug mode. This is useful for development, but -the resulting binary is very slow. For benchmarking, performance testing, or +For benchmarking, performance testing, or real-world use, add the `--release` flag to create an optimized build: ``` sh diff --git a/python/servo/build_commands.py b/python/servo/build_commands.py index ca9075a48f00..13bde25fbe6a 100644 --- a/python/servo/build_commands.py +++ b/python/servo/build_commands.py @@ -70,6 +70,9 @@ class MachCommands(CommandBase): @CommandArgument('--release', '-r', action='store_true', help='Build in release mode') + @CommandArgument('--dev', '-d', + action='store_true', + help='Build in development mode') @CommandArgument('--jobs', '-j', default=None, help='Number of jobs to run in parallel') @@ -86,7 +89,7 @@ class MachCommands(CommandBase): help='Print verbose output') @CommandArgument('params', nargs='...', help="Command-line arguments to be passed through to Cargo") - def build(self, target=None, release=False, jobs=None, android=None, + def build(self, target=None, release=False, jobs=None, android=None, dev=False, verbose=False, debug_mozjs=False, params=None): self.ensure_bootstrapped() @@ -96,6 +99,19 @@ def build(self, target=None, release=False, jobs=None, android=None, opts = params or [] features = [] + if not(release or dev): + if self.config["build"]["mode"] == "dev": + dev = True + elif self.config["build"]["mode"] == "release": + release = True + else: + print("Please specify either --dev(or -d) for a development build or --release(or -r) for an optimized build.") + sys.exit(1) + + if release and dev: + print("Please specify either --dev(or -d) for a development build or --release(or -r) for an optimized build.") + sys.exit(1) + if release: opts += ["--release"] if target: diff --git a/python/servo/command_base.py b/python/servo/command_base.py index 8047bf441796..a46fd21dfc1c 100644 --- a/python/servo/command_base.py +++ b/python/servo/command_base.py @@ -93,7 +93,7 @@ def resolverelative(category, key): self.config.setdefault("build", {}) self.config["build"].setdefault("android", False) - + self.config["build"].setdefault("mode", "") self.config["build"].setdefault("debug-mozjs", False) self.config.setdefault("android", {}) diff --git a/servobuild.example b/servobuild.example index 1396c73126e0..a29ec9aaf27f 100644 --- a/servobuild.example +++ b/servobuild.example @@ -23,6 +23,9 @@ system-cargo = false cargo-root = "/path/to/cargo" [build] +# Set "mode = dev" or use `mach build --dev` to build the project with warning. +# or Set "mode = release" or use `mach build --release` for optimized build. +mode = "dev" # Set "android = true" or use `mach build --android` to build the Android app. android = false # Set "debug-mozjs" or use `mach build --debug-mozjs` to build a debug spidermonkey.