gn2bp: move sysroot include to cc_default

Order in local_include_dirs matter and -isystem is not supported.
export_system_include_dirs is properly ignored in cc_binary.

Test: none
Change-Id: I22c981727d2a9b11f5b041ef6c6a7b95a05cc030
diff --git a/tools/gn2bp/Android.bp.swp b/tools/gn2bp/Android.bp.swp
index f989cb0..3e44aa4 100644
--- a/tools/gn2bp/Android.bp.swp
+++ b/tools/gn2bp/Android.bp.swp
@@ -226,7 +226,6 @@
             ],
             local_include_dirs: [
                 "third_party/android_ndk/sources/android/cpufeatures/",
-                "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
             ],
         },
         host: {
@@ -239,10 +238,6 @@
                 "-D_LARGEFILE64_SOURCE",
                 "-D_LARGEFILE_SOURCE",
             ],
-            local_include_dirs: [
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include",
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
-            ],
         },
     },
 }
@@ -1006,7 +1001,6 @@
             ],
             local_include_dirs: [
                 "third_party/android_ndk/sources/android/cpufeatures/",
-                "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
             ],
         },
         host: {
@@ -1042,10 +1036,6 @@
                 "-D_LARGEFILE64_SOURCE",
                 "-D_LARGEFILE_SOURCE",
             ],
-            local_include_dirs: [
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include",
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
-            ],
         },
     },
 }
@@ -1359,9 +1349,6 @@
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
                 "-DHAVE_SYS_UIO_H",
             ],
-            local_include_dirs: [
-                "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
-            ],
         },
         host: {
             cflags: [
@@ -1373,10 +1360,6 @@
                 "-D_LARGEFILE64_SOURCE",
                 "-D_LARGEFILE_SOURCE",
             ],
-            local_include_dirs: [
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include",
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
-            ],
         },
     },
 }
@@ -1704,9 +1687,6 @@
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
                 "-DHAVE_SYS_UIO_H",
             ],
-            local_include_dirs: [
-                "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
-            ],
         },
         host: {
             cflags: [
@@ -1718,10 +1698,6 @@
                 "-D_LARGEFILE64_SOURCE",
                 "-D_LARGEFILE_SOURCE",
             ],
-            local_include_dirs: [
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include",
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
-            ],
         },
     },
 }
@@ -1762,9 +1738,6 @@
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
                 "-DHAVE_SYS_UIO_H",
             ],
-            local_include_dirs: [
-                "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
-            ],
         },
         host: {
             cflags: [
@@ -1776,10 +1749,6 @@
                 "-D_LARGEFILE64_SOURCE",
                 "-D_LARGEFILE_SOURCE",
             ],
-            local_include_dirs: [
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include",
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
-            ],
         },
     },
 }
@@ -1821,8 +1790,6 @@
         "buildtools/third_party/libc++/",
         "buildtools/third_party/libc++/trunk/include",
         "buildtools/third_party/libc++abi/trunk/include",
-        "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
-        "build/linux/debian_bullseye_amd64-sysroot/usr/include",
     ],
     cpp_std: "c++20",
 }
@@ -1869,8 +1836,6 @@
         "buildtools/third_party/libc++/",
         "buildtools/third_party/libc++/trunk/include",
         "buildtools/third_party/libc++abi/trunk/include",
-        "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
-        "build/linux/debian_bullseye_amd64-sysroot/usr/include",
     ],
     cpp_std: "c++20",
 }
@@ -1912,8 +1877,6 @@
         "buildtools/third_party/libc++/",
         "buildtools/third_party/libc++/trunk/include",
         "buildtools/third_party/libc++abi/trunk/include",
-        "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
-        "build/linux/debian_bullseye_amd64-sysroot/usr/include",
     ],
     cpp_std: "c++20",
 }
@@ -2248,7 +2211,6 @@
         "third_party/boringssl/src/include/",
         "third_party/protobuf/src/",
         "third_party/zlib/",
-        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
     ],
     header_libs: [
         "jni_headers",
@@ -2639,7 +2601,6 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
         "third_party/boringssl/src/include/",
-        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
     ],
     header_libs: [
         "jni_headers",
@@ -2754,9 +2715,6 @@
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
                 "-DHAVE_SYS_UIO_H",
             ],
-            local_include_dirs: [
-                "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
-            ],
         },
         host: {
             srcs: [
@@ -2778,10 +2736,8 @@
                 "-D_LARGEFILE_SOURCE",
             ],
             local_include_dirs: [
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include",
                 "build/linux/debian_bullseye_amd64-sysroot/usr/include/nspr",
                 "build/linux/debian_bullseye_amd64-sysroot/usr/include/nss",
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
             ],
         },
     },
@@ -2806,6 +2762,24 @@
         "-fvisibility=hidden",
     ],
     stl: "none",
+    target: {
+        android_x86: {
+            export_system_include_dirs: [
+                "build/linux/debian_bullseye_i386-sysroot/usr/include",
+            ],
+        },
+        android_x86_64: {
+            export_system_include_dirs: [
+                "build/linux/debian_bullseye_amd64-sysroot/usr/include",
+                "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
+            ],
+        },
+        host: {
+            export_system_include_dirs: [
+                "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
+            ],
+        },
+    },
 }
 
 // GN: //ipc:param_traits
@@ -3682,7 +3656,6 @@
         "third_party/brotli/include/",
         "third_party/protobuf/src/",
         "third_party/zlib/",
-        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
     ],
     header_libs: [
         "jni_headers",
@@ -3893,7 +3866,6 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
         "third_party/boringssl/src/include/",
-        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
     ],
     cpp_std: "c++20",
 }
@@ -4439,7 +4411,6 @@
         "third_party/boringssl/src/include/",
         "third_party/protobuf/src/",
         "third_party/zlib/",
-        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
     ],
     cpp_std: "c++20",
 }
@@ -4502,7 +4473,6 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
         "third_party/boringssl/src/include/",
-        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
     ],
     cpp_std: "c++20",
 }
@@ -5584,9 +5554,6 @@
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
                 "-DHAVE_SYS_UIO_H",
             ],
-            local_include_dirs: [
-                "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
-            ],
         },
         host: {
             cflags: [
@@ -5598,10 +5565,6 @@
                 "-D_LARGEFILE64_SOURCE",
                 "-D_LARGEFILE_SOURCE",
             ],
-            local_include_dirs: [
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include",
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
-            ],
         },
     },
 }
@@ -5676,7 +5639,6 @@
         "buildtools/third_party/libc++/trunk/include",
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/brotli/include/",
-        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
     ],
     cpp_std: "c++20",
 }
@@ -5720,7 +5682,6 @@
         "buildtools/third_party/libc++/trunk/include",
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/brotli/include/",
-        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
     ],
     cpp_std: "c++20",
 }
@@ -6023,9 +5984,6 @@
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
                 "-DHAVE_SYS_UIO_H",
             ],
-            local_include_dirs: [
-                "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
-            ],
         },
         host: {
             cflags: [
@@ -6037,10 +5995,6 @@
                 "-D_LARGEFILE64_SOURCE",
                 "-D_LARGEFILE_SOURCE",
             ],
-            local_include_dirs: [
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include",
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
-            ],
         },
     },
 }
@@ -6298,9 +6252,6 @@
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
                 "-DHAVE_SYS_UIO_H",
             ],
-            local_include_dirs: [
-                "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
-            ],
         },
         host: {
             cflags: [
@@ -6312,10 +6263,6 @@
                 "-D_LARGEFILE64_SOURCE",
                 "-D_LARGEFILE_SOURCE",
             ],
-            local_include_dirs: [
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include",
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
-            ],
         },
     },
 }
@@ -6376,7 +6323,6 @@
                 "-DHAVE_SYS_UIO_H",
             ],
             local_include_dirs: [
-                "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
                 "third_party/libevent/android/",
             ],
         },
@@ -6391,8 +6337,6 @@
                 "-D_LARGEFILE_SOURCE",
             ],
             local_include_dirs: [
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include",
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
                 "third_party/libevent/linux/",
             ],
         },
@@ -6576,9 +6520,6 @@
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
                 "-DHAVE_SYS_UIO_H",
             ],
-            local_include_dirs: [
-                "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
-            ],
         },
         host: {
             cflags: [
@@ -6590,10 +6531,6 @@
                 "-D_LARGEFILE64_SOURCE",
                 "-D_LARGEFILE_SOURCE",
             ],
-            local_include_dirs: [
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include",
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
-            ],
         },
     },
 }
@@ -6726,8 +6663,6 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/protobuf/src/",
         "third_party/zlib/",
-        "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
-        "build/linux/debian_bullseye_amd64-sysroot/usr/include",
     ],
     cpp_std: "c++20",
 }
@@ -6800,7 +6735,6 @@
         "buildtools/third_party/libc++/trunk/include",
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/protobuf/src/",
-        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
     ],
     cpp_std: "c++20",
 }
@@ -6859,8 +6793,6 @@
         "buildtools/third_party/libc++/trunk/src/",
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/protobuf/src/",
-        "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
-        "build/linux/debian_bullseye_amd64-sysroot/usr/include",
     ],
     cpp_std: "c++20",
     cppflags: [
@@ -6997,8 +6929,6 @@
         "buildtools/third_party/libc++/trunk/include",
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/protobuf/src/",
-        "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
-        "build/linux/debian_bullseye_amd64-sysroot/usr/include",
     ],
     cpp_std: "c++20",
 }
@@ -7074,7 +7004,6 @@
             ],
             local_include_dirs: [
                 "third_party/android_ndk/sources/android/cpufeatures/",
-                "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
             ],
         },
         host: {
@@ -7087,10 +7016,6 @@
                 "-D_LARGEFILE64_SOURCE",
                 "-D_LARGEFILE_SOURCE",
             ],
-            local_include_dirs: [
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include",
-                "build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu",
-            ],
         },
     },
 }
@@ -7237,7 +7162,6 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
         "third_party/boringssl/src/include/",
-        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
     ],
     header_libs: [
         "jni_headers",
diff --git a/tools/gn2bp/gen_android_bp b/tools/gn2bp/gen_android_bp
index ae36ffd..bda4b25 100755
--- a/tools/gn2bp/gen_android_bp
+++ b/tools/gn2bp/gen_android_bp
@@ -209,6 +209,7 @@
     self.stl = None
     self.cppflags = set()
     self.local_include_dirs = []
+    self.export_system_include_dirs = set()
 
   def to_string(self, output):
     nested_out = []
@@ -222,6 +223,7 @@
     self._output_field(nested_out, 'strip')
     self._output_field(nested_out, 'cppflags')
     self._output_field(nested_out, 'local_include_dirs')
+    self._output_field(nested_out, 'export_system_include_dirs')
 
     if nested_out:
       output.append('    %s: {' % self.name)
@@ -989,15 +991,6 @@
                                  if not re.match('^//out/.*', d)])
   module.local_include_dirs = sorted(list(local_include_dirs_set))
 
-  # Order matters for some targets. For example, base/time/time_exploded_icu.cc
-  # in //base:base needs to have sysroot include after icu/source/common
-  # include. So adding sysroot include at the end.
-  for flag in sorted(cflags):
-    if '--sysroot' in flag:
-      sysroot = flag[len('--sysroot=../../'):]
-      if sysroot == "build/linux/debian_bullseye_amd64-sysroot":
-        module.local_include_dirs.append(sysroot + "/usr/include/x86_64-linux-gnu")
-      module.local_include_dirs.append(sysroot + "/usr/include")
 
 def create_modules_from_target(blueprint, gn, gn_target_name):
   """Generate module(s) for a given GN target.
@@ -1226,6 +1219,19 @@
       '-Wno-unreachable-code-loop-increment', # needed for icui18n
       '-O2',
   ]
+  # TODO: can we get these from somewhere else?
+  # TODO: what to do for arm?
+  defaults.target['android_x86'].export_system_include_dirs = [
+      'build/linux/debian_bullseye_i386-sysroot/usr/include',
+  ]
+  defaults.target['android_x86_64'].export_system_include_dirs = [
+      'build/linux/debian_bullseye_amd64-sysroot/usr/include',
+      'build/linux/debian_bullseye_amd64-sysroot/usr/include/x86_64-linux-gnu',
+  ]
+  defaults.target['host'].export_system_include_dirs = [
+      # TODO: do we need this?
+      'third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include',
+  ]
   defaults.stl = 'none'
   blueprint.add_module(defaults)