[clang_toolchain] Pass zlib and libxml2 roots explicitly to CMake

Now that LLVM CMake uses find_package to find location of both
zlib and libxml2, we can use the corresponding CMake variable to
pass the roots explicitly rather than relying on pkg-config which
also addresses the recent breakage.

Bug: 45444
Change-Id: Ibec2810fb01b02b15beec691ac589b918a79f20c
diff --git a/recipes/clang_toolchain.expected/ci-linux-x64.json b/recipes/clang_toolchain.expected/ci-linux-x64.json
index a3f3ee0..332978f 100644
--- a/recipes/clang_toolchain.expected/ci-linux-x64.json
+++ b/recipes/clang_toolchain.expected/ci-linux-x64.json
@@ -348,21 +348,6 @@
     ]
   },
   {
-    "cmd": [
-      "vpython",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[CLEANUP]/clang_tmp_1/lib_install"
-    ],
-    "infra_step": true,
-    "name": "create lib_install_dir"
-  },
-  {
     "cmd": [],
     "name": "pre_goma"
   },
@@ -431,6 +416,24 @@
       "ensure-directory",
       "--mode",
       "0777",
+      "[CLEANUP]/clang_tmp_1/zlib_install"
+    ],
+    "infra_step": true,
+    "name": "zlib.create zlib_install_dir",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
       "[START_DIR]/zlib/src"
     ],
     "infra_step": true,
@@ -727,7 +730,7 @@
     "cmd": [
       "make",
       "install",
-      "DESTDIR=[CLEANUP]/clang_tmp_1/lib_install"
+      "DESTDIR=[CLEANUP]/clang_tmp_1/zlib_install"
     ],
     "cwd": "[START_DIR]/zlib/obj",
     "env": {
@@ -756,6 +759,24 @@
       "ensure-directory",
       "--mode",
       "0777",
+      "[CLEANUP]/clang_tmp_1/libxml2_install"
+    ],
+    "infra_step": true,
+    "name": "libxml2.create libxml2_install_dir",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
       "[START_DIR]/libxml2/src"
     ],
     "infra_step": true,
@@ -1031,7 +1052,7 @@
       "--host=x86_64-linux-gnu",
       "--disable-shared",
       "--enable-static",
-      "--with-zlib=[CLEANUP]/clang_tmp_1/lib_install",
+      "--with-zlib=[CLEANUP]/clang_tmp_1/libxml2_install",
       "--without-icu",
       "--without-lzma",
       "--without-python",
@@ -1062,7 +1083,7 @@
     "cmd": [
       "make",
       "install",
-      "DESTDIR=[CLEANUP]/clang_tmp_1/lib_install"
+      "DESTDIR=[CLEANUP]/clang_tmp_1/libxml2_install"
     ],
     "cwd": "[START_DIR]/libxml2/obj",
     "name": "libxml2.install",
@@ -1205,11 +1226,14 @@
       "-DCMAKE_OBJDUMP=[START_DIR]/cipd/bin/llvm-objdump",
       "-DCMAKE_RANLIB=[START_DIR]/cipd/bin/llvm-ranlib",
       "-DCMAKE_STRIP=[START_DIR]/cipd/bin/llvm-strip",
-      "-DCMAKE_C_FLAGS=-I[CLEANUP]/clang_tmp_1/lib_install/include -I[CLEANUP]/clang_tmp_1/lib_install/include/libxml2",
-      "-DCMAKE_CXX_FLAGS=-I[CLEANUP]/clang_tmp_1/lib_install/include -I[CLEANUP]/clang_tmp_1/lib_install/include/libxml2",
-      "-DCMAKE_SHARED_LINKER_FLAGS=-static-libstdc++ -ldl -lpthread -L[START_DIR]/cipd/linux-amd64/lib -L[CLEANUP]/clang_tmp_1/lib_install/lib",
-      "-DCMAKE_MODULE_LINKER_FLAGS=-static-libstdc++ -ldl -lpthread -L[START_DIR]/cipd/linux-amd64/lib -L[CLEANUP]/clang_tmp_1/lib_install/lib",
-      "-DCMAKE_EXE_LINKER_FLAGS=-static-libstdc++ -ldl -lpthread -L[START_DIR]/cipd/linux-amd64/lib -L[CLEANUP]/clang_tmp_1/lib_install/lib",
+      "-DCMAKE_C_FLAGS=-I[CLEANUP]/clang_tmp_1/zlib_install/include",
+      "-DCMAKE_CXX_FLAGS=-I[CLEANUP]/clang_tmp_1/zlib_install/include",
+      "-DZLIB_ROOT=[CLEANUP]/clang_tmp_1/zlib_install",
+      "-DLIBXML2_INCLUDE_DIR=[CLEANUP]/clang_tmp_1/libxml2_install/include/libxml2",
+      "-DLIBXML2_LIBRARY=[CLEANUP]/clang_tmp_1/libxml2_install/lib/libxml2.a",
+      "-DCMAKE_SHARED_LINKER_FLAGS=-static-libstdc++",
+      "-DCMAKE_MODULE_LINKER_FLAGS=-static-libstdc++",
+      "-DCMAKE_EXE_LINKER_FLAGS=-static-libstdc++",
       "-DCMAKE_SYSROOT=[START_DIR]/cipd/linux-amd64",
       "-DLLVM_ENABLE_LTO=OFF",
       "-DLLVM_ENABLE_ASSERTIONS=ON",
diff --git a/recipes/clang_toolchain.expected/ci-mac-x64.json b/recipes/clang_toolchain.expected/ci-mac-x64.json
index b25b5b1..7c053be 100644
--- a/recipes/clang_toolchain.expected/ci-mac-x64.json
+++ b/recipes/clang_toolchain.expected/ci-mac-x64.json
@@ -349,21 +349,6 @@
   },
   {
     "cmd": [
-      "vpython",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[CLEANUP]/clang_tmp_1/lib_install"
-    ],
-    "infra_step": true,
-    "name": "create lib_install_dir"
-  },
-  {
-    "cmd": [
       "cipd",
       "ensure",
       "-root",
@@ -493,6 +478,24 @@
       "ensure-directory",
       "--mode",
       "0777",
+      "[CLEANUP]/clang_tmp_1/zlib_install"
+    ],
+    "infra_step": true,
+    "name": "zlib.create zlib_install_dir",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
       "[START_DIR]/zlib/src"
     ],
     "infra_step": true,
@@ -789,7 +792,7 @@
     "cmd": [
       "make",
       "install",
-      "DESTDIR=[CLEANUP]/clang_tmp_1/lib_install"
+      "DESTDIR=[CLEANUP]/clang_tmp_1/zlib_install"
     ],
     "cwd": "[START_DIR]/zlib/obj",
     "env": {
@@ -818,6 +821,24 @@
       "ensure-directory",
       "--mode",
       "0777",
+      "[CLEANUP]/clang_tmp_1/libxml2_install"
+    ],
+    "infra_step": true,
+    "name": "libxml2.create libxml2_install_dir",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
       "[START_DIR]/libxml2/src"
     ],
     "infra_step": true,
@@ -1093,7 +1114,7 @@
       "--host=x86_64-apple-darwin",
       "--disable-shared",
       "--enable-static",
-      "--with-zlib=[CLEANUP]/clang_tmp_1/lib_install",
+      "--with-zlib=[CLEANUP]/clang_tmp_1/libxml2_install",
       "--without-icu",
       "--without-lzma",
       "--without-python",
@@ -1124,7 +1145,7 @@
     "cmd": [
       "make",
       "install",
-      "DESTDIR=[CLEANUP]/clang_tmp_1/lib_install"
+      "DESTDIR=[CLEANUP]/clang_tmp_1/libxml2_install"
     ],
     "cwd": "[START_DIR]/libxml2/obj",
     "name": "libxml2.install",
@@ -1260,6 +1281,11 @@
       "-DCMAKE_C_COMPILER_LAUNCHER=[CACHE]/goma/client/gomacc",
       "-DCMAKE_CXX_COMPILER_LAUNCHER=[CACHE]/goma/client/gomacc",
       "-DCMAKE_ASM_COMPILER_LAUNCHER=[CACHE]/goma/client/gomacc",
+      "-DCMAKE_C_FLAGS=-I[CLEANUP]/clang_tmp_1/zlib_install/include",
+      "-DCMAKE_CXX_FLAGS=-I[CLEANUP]/clang_tmp_1/zlib_install/include",
+      "-DZLIB_ROOT=[CLEANUP]/clang_tmp_1/zlib_install",
+      "-DLIBXML2_INCLUDE_DIR=[CLEANUP]/clang_tmp_1/libxml2_install/include/libxml2",
+      "-DLIBXML2_LIBRARY=[CLEANUP]/clang_tmp_1/libxml2_install/lib/libxml2.a",
       "-DCMAKE_SHARED_LINKER_FLAGS=-nostdlib++ [START_DIR]/cipd/lib/libc++.a",
       "-DCMAKE_MODULE_LINKER_FLAGS=-nostdlib++ [START_DIR]/cipd/lib/libc++.a",
       "-DCMAKE_EXE_LINKER_FLAGS=-nostdlib++ [START_DIR]/cipd/lib/libc++.a",
diff --git a/recipes/clang_toolchain.expected/linux-arm64.json b/recipes/clang_toolchain.expected/linux-arm64.json
index 4da8775..a4e5ccf 100644
--- a/recipes/clang_toolchain.expected/linux-arm64.json
+++ b/recipes/clang_toolchain.expected/linux-arm64.json
@@ -316,6 +316,10 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "zlib"
+  },
+  {
     "cmd": [
       "vpython",
       "-u",
@@ -325,14 +329,13 @@
       "ensure-directory",
       "--mode",
       "0777",
-      "[CLEANUP]/clang_tmp_1/lib_install"
+      "[CLEANUP]/clang_tmp_1/zlib_install"
     ],
     "infra_step": true,
-    "name": "create lib_install_dir"
-  },
-  {
-    "cmd": [],
-    "name": "zlib"
+    "name": "zlib.create zlib_install_dir",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
   },
   {
     "cmd": [
@@ -640,7 +643,7 @@
     "cmd": [
       "make",
       "install",
-      "DESTDIR=[CLEANUP]/clang_tmp_1/lib_install"
+      "DESTDIR=[CLEANUP]/clang_tmp_1/zlib_install"
     ],
     "cwd": "[START_DIR]/zlib/obj",
     "env": {
@@ -669,6 +672,24 @@
       "ensure-directory",
       "--mode",
       "0777",
+      "[CLEANUP]/clang_tmp_1/libxml2_install"
+    ],
+    "infra_step": true,
+    "name": "libxml2.create libxml2_install_dir",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
       "[START_DIR]/libxml2/src"
     ],
     "infra_step": true,
@@ -944,7 +965,7 @@
       "--host=aarch64-linux-gnu",
       "--disable-shared",
       "--enable-static",
-      "--with-zlib=[CLEANUP]/clang_tmp_1/lib_install",
+      "--with-zlib=[CLEANUP]/clang_tmp_1/libxml2_install",
       "--without-icu",
       "--without-lzma",
       "--without-python",
@@ -975,7 +996,7 @@
     "cmd": [
       "make",
       "install",
-      "DESTDIR=[CLEANUP]/clang_tmp_1/lib_install"
+      "DESTDIR=[CLEANUP]/clang_tmp_1/libxml2_install"
     ],
     "cwd": "[START_DIR]/libxml2/obj",
     "name": "libxml2.install",
@@ -1115,11 +1136,14 @@
       "-DCMAKE_OBJDUMP=[START_DIR]/cipd/bin/llvm-objdump",
       "-DCMAKE_RANLIB=[START_DIR]/cipd/bin/llvm-ranlib",
       "-DCMAKE_STRIP=[START_DIR]/cipd/bin/llvm-strip",
-      "-DCMAKE_C_FLAGS=-I[CLEANUP]/clang_tmp_1/lib_install/include -I[CLEANUP]/clang_tmp_1/lib_install/include/libxml2",
-      "-DCMAKE_CXX_FLAGS=-I[CLEANUP]/clang_tmp_1/lib_install/include -I[CLEANUP]/clang_tmp_1/lib_install/include/libxml2",
-      "-DCMAKE_SHARED_LINKER_FLAGS=-static-libstdc++ -ldl -lpthread -L[START_DIR]/cipd/linux-arm64/lib -L[CLEANUP]/clang_tmp_1/lib_install/lib",
-      "-DCMAKE_MODULE_LINKER_FLAGS=-static-libstdc++ -ldl -lpthread -L[START_DIR]/cipd/linux-arm64/lib -L[CLEANUP]/clang_tmp_1/lib_install/lib",
-      "-DCMAKE_EXE_LINKER_FLAGS=-static-libstdc++ -ldl -lpthread -L[START_DIR]/cipd/linux-arm64/lib -L[CLEANUP]/clang_tmp_1/lib_install/lib",
+      "-DCMAKE_C_FLAGS=-I[CLEANUP]/clang_tmp_1/zlib_install/include",
+      "-DCMAKE_CXX_FLAGS=-I[CLEANUP]/clang_tmp_1/zlib_install/include",
+      "-DZLIB_ROOT=[CLEANUP]/clang_tmp_1/zlib_install",
+      "-DLIBXML2_INCLUDE_DIR=[CLEANUP]/clang_tmp_1/libxml2_install/include/libxml2",
+      "-DLIBXML2_LIBRARY=[CLEANUP]/clang_tmp_1/libxml2_install/lib/libxml2.a",
+      "-DCMAKE_SHARED_LINKER_FLAGS=-static-libstdc++",
+      "-DCMAKE_MODULE_LINKER_FLAGS=-static-libstdc++",
+      "-DCMAKE_EXE_LINKER_FLAGS=-static-libstdc++",
       "-DCMAKE_SYSROOT=[START_DIR]/cipd/linux-arm64",
       "-DLLVM_ENABLE_LTO=OFF",
       "-DLLVM_ENABLE_ASSERTIONS=ON",
diff --git a/recipes/clang_toolchain.expected/prod-linux-x64.json b/recipes/clang_toolchain.expected/prod-linux-x64.json
index 89b7ac7..1c32150 100644
--- a/recipes/clang_toolchain.expected/prod-linux-x64.json
+++ b/recipes/clang_toolchain.expected/prod-linux-x64.json
@@ -348,21 +348,6 @@
     ]
   },
   {
-    "cmd": [
-      "vpython",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[CLEANUP]/clang_tmp_1/lib_install"
-    ],
-    "infra_step": true,
-    "name": "create lib_install_dir"
-  },
-  {
     "cmd": [],
     "name": "pre_goma"
   },
@@ -431,6 +416,24 @@
       "ensure-directory",
       "--mode",
       "0777",
+      "[CLEANUP]/clang_tmp_1/zlib_install"
+    ],
+    "infra_step": true,
+    "name": "zlib.create zlib_install_dir",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
       "[START_DIR]/zlib/src"
     ],
     "infra_step": true,
@@ -727,7 +730,7 @@
     "cmd": [
       "make",
       "install",
-      "DESTDIR=[CLEANUP]/clang_tmp_1/lib_install"
+      "DESTDIR=[CLEANUP]/clang_tmp_1/zlib_install"
     ],
     "cwd": "[START_DIR]/zlib/obj",
     "env": {
@@ -756,6 +759,24 @@
       "ensure-directory",
       "--mode",
       "0777",
+      "[CLEANUP]/clang_tmp_1/libxml2_install"
+    ],
+    "infra_step": true,
+    "name": "libxml2.create libxml2_install_dir",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
       "[START_DIR]/libxml2/src"
     ],
     "infra_step": true,
@@ -1031,7 +1052,7 @@
       "--host=x86_64-linux-gnu",
       "--disable-shared",
       "--enable-static",
-      "--with-zlib=[CLEANUP]/clang_tmp_1/lib_install",
+      "--with-zlib=[CLEANUP]/clang_tmp_1/libxml2_install",
       "--without-icu",
       "--without-lzma",
       "--without-python",
@@ -1062,7 +1083,7 @@
     "cmd": [
       "make",
       "install",
-      "DESTDIR=[CLEANUP]/clang_tmp_1/lib_install"
+      "DESTDIR=[CLEANUP]/clang_tmp_1/libxml2_install"
     ],
     "cwd": "[START_DIR]/libxml2/obj",
     "name": "libxml2.install",
@@ -1205,15 +1226,23 @@
       "-DCMAKE_OBJDUMP=[START_DIR]/cipd/bin/llvm-objdump",
       "-DCMAKE_RANLIB=[START_DIR]/cipd/bin/llvm-ranlib",
       "-DCMAKE_STRIP=[START_DIR]/cipd/bin/llvm-strip",
-      "-DBOOTSTRAP_CMAKE_C_FLAGS=-I[CLEANUP]/clang_tmp_1/lib_install/include -I[CLEANUP]/clang_tmp_1/lib_install/include/libxml2",
-      "-DBOOTSTRAP_CMAKE_CXX_FLAGS=-I[CLEANUP]/clang_tmp_1/lib_install/include -I[CLEANUP]/clang_tmp_1/lib_install/include/libxml2",
-      "-DBOOTSTRAP_CMAKE_SHARED_LINKER_FLAGS=-static-libstdc++ -ldl -lpthread -L[START_DIR]/cipd/linux-amd64/lib -L[CLEANUP]/clang_tmp_1/lib_install/lib",
-      "-DBOOTSTRAP_CMAKE_MODULE_LINKER_FLAGS=-static-libstdc++ -ldl -lpthread -L[START_DIR]/cipd/linux-amd64/lib -L[CLEANUP]/clang_tmp_1/lib_install/lib",
-      "-DBOOTSTRAP_CMAKE_EXE_LINKER_FLAGS=-static-libstdc++ -ldl -lpthread -L[START_DIR]/cipd/linux-amd64/lib -L[CLEANUP]/clang_tmp_1/lib_install/lib",
+      "-DBOOTSTRAP_CMAKE_C_FLAGS=-I[CLEANUP]/clang_tmp_1/zlib_install/include",
+      "-DBOOTSTRAP_CMAKE_CXX_FLAGS=-I[CLEANUP]/clang_tmp_1/zlib_install/include",
+      "-DBOOTSTRAP_ZLIB_ROOT=[CLEANUP]/clang_tmp_1/zlib_install",
+      "-DBOOTSTRAP_LIBXML2_INCLUDE_DIR=[CLEANUP]/clang_tmp_1/libxml2_install/include/libxml2",
+      "-DBOOTSTRAP_LIBXML2_LIBRARY=[CLEANUP]/clang_tmp_1/libxml2_install/lib/libxml2.a",
+      "-DCMAKE_C_FLAGS=-I[CLEANUP]/clang_tmp_1/zlib_install/include",
+      "-DCMAKE_CXX_FLAGS=-I[CLEANUP]/clang_tmp_1/zlib_install/include",
+      "-DZLIB_ROOT=[CLEANUP]/clang_tmp_1/zlib_install",
+      "-DLIBXML2_INCLUDE_DIR=[CLEANUP]/clang_tmp_1/libxml2_install/include/libxml2",
+      "-DLIBXML2_LIBRARY=[CLEANUP]/clang_tmp_1/libxml2_install/lib/libxml2.a",
+      "-DBOOTSTRAP_CMAKE_SHARED_LINKER_FLAGS=-static-libstdc++",
+      "-DBOOTSTRAP_CMAKE_MODULE_LINKER_FLAGS=-static-libstdc++",
+      "-DBOOTSTRAP_CMAKE_EXE_LINKER_FLAGS=-static-libstdc++",
       "-DBOOTSTRAP_CMAKE_SYSROOT=[START_DIR]/cipd/linux-amd64",
-      "-DCMAKE_SHARED_LINKER_FLAGS=-static-libstdc++ -ldl -lpthread",
-      "-DCMAKE_MODULE_LINKER_FLAGS=-static-libstdc++ -ldl -lpthread",
-      "-DCMAKE_EXE_LINKER_FLAGS=-static-libstdc++ -ldl -lpthread",
+      "-DCMAKE_SHARED_LINKER_FLAGS=-static-libstdc++",
+      "-DCMAKE_MODULE_LINKER_FLAGS=-static-libstdc++",
+      "-DCMAKE_EXE_LINKER_FLAGS=-static-libstdc++",
       "-DCMAKE_SYSROOT=[START_DIR]/cipd/linux-amd64",
       "-DSTAGE2_LINUX_aarch64-unknown-linux-gnu_SYSROOT=[START_DIR]/cipd/linux-arm64",
       "-DSTAGE2_LINUX_armv7-unknown-linux-gnueabihf_SYSROOT=[START_DIR]/cipd/linux-armhf",
diff --git a/recipes/clang_toolchain.expected/prod-mac-x64.json b/recipes/clang_toolchain.expected/prod-mac-x64.json
index 130a1e9..14b778e 100644
--- a/recipes/clang_toolchain.expected/prod-mac-x64.json
+++ b/recipes/clang_toolchain.expected/prod-mac-x64.json
@@ -349,21 +349,6 @@
   },
   {
     "cmd": [
-      "vpython",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[CLEANUP]/clang_tmp_1/lib_install"
-    ],
-    "infra_step": true,
-    "name": "create lib_install_dir"
-  },
-  {
-    "cmd": [
       "cipd",
       "ensure",
       "-root",
@@ -493,6 +478,24 @@
       "ensure-directory",
       "--mode",
       "0777",
+      "[CLEANUP]/clang_tmp_1/zlib_install"
+    ],
+    "infra_step": true,
+    "name": "zlib.create zlib_install_dir",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
       "[START_DIR]/zlib/src"
     ],
     "infra_step": true,
@@ -789,7 +792,7 @@
     "cmd": [
       "make",
       "install",
-      "DESTDIR=[CLEANUP]/clang_tmp_1/lib_install"
+      "DESTDIR=[CLEANUP]/clang_tmp_1/zlib_install"
     ],
     "cwd": "[START_DIR]/zlib/obj",
     "env": {
@@ -818,6 +821,24 @@
       "ensure-directory",
       "--mode",
       "0777",
+      "[CLEANUP]/clang_tmp_1/libxml2_install"
+    ],
+    "infra_step": true,
+    "name": "libxml2.create libxml2_install_dir",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
       "[START_DIR]/libxml2/src"
     ],
     "infra_step": true,
@@ -1093,7 +1114,7 @@
       "--host=x86_64-apple-darwin",
       "--disable-shared",
       "--enable-static",
-      "--with-zlib=[CLEANUP]/clang_tmp_1/lib_install",
+      "--with-zlib=[CLEANUP]/clang_tmp_1/libxml2_install",
       "--without-icu",
       "--without-lzma",
       "--without-python",
@@ -1124,7 +1145,7 @@
     "cmd": [
       "make",
       "install",
-      "DESTDIR=[CLEANUP]/clang_tmp_1/lib_install"
+      "DESTDIR=[CLEANUP]/clang_tmp_1/libxml2_install"
     ],
     "cwd": "[START_DIR]/libxml2/obj",
     "name": "libxml2.install",
@@ -1260,6 +1281,16 @@
       "-DCMAKE_C_COMPILER_LAUNCHER=[CACHE]/goma/client/gomacc",
       "-DCMAKE_CXX_COMPILER_LAUNCHER=[CACHE]/goma/client/gomacc",
       "-DCMAKE_ASM_COMPILER_LAUNCHER=[CACHE]/goma/client/gomacc",
+      "-DBOOTSTRAP_CMAKE_C_FLAGS=-I[CLEANUP]/clang_tmp_1/zlib_install/include",
+      "-DBOOTSTRAP_CMAKE_CXX_FLAGS=-I[CLEANUP]/clang_tmp_1/zlib_install/include",
+      "-DBOOTSTRAP_ZLIB_ROOT=[CLEANUP]/clang_tmp_1/zlib_install",
+      "-DBOOTSTRAP_LIBXML2_INCLUDE_DIR=[CLEANUP]/clang_tmp_1/libxml2_install/include/libxml2",
+      "-DBOOTSTRAP_LIBXML2_LIBRARY=[CLEANUP]/clang_tmp_1/libxml2_install/lib/libxml2.a",
+      "-DCMAKE_C_FLAGS=-I[CLEANUP]/clang_tmp_1/zlib_install/include",
+      "-DCMAKE_CXX_FLAGS=-I[CLEANUP]/clang_tmp_1/zlib_install/include",
+      "-DZLIB_ROOT=[CLEANUP]/clang_tmp_1/zlib_install",
+      "-DLIBXML2_INCLUDE_DIR=[CLEANUP]/clang_tmp_1/libxml2_install/include/libxml2",
+      "-DLIBXML2_LIBRARY=[CLEANUP]/clang_tmp_1/libxml2_install/lib/libxml2.a",
       "-DBOOTSTRAP_CMAKE_SHARED_LINKER_FLAGS=-nostdlib++ [START_DIR]/cipd/lib/libc++.a",
       "-DBOOTSTRAP_CMAKE_MODULE_LINKER_FLAGS=-nostdlib++ [START_DIR]/cipd/lib/libc++.a",
       "-DBOOTSTRAP_CMAKE_EXE_LINKER_FLAGS=-nostdlib++ [START_DIR]/cipd/lib/libc++.a",
diff --git a/recipes/clang_toolchain.py b/recipes/clang_toolchain.py
index e3b16e2..16842ef 100644
--- a/recipes/clang_toolchain.py
+++ b/recipes/clang_toolchain.py
@@ -202,9 +202,6 @@
     git_checkout.repo_url = repository
     git_checkout.revision = revision
 
-  lib_install_dir = staging_dir.join('lib_install')
-  api.file.ensure_directory('create lib_install_dir', lib_install_dir)
-
   target_triple = PLATFORM_TO_TRIPLE[target_platform]
   host_triple = PLATFORM_TO_TRIPLE[host_platform]
 
@@ -217,20 +214,19 @@
       step_result = api.step(
           'xcrun', ['xcrun', '--show-sdk-path'],
           stdout=api.raw_io.output(name='sdk-path', add_output_log=True),
-          step_test_data=lambda: api.raw_io.test_api.stream_output(
-              '/some/xcode/path'))
+          step_test_data=
+          lambda: api.raw_io.test_api.stream_output('/some/xcode/path'))
       target_sysroot = host_sysroot = step_result.stdout.strip()
     else:  # pragma: no cover
       assert False, 'unsupported platform'
 
     env = {
-        'CC':
-            ('%s %s' %
-             (api.goma.goma_dir.join('gomacc'), cipd_dir.join('bin', 'clang')))
-            if use_goma else cipd_dir.join('bin', 'clang'),
+        '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),
+            '-O3 -fPIC --target=%s --sysroot=%s' % (target_triple,
+                                                    target_sysroot),
         'AR':
             cipd_dir.join('bin', 'llvm-ar'),
         'NM':
@@ -240,9 +236,14 @@
     }
 
     with api.step.nest('zlib'):
-      build_zlib(api, lib_install_dir, ninja_jobs, manifest, env)
+      zlib_install_dir = staging_dir.join('zlib_install')
+      api.file.ensure_directory('create zlib_install_dir', zlib_install_dir)
+      build_zlib(api, zlib_install_dir, ninja_jobs, manifest, env)
     with api.step.nest('libxml2'):
-      build_libxml2(api, host_triple, target_triple, lib_install_dir,
+      libxml2_install_dir = staging_dir.join('libxml2_install')
+      api.file.ensure_directory('create libxml2_install_dir',
+                                libxml2_install_dir)
+      build_libxml2(api, host_triple, target_triple, libxml2_install_dir,
                     ninja_jobs, manifest, env)
 
     json_manifest = json_format.MessageToJson(
@@ -270,10 +271,6 @@
         'host_triple': host_triple,
         'target_sysroot': target_sysroot,
         'host_sysroot': host_sysroot,
-        'pkgroot_include_dir': lib_install_dir.join('include'),
-        'libxml2_include_dir': lib_install_dir.join('include', 'libxml2'),
-        'platform_lib_dir': cipd_dir.join(target_platform, 'lib'),
-        'pkgroot_lib_dir': lib_install_dir.join('lib'),
         'linux_arm64_sysroot': cipd_dir.join('linux-arm64'),
         'linux_armhf_sysroot': cipd_dir.join('linux-armhf'),
         'linux_i386_sysroot': cipd_dir.join('linux-i386'),
@@ -330,23 +327,41 @@
         'mac': [],
     }[api.platform.name])
 
+    options.extend([
+        '-D{BOOTSTRAP_}CMAKE_C_FLAGS=-I%s' % zlib_install_dir.join('include'),
+        '-D{BOOTSTRAP_}CMAKE_CXX_FLAGS=-I%s' % zlib_install_dir.join('include'),
+        '-D{BOOTSTRAP_}ZLIB_ROOT=%s' % zlib_install_dir,
+        '-D{BOOTSTRAP_}LIBXML2_INCLUDE_DIR=%s' % libxml2_install_dir.join(
+            'include', 'libxml2'),
+        '-D{BOOTSTRAP_}LIBXML2_LIBRARY=%s' % libxml2_install_dir.join(
+            'lib', 'libxml2.a'),
+    ])
+
+    if prod:
+      options.extend([
+          '-DCMAKE_C_FLAGS=-I%s' % zlib_install_dir.join('include'),
+          '-DCMAKE_CXX_FLAGS=-I%s' % zlib_install_dir.join('include'),
+          '-DZLIB_ROOT=%s' % zlib_install_dir,
+          '-DLIBXML2_INCLUDE_DIR=%s' % libxml2_install_dir.join(
+              'include', 'libxml2'),
+          '-DLIBXML2_LIBRARY=%s' % libxml2_install_dir.join('lib', 'libxml2.a'),
+      ])
+
     if api.platform.name == 'linux':
       options.extend([
           # BOOTSTRAP_ prefixed flags are passed to the second stage compiler.
-          '-D{BOOTSTRAP_}CMAKE_C_FLAGS=-I{pkgroot_include_dir} -I{libxml2_include_dir}',
-          '-D{BOOTSTRAP_}CMAKE_CXX_FLAGS=-I{pkgroot_include_dir} -I{libxml2_include_dir}',
-          '-D{BOOTSTRAP_}CMAKE_SHARED_LINKER_FLAGS=-static-libstdc++ -ldl -lpthread -L{platform_lib_dir} -L{pkgroot_lib_dir}',
-          '-D{BOOTSTRAP_}CMAKE_MODULE_LINKER_FLAGS=-static-libstdc++ -ldl -lpthread -L{platform_lib_dir} -L{pkgroot_lib_dir}',
-          '-D{BOOTSTRAP_}CMAKE_EXE_LINKER_FLAGS=-static-libstdc++ -ldl -lpthread -L{platform_lib_dir} -L{pkgroot_lib_dir}',
+          '-D{BOOTSTRAP_}CMAKE_SHARED_LINKER_FLAGS=-static-libstdc++',
+          '-D{BOOTSTRAP_}CMAKE_MODULE_LINKER_FLAGS=-static-libstdc++',
+          '-D{BOOTSTRAP_}CMAKE_EXE_LINKER_FLAGS=-static-libstdc++',
           '-D{BOOTSTRAP_}CMAKE_SYSROOT={target_sysroot}',
       ])
 
       if prod:
         options.extend([
             # Unprefixed flags are used by the first stage compiler.
-            '-DCMAKE_SHARED_LINKER_FLAGS=-static-libstdc++ -ldl -lpthread',
-            '-DCMAKE_MODULE_LINKER_FLAGS=-static-libstdc++ -ldl -lpthread',
-            '-DCMAKE_EXE_LINKER_FLAGS=-static-libstdc++ -ldl -lpthread',
+            '-DCMAKE_SHARED_LINKER_FLAGS=-static-libstdc++',
+            '-DCMAKE_MODULE_LINKER_FLAGS=-static-libstdc++',
+            '-DCMAKE_EXE_LINKER_FLAGS=-static-libstdc++',
             '-DCMAKE_SYSROOT={host_sysroot}',
         ])
       else:
@@ -516,13 +531,13 @@
                       'instance': isolated,
                   },
                   'checkout.buildset':
-                      'commit/gitiles/%s/%s/+/%s' %
-                      (host, project, fuchsia_rev),
+                      'commit/gitiles/%s/%s/+/%s' % (host, project,
+                                                     fuchsia_rev),
               },
               tags={
                   'buildset':
-                      'commit/gitiles/%s/+/%s' %
-                      (repository.split('://')[1], revision),
+                      'commit/gitiles/%s/+/%s' % (repository.split('://')[1],
+                                                  revision),
                   'gitiles_ref':
                       ref,
               }),
@@ -545,17 +560,17 @@
         bucket='ci',
         git_repo='https://fuchsia.googlesource.com/third_party/llvm-project',
         revision='a' * 40,
-    ) + api.runtime(is_luci=True, is_experimental=False) +
-           api.platform.name(os) + api.properties(platform=os + '-amd64'))
+    ) + api.runtime(is_luci=True, is_experimental=False) + api.platform.name(os)
+           + api.properties(platform=os + '-amd64'))
 
     yield (api.test('prod-%s-x64' % os) + api.buildbucket.ci_build(
         project='fuchsia',
         bucket='prod',
         git_repo='https://fuchsia.googlesource.com/third_party/llvm-project',
         revision='a' * 40,
-    ) + api.runtime(is_luci=True, is_experimental=False) +
-           api.platform.name(os) + api.properties(platform=os + '-amd64') +
-           api.gitiles.refs('refs', ('refs/heads/master', 'b' * 40)))
+    ) + api.runtime(is_luci=True, is_experimental=False) + api.platform.name(os)
+           + api.properties(platform=os + '-amd64') + api.gitiles.refs(
+               'refs', ('refs/heads/master', 'b' * 40)))
 
   yield (api.test('linux-arm64') + api.buildbucket.ci_build(
       project='fuchsia',