[clang_toolchain] Enable LTO for zlib and libxml2 in prod

We already use LTO for Clang, use it for dependencies as well.

Change-Id: I24ed1771a04615338dcf4c1484fe0de03f08e744
diff --git a/recipes/clang_toolchain.expected/ci-linux-x64.json b/recipes/clang_toolchain.expected/ci-linux-x64.json
index 915f710..57b07e8 100644
--- a/recipes/clang_toolchain.expected/ci-linux-x64.json
+++ b/recipes/clang_toolchain.expected/ci-linux-x64.json
@@ -714,13 +714,6 @@
       "-j80"
     ],
     "cwd": "[START_DIR]/zlib/obj",
-    "env": {
-      "AR": "[START_DIR]/cipd/bin/llvm-ar",
-      "CC": "[CACHE]/goma/client/gomacc [START_DIR]/cipd/bin/clang",
-      "CFLAGS": "-O3 -fPIC --target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/linux-amd64",
-      "NM": "[START_DIR]/cipd/bin/llvm-nm",
-      "RANLIB": "[START_DIR]/cipd/bin/llvm-ranlib"
-    },
     "name": "zlib.build",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
@@ -733,13 +726,6 @@
       "DESTDIR=[CLEANUP]/clang_tmp_1/zlib_install"
     ],
     "cwd": "[START_DIR]/zlib/obj",
-    "env": {
-      "AR": "[START_DIR]/cipd/bin/llvm-ar",
-      "CC": "[CACHE]/goma/client/gomacc [START_DIR]/cipd/bin/clang",
-      "CFLAGS": "-O3 -fPIC --target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/linux-amd64",
-      "NM": "[START_DIR]/cipd/bin/llvm-nm",
-      "RANLIB": "[START_DIR]/cipd/bin/llvm-ranlib"
-    },
     "name": "zlib.install",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
diff --git a/recipes/clang_toolchain.expected/ci-mac-x64.json b/recipes/clang_toolchain.expected/ci-mac-x64.json
index f4b0e4c..a60601a 100644
--- a/recipes/clang_toolchain.expected/ci-mac-x64.json
+++ b/recipes/clang_toolchain.expected/ci-mac-x64.json
@@ -776,13 +776,6 @@
       "-j80"
     ],
     "cwd": "[START_DIR]/zlib/obj",
-    "env": {
-      "AR": "[START_DIR]/cipd/bin/llvm-ar",
-      "CC": "[CACHE]/goma/client/gomacc [START_DIR]/cipd/bin/clang",
-      "CFLAGS": "-O3 -fPIC --target=x86_64-apple-darwin --sysroot=/some/xcode/path",
-      "NM": "[START_DIR]/cipd/bin/llvm-nm",
-      "RANLIB": "[START_DIR]/cipd/bin/llvm-ranlib"
-    },
     "name": "zlib.build",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
@@ -795,13 +788,6 @@
       "DESTDIR=[CLEANUP]/clang_tmp_1/zlib_install"
     ],
     "cwd": "[START_DIR]/zlib/obj",
-    "env": {
-      "AR": "[START_DIR]/cipd/bin/llvm-ar",
-      "CC": "[CACHE]/goma/client/gomacc [START_DIR]/cipd/bin/clang",
-      "CFLAGS": "-O3 -fPIC --target=x86_64-apple-darwin --sysroot=/some/xcode/path",
-      "NM": "[START_DIR]/cipd/bin/llvm-nm",
-      "RANLIB": "[START_DIR]/cipd/bin/llvm-ranlib"
-    },
     "name": "zlib.install",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
diff --git a/recipes/clang_toolchain.expected/linux-arm64.json b/recipes/clang_toolchain.expected/linux-arm64.json
index 8e50089..f7881f9 100644
--- a/recipes/clang_toolchain.expected/linux-arm64.json
+++ b/recipes/clang_toolchain.expected/linux-arm64.json
@@ -627,13 +627,6 @@
       "-j8"
     ],
     "cwd": "[START_DIR]/zlib/obj",
-    "env": {
-      "AR": "[START_DIR]/cipd/bin/llvm-ar",
-      "CC": "[START_DIR]/cipd/bin/clang",
-      "CFLAGS": "-O3 -fPIC --target=aarch64-linux-gnu --sysroot=[START_DIR]/cipd/linux-arm64",
-      "NM": "[START_DIR]/cipd/bin/llvm-nm",
-      "RANLIB": "[START_DIR]/cipd/bin/llvm-ranlib"
-    },
     "name": "zlib.build",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
@@ -646,13 +639,6 @@
       "DESTDIR=[CLEANUP]/clang_tmp_1/zlib_install"
     ],
     "cwd": "[START_DIR]/zlib/obj",
-    "env": {
-      "AR": "[START_DIR]/cipd/bin/llvm-ar",
-      "CC": "[START_DIR]/cipd/bin/clang",
-      "CFLAGS": "-O3 -fPIC --target=aarch64-linux-gnu --sysroot=[START_DIR]/cipd/linux-arm64",
-      "NM": "[START_DIR]/cipd/bin/llvm-nm",
-      "RANLIB": "[START_DIR]/cipd/bin/llvm-ranlib"
-    },
     "name": "zlib.install",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
diff --git a/recipes/clang_toolchain.expected/prod-linux-x64.json b/recipes/clang_toolchain.expected/prod-linux-x64.json
index 3d5abcf..0906ae4 100644
--- a/recipes/clang_toolchain.expected/prod-linux-x64.json
+++ b/recipes/clang_toolchain.expected/prod-linux-x64.json
@@ -699,7 +699,7 @@
     "env": {
       "AR": "[START_DIR]/cipd/bin/llvm-ar",
       "CC": "[CACHE]/goma/client/gomacc [START_DIR]/cipd/bin/clang",
-      "CFLAGS": "-O3 -fPIC --target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/linux-amd64",
+      "CFLAGS": "-O3 -fPIC --target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/linux-amd64 -flto",
       "NM": "[START_DIR]/cipd/bin/llvm-nm",
       "RANLIB": "[START_DIR]/cipd/bin/llvm-ranlib"
     },
@@ -714,13 +714,6 @@
       "-j80"
     ],
     "cwd": "[START_DIR]/zlib/obj",
-    "env": {
-      "AR": "[START_DIR]/cipd/bin/llvm-ar",
-      "CC": "[CACHE]/goma/client/gomacc [START_DIR]/cipd/bin/clang",
-      "CFLAGS": "-O3 -fPIC --target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/linux-amd64",
-      "NM": "[START_DIR]/cipd/bin/llvm-nm",
-      "RANLIB": "[START_DIR]/cipd/bin/llvm-ranlib"
-    },
     "name": "zlib.build",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
@@ -733,13 +726,6 @@
       "DESTDIR=[CLEANUP]/clang_tmp_1/zlib_install"
     ],
     "cwd": "[START_DIR]/zlib/obj",
-    "env": {
-      "AR": "[START_DIR]/cipd/bin/llvm-ar",
-      "CC": "[CACHE]/goma/client/gomacc [START_DIR]/cipd/bin/clang",
-      "CFLAGS": "-O3 -fPIC --target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/linux-amd64",
-      "NM": "[START_DIR]/cipd/bin/llvm-nm",
-      "RANLIB": "[START_DIR]/cipd/bin/llvm-ranlib"
-    },
     "name": "zlib.install",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
@@ -1060,7 +1046,7 @@
       "AR=[START_DIR]/cipd/bin/llvm-ar",
       "RANLIB=[START_DIR]/cipd/bin/llvm-ranlib",
       "NM=[START_DIR]/cipd/bin/llvm-nm",
-      "CFLAGS=-O3 -fPIC --target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/linux-amd64"
+      "CFLAGS=-O3 -fPIC --target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/linux-amd64 -flto"
     ],
     "cwd": "[START_DIR]/libxml2/obj",
     "name": "libxml2.configure",
diff --git a/recipes/clang_toolchain.expected/prod-mac-x64.json b/recipes/clang_toolchain.expected/prod-mac-x64.json
index 30a843f..6c02b38 100644
--- a/recipes/clang_toolchain.expected/prod-mac-x64.json
+++ b/recipes/clang_toolchain.expected/prod-mac-x64.json
@@ -761,7 +761,7 @@
     "env": {
       "AR": "[START_DIR]/cipd/bin/llvm-ar",
       "CC": "[CACHE]/goma/client/gomacc [START_DIR]/cipd/bin/clang",
-      "CFLAGS": "-O3 -fPIC --target=x86_64-apple-darwin --sysroot=/some/xcode/path",
+      "CFLAGS": "-O3 -fPIC --target=x86_64-apple-darwin --sysroot=/some/xcode/path -flto",
       "NM": "[START_DIR]/cipd/bin/llvm-nm",
       "RANLIB": "[START_DIR]/cipd/bin/llvm-ranlib"
     },
@@ -776,13 +776,6 @@
       "-j80"
     ],
     "cwd": "[START_DIR]/zlib/obj",
-    "env": {
-      "AR": "[START_DIR]/cipd/bin/llvm-ar",
-      "CC": "[CACHE]/goma/client/gomacc [START_DIR]/cipd/bin/clang",
-      "CFLAGS": "-O3 -fPIC --target=x86_64-apple-darwin --sysroot=/some/xcode/path",
-      "NM": "[START_DIR]/cipd/bin/llvm-nm",
-      "RANLIB": "[START_DIR]/cipd/bin/llvm-ranlib"
-    },
     "name": "zlib.build",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
@@ -795,13 +788,6 @@
       "DESTDIR=[CLEANUP]/clang_tmp_1/zlib_install"
     ],
     "cwd": "[START_DIR]/zlib/obj",
-    "env": {
-      "AR": "[START_DIR]/cipd/bin/llvm-ar",
-      "CC": "[CACHE]/goma/client/gomacc [START_DIR]/cipd/bin/clang",
-      "CFLAGS": "-O3 -fPIC --target=x86_64-apple-darwin --sysroot=/some/xcode/path",
-      "NM": "[START_DIR]/cipd/bin/llvm-nm",
-      "RANLIB": "[START_DIR]/cipd/bin/llvm-ranlib"
-    },
     "name": "zlib.install",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
@@ -1122,7 +1108,7 @@
       "AR=[START_DIR]/cipd/bin/llvm-ar",
       "RANLIB=[START_DIR]/cipd/bin/llvm-ranlib",
       "NM=[START_DIR]/cipd/bin/llvm-nm",
-      "CFLAGS=-O3 -fPIC --target=x86_64-apple-darwin --sysroot=/some/xcode/path"
+      "CFLAGS=-O3 -fPIC --target=x86_64-apple-darwin --sysroot=/some/xcode/path -flto"
     ],
     "cwd": "[START_DIR]/libxml2/obj",
     "name": "libxml2.configure",
diff --git a/recipes/clang_toolchain.py b/recipes/clang_toolchain.py
index bf859b4..91c229d 100644
--- a/recipes/clang_toolchain.py
+++ b/recipes/clang_toolchain.py
@@ -84,12 +84,13 @@
   git_checkout.fetch_ref = 'refs/tags/v1.2.9'
   obj_dir = zlib_dir.join('obj')
   api.file.ensure_directory('make objdir', obj_dir)
-  with api.context(cwd=obj_dir, env=env):
-    api.step('configure', [
-        src_dir.join('configure'),
-        '--prefix=',
-        '--static',
-    ])
+  with api.context(cwd=obj_dir):
+    with api.context(env=env):
+      api.step('configure', [
+          src_dir.join('configure'),
+          '--prefix=',
+          '--static',
+      ])
     api.step('build', ['make', '-j%d' % jobs])
     api.step('install', ['make', 'install', 'DESTDIR=%s' % destdir])
 
@@ -231,9 +232,9 @@
         'CC': ('%s %s' % (api.goma.goma_dir.join('gomacc'),
                           cipd_dir.join('bin', 'clang')))
               if use_goma else cipd_dir.join('bin', 'clang'),
-        'CFLAGS':
-            '-O3 -fPIC --target=%s --sysroot=%s' % (target_triple,
-                                                    target_sysroot),
+        'CFLAGS': (
+            '-O3 -fPIC --target=%s --sysroot=%s' %
+            (target_triple, target_sysroot) + (' -flto' if prod else '')),
         'AR':
             cipd_dir.join('bin', 'llvm-ar'),
         'NM':