Kbuild : Use no-export-headers to avoid exporting headers

Add header files under no-export-headers in Kbuild to avoid
exporting specific headers files.

Scan no-export-headers files in Kbuild and add it to exclude list in
kernel_headers.py to avoid exporting header files.

Change-Id: Ice052b5428ef1f7445c5ad2e68c7da8fa7e249ae
Signed-off-by: Naitik Bharadiya <bharad@codeaurora.org>
diff --git a/gen_headers_arm.bp b/gen_headers_arm.bp
index ba80fca..f708dbe 100644
--- a/gen_headers_arm.bp
+++ b/gen_headers_arm.bp
@@ -65,12 +65,10 @@
     "asm-generic/ucontext.h",
     "asm-generic/unistd.h",
     "drm/amdgpu_drm.h",
-    "drm/armada_drm.h",
     "drm/drm.h",
     "drm/drm_fourcc.h",
     "drm/drm_mode.h",
     "drm/drm_sarea.h",
-    "drm/etnaviv_drm.h",
     "drm/exynos_drm.h",
     "drm/i810_drm.h",
     "drm/i915_drm.h",
@@ -78,7 +76,6 @@
     "drm/msm_drm.h",
     "drm/msm_drm_pp.h",
     "drm/nouveau_drm.h",
-    "drm/omap_drm.h",
     "drm/qxl_drm.h",
     "drm/r128_drm.h",
     "drm/radeon_drm.h",
@@ -87,7 +84,6 @@
     "drm/sis_drm.h",
     "drm/tegra_drm.h",
     "drm/vc4_drm.h",
-    "drm/vgem_drm.h",
     "drm/via_drm.h",
     "drm/virtgpu_drm.h",
     "drm/vmwgfx_drm.h",
@@ -120,16 +116,13 @@
     "linux/atmsap.h",
     "linux/atmsvc.h",
     "linux/audit.h",
-    "linux/auto_dev-ioctl.h",
     "linux/auto_fs.h",
     "linux/auto_fs4.h",
     "linux/auxvec.h",
     "linux/ax25.h",
     "linux/b1lli.h",
-    "linux/batman_adv.h",
     "linux/batterydata-interface.h",
     "linux/baycom.h",
-    "linux/bcache.h",
     "linux/bcm933xx_hcs.h",
     "linux/bfs_fs.h",
     "linux/bgcom_interface.h",
@@ -143,7 +136,6 @@
     "linux/bsg.h",
     "linux/bt-bmc.h",
     "linux/btrfs.h",
-    "linux/btrfs_tree.h",
     "linux/can.h",
     "linux/capability.h",
     "linux/capi.h",
@@ -161,7 +153,6 @@
     "linux/const.h",
     "linux/coresight-stm.h",
     "linux/cramfs_fs.h",
-    "linux/cryptouser.h",
     "linux/cuda.h",
     "linux/cyclades.h",
     "linux/cycx_cfm.h",
@@ -175,7 +166,6 @@
     "linux/dlmconstants.h",
     "linux/dm-ioctl.h",
     "linux/dm-log-userspace.h",
-    "linux/dma-buf.h",
     "linux/dn.h",
     "linux/dqblk_xfs.h",
     "linux/edd.h",
@@ -216,7 +206,6 @@
     "linux/gpio.h",
     "linux/gsmmux.h",
     "linux/gtp.h",
-    "linux/hash_info.h",
     "linux/hbtp_input.h",
     "linux/hdlc.h",
     "linux/hdlcdrv.h",
@@ -302,9 +291,7 @@
     "linux/ixjuser.h",
     "linux/jffs2.h",
     "linux/joystick.h",
-    "linux/kcm.h",
     "linux/kcmp.h",
-    "linux/kcov.h",
     "linux/kd.h",
     "linux/kdev_t.h",
     "linux/kernel-page-flags.h",
@@ -313,12 +300,10 @@
     "linux/kexec.h",
     "linux/keyboard.h",
     "linux/keyctl.h",
-    "linux/kfd_ioctl.h",
     "linux/kvm.h",
     "linux/kvm_para.h",
     "linux/l2tp.h",
     "linux/libc-compat.h",
-    "linux/lightnvm.h",
     "linux/limits.h",
     "linux/lirc.h",
     "linux/llc.h",
@@ -345,7 +330,6 @@
     "linux/minix_fs.h",
     "linux/mman.h",
     "linux/mmtimer.h",
-    "linux/module.h",
     "linux/mpls.h",
     "linux/mpls_iptunnel.h",
     "linux/mqueue.h",
@@ -400,10 +384,7 @@
     "linux/nfs_idmap.h",
     "linux/nfs_mount.h",
     "linux/nfsacl.h",
-    "linux/nilfs2_api.h",
-    "linux/nilfs2_ondisk.h",
     "linux/nl80211.h",
-    "linux/nsfs.h",
     "linux/nubus.h",
     "linux/nvme_ioctl.h",
     "linux/nvram.h",
@@ -437,7 +418,6 @@
     "linux/ppp-ioctl.h",
     "linux/ppp_defs.h",
     "linux/pps.h",
-    "linux/pr.h",
     "linux/prctl.h",
     "linux/psci.h",
     "linux/ptp_clock.h",
@@ -450,7 +430,6 @@
     "linux/qnx4_fs.h",
     "linux/qnxtypes.h",
     "linux/qrng.h",
-    "linux/qrtr.h",
     "linux/qseecom.h",
     "linux/quota.h",
     "linux/radeonfb.h",
@@ -504,7 +483,6 @@
     "linux/spcom.h",
     "linux/stat.h",
     "linux/stddef.h",
-    "linux/stm.h",
     "linux/string.h",
     "linux/suspend_ioctls.h",
     "linux/swab.h",
@@ -516,7 +494,6 @@
     "linux/taskstats.h",
     "linux/tcp.h",
     "linux/tcp_metrics.h",
-    "linux/tee.h",
     "linux/telephony.h",
     "linux/termios.h",
     "linux/thermal.h",
@@ -543,7 +520,6 @@
     "linux/usbdevice_fs.h",
     "linux/usbip.h",
     "linux/userfaultfd.h",
-    "linux/userio.h",
     "linux/utime.h",
     "linux/utsname.h",
     "linux/uuid.h",
@@ -579,7 +555,6 @@
     "linux/wait.h",
     "linux/wanrouter.h",
     "linux/watchdog.h",
-    "linux/wil6210_uapi.h",
     "linux/wimax.h",
     "linux/wireless.h",
     "linux/x25.h",
@@ -637,7 +612,6 @@
     "rdma/mthca-abi.h",
     "rdma/nes-abi.h",
     "rdma/ocrdma-abi.h",
-    "rdma/qedr-abi.h",
     "rdma/rdma_netlink.h",
     "rdma/rdma_user_cm.h",
     "rdma/rdma_user_rxe.h",
@@ -662,7 +636,6 @@
     "sound/snd_sst_tokens.h",
     "sound/tlv.h",
     "sound/usb_stream.h",
-    "video/adf.h",
     "video/edid.h",
     "video/msm_hdmi_hdcp_mgr.h",
     "video/msm_hdmi_modes.h",
@@ -682,7 +655,6 @@
     "linux/can/gw.h",
     "linux/can/netlink.h",
     "linux/can/raw.h",
-    "linux/cifs/cifs_mount.h",
     "linux/dvb/audio.h",
     "linux/dvb/ca.h",
     "linux/dvb/dmx.h",
@@ -691,7 +663,6 @@
     "linux/dvb/osd.h",
     "linux/dvb/version.h",
     "linux/dvb/video.h",
-    "linux/genwqe/genwqe_card.h",
     "linux/hdlc/ioctl.h",
     "linux/hsi/cs-protocol.h",
     "linux/hsi/hsi_char.h",
@@ -727,7 +698,6 @@
     "linux/netfilter/xt_CONNSECMARK.h",
     "linux/netfilter/xt_CT.h",
     "linux/netfilter/xt_DSCP.h",
-    "linux/netfilter/xt_HARDIDLETIMER.h",
     "linux/netfilter/xt_HMARK.h",
     "linux/netfilter/xt_IDLETIMER.h",
     "linux/netfilter/xt_LED.h",
@@ -864,8 +834,6 @@
     "linux/usb/cdc.h",
     "linux/usb/ch11.h",
     "linux/usb/ch9.h",
-    "linux/usb/f_accessory.h",
-    "linux/usb/f_mtp.h",
     "linux/usb/functionfs.h",
     "linux/usb/g_printer.h",
     "linux/usb/gadgetfs.h",
@@ -949,6 +917,38 @@
     ],
     exclude_srcs: [
         "include/uapi/linux/a.out.h",
+        "include/uapi/drm/armada_drm.h",
+        "include/uapi/drm/etnaviv_drm.h",
+        "include/uapi/drm/omap_drm.h",
+        "include/uapi/drm/vgem_drm.h",
+        "include/uapi/linux/auto_dev-ioctl.h",
+        "include/uapi/linux/batman_adv.h",
+        "include/uapi/linux/bcache.h",
+        "include/uapi/linux/btrfs_tree.h",
+        "include/uapi/linux/cryptouser.h",
+        "include/uapi/linux/dma-buf.h",
+        "include/uapi/linux/hash_info.h",
+        "include/uapi/linux/kcm.h",
+        "include/uapi/linux/kcov.h",
+        "include/uapi/linux/kfd_ioctl.h",
+        "include/uapi/linux/lightnvm.h",
+        "include/uapi/linux/module.h",
+        "include/uapi/linux/nilfs2_api.h",
+        "include/uapi/linux/nilfs2_ondisk.h",
+        "include/uapi/linux/nsfs.h",
+        "include/uapi/linux/pr.h",
+        "include/uapi/linux/qrtr.h",
+        "include/uapi/linux/stm.h",
+        "include/uapi/linux/tee.h",
+        "include/uapi/linux/userio.h",
+        "include/uapi/linux/wil6210_uapi.h",
+        "include/uapi/rdma/qedr-abi.h",
+        "include/uapi/video/adf.h",
+        "include/uapi/linux/cifs/cifs_mount.h",
+        "include/uapi/linux/genwqe/genwqe_card.h",
+        "include/uapi/linux/netfilter/xt_HARDIDLETIMER.h",
+        "include/uapi/linux/usb/f_accessory.h",
+        "include/uapi/linux/usb/f_mtp.h",
     ],
     cmd: "python3 $(location kernel_headers.py) " +
         kernel_headers_verbose +
diff --git a/gen_headers_arm64.bp b/gen_headers_arm64.bp
index 88ab269..8166644 100644
--- a/gen_headers_arm64.bp
+++ b/gen_headers_arm64.bp
@@ -64,12 +64,10 @@
     "asm-generic/ucontext.h",
     "asm-generic/unistd.h",
     "drm/amdgpu_drm.h",
-    "drm/armada_drm.h",
     "drm/drm.h",
     "drm/drm_fourcc.h",
     "drm/drm_mode.h",
     "drm/drm_sarea.h",
-    "drm/etnaviv_drm.h",
     "drm/exynos_drm.h",
     "drm/i810_drm.h",
     "drm/i915_drm.h",
@@ -77,7 +75,6 @@
     "drm/msm_drm.h",
     "drm/msm_drm_pp.h",
     "drm/nouveau_drm.h",
-    "drm/omap_drm.h",
     "drm/qxl_drm.h",
     "drm/r128_drm.h",
     "drm/radeon_drm.h",
@@ -86,7 +83,6 @@
     "drm/sis_drm.h",
     "drm/tegra_drm.h",
     "drm/vc4_drm.h",
-    "drm/vgem_drm.h",
     "drm/via_drm.h",
     "drm/virtgpu_drm.h",
     "drm/vmwgfx_drm.h",
@@ -119,16 +115,13 @@
     "linux/atmsap.h",
     "linux/atmsvc.h",
     "linux/audit.h",
-    "linux/auto_dev-ioctl.h",
     "linux/auto_fs.h",
     "linux/auto_fs4.h",
     "linux/auxvec.h",
     "linux/ax25.h",
     "linux/b1lli.h",
-    "linux/batman_adv.h",
     "linux/batterydata-interface.h",
     "linux/baycom.h",
-    "linux/bcache.h",
     "linux/bcm933xx_hcs.h",
     "linux/bfs_fs.h",
     "linux/bgcom_interface.h",
@@ -142,7 +135,6 @@
     "linux/bsg.h",
     "linux/bt-bmc.h",
     "linux/btrfs.h",
-    "linux/btrfs_tree.h",
     "linux/can.h",
     "linux/capability.h",
     "linux/capi.h",
@@ -160,7 +152,6 @@
     "linux/const.h",
     "linux/coresight-stm.h",
     "linux/cramfs_fs.h",
-    "linux/cryptouser.h",
     "linux/cuda.h",
     "linux/cyclades.h",
     "linux/cycx_cfm.h",
@@ -174,7 +165,6 @@
     "linux/dlmconstants.h",
     "linux/dm-ioctl.h",
     "linux/dm-log-userspace.h",
-    "linux/dma-buf.h",
     "linux/dn.h",
     "linux/dqblk_xfs.h",
     "linux/edd.h",
@@ -215,7 +205,6 @@
     "linux/gpio.h",
     "linux/gsmmux.h",
     "linux/gtp.h",
-    "linux/hash_info.h",
     "linux/hbtp_input.h",
     "linux/hdlc.h",
     "linux/hdlcdrv.h",
@@ -301,9 +290,7 @@
     "linux/ixjuser.h",
     "linux/jffs2.h",
     "linux/joystick.h",
-    "linux/kcm.h",
     "linux/kcmp.h",
-    "linux/kcov.h",
     "linux/kd.h",
     "linux/kdev_t.h",
     "linux/kernel-page-flags.h",
@@ -312,11 +299,9 @@
     "linux/kexec.h",
     "linux/keyboard.h",
     "linux/keyctl.h",
-    "linux/kfd_ioctl.h",
     "linux/kvm.h",
     "linux/l2tp.h",
     "linux/libc-compat.h",
-    "linux/lightnvm.h",
     "linux/limits.h",
     "linux/lirc.h",
     "linux/llc.h",
@@ -343,7 +328,6 @@
     "linux/minix_fs.h",
     "linux/mman.h",
     "linux/mmtimer.h",
-    "linux/module.h",
     "linux/mpls.h",
     "linux/mpls_iptunnel.h",
     "linux/mqueue.h",
@@ -398,10 +382,7 @@
     "linux/nfs_idmap.h",
     "linux/nfs_mount.h",
     "linux/nfsacl.h",
-    "linux/nilfs2_api.h",
-    "linux/nilfs2_ondisk.h",
     "linux/nl80211.h",
-    "linux/nsfs.h",
     "linux/nubus.h",
     "linux/nvme_ioctl.h",
     "linux/nvram.h",
@@ -435,7 +416,6 @@
     "linux/ppp-ioctl.h",
     "linux/ppp_defs.h",
     "linux/pps.h",
-    "linux/pr.h",
     "linux/prctl.h",
     "linux/psci.h",
     "linux/ptp_clock.h",
@@ -448,7 +428,6 @@
     "linux/qnx4_fs.h",
     "linux/qnxtypes.h",
     "linux/qrng.h",
-    "linux/qrtr.h",
     "linux/qseecom.h",
     "linux/quota.h",
     "linux/radeonfb.h",
@@ -502,7 +481,6 @@
     "linux/spcom.h",
     "linux/stat.h",
     "linux/stddef.h",
-    "linux/stm.h",
     "linux/string.h",
     "linux/suspend_ioctls.h",
     "linux/swab.h",
@@ -514,7 +492,6 @@
     "linux/taskstats.h",
     "linux/tcp.h",
     "linux/tcp_metrics.h",
-    "linux/tee.h",
     "linux/telephony.h",
     "linux/termios.h",
     "linux/thermal.h",
@@ -541,7 +518,6 @@
     "linux/usbdevice_fs.h",
     "linux/usbip.h",
     "linux/userfaultfd.h",
-    "linux/userio.h",
     "linux/utime.h",
     "linux/utsname.h",
     "linux/uuid.h",
@@ -577,7 +553,6 @@
     "linux/wait.h",
     "linux/wanrouter.h",
     "linux/watchdog.h",
-    "linux/wil6210_uapi.h",
     "linux/wimax.h",
     "linux/wireless.h",
     "linux/x25.h",
@@ -635,7 +610,6 @@
     "rdma/mthca-abi.h",
     "rdma/nes-abi.h",
     "rdma/ocrdma-abi.h",
-    "rdma/qedr-abi.h",
     "rdma/rdma_netlink.h",
     "rdma/rdma_user_cm.h",
     "rdma/rdma_user_rxe.h",
@@ -660,7 +634,6 @@
     "sound/snd_sst_tokens.h",
     "sound/tlv.h",
     "sound/usb_stream.h",
-    "video/adf.h",
     "video/edid.h",
     "video/msm_hdmi_hdcp_mgr.h",
     "video/msm_hdmi_modes.h",
@@ -680,7 +653,6 @@
     "linux/can/gw.h",
     "linux/can/netlink.h",
     "linux/can/raw.h",
-    "linux/cifs/cifs_mount.h",
     "linux/dvb/audio.h",
     "linux/dvb/ca.h",
     "linux/dvb/dmx.h",
@@ -689,7 +661,6 @@
     "linux/dvb/osd.h",
     "linux/dvb/version.h",
     "linux/dvb/video.h",
-    "linux/genwqe/genwqe_card.h",
     "linux/hdlc/ioctl.h",
     "linux/hsi/cs-protocol.h",
     "linux/hsi/hsi_char.h",
@@ -725,7 +696,6 @@
     "linux/netfilter/xt_CONNSECMARK.h",
     "linux/netfilter/xt_CT.h",
     "linux/netfilter/xt_DSCP.h",
-    "linux/netfilter/xt_HARDIDLETIMER.h",
     "linux/netfilter/xt_HMARK.h",
     "linux/netfilter/xt_IDLETIMER.h",
     "linux/netfilter/xt_LED.h",
@@ -862,8 +832,6 @@
     "linux/usb/cdc.h",
     "linux/usb/ch11.h",
     "linux/usb/ch9.h",
-    "linux/usb/f_accessory.h",
-    "linux/usb/f_mtp.h",
     "linux/usb/functionfs.h",
     "linux/usb/g_printer.h",
     "linux/usb/gadgetfs.h",
@@ -945,6 +913,38 @@
     exclude_srcs: [
         "include/uapi/linux/a.out.h",
         "include/uapi/linux/kvm_para.h",
+        "include/uapi/drm/armada_drm.h",
+        "include/uapi/drm/etnaviv_drm.h",
+        "include/uapi/drm/omap_drm.h",
+        "include/uapi/drm/vgem_drm.h",
+        "include/uapi/linux/auto_dev-ioctl.h",
+        "include/uapi/linux/batman_adv.h",
+        "include/uapi/linux/bcache.h",
+        "include/uapi/linux/btrfs_tree.h",
+        "include/uapi/linux/cryptouser.h",
+        "include/uapi/linux/dma-buf.h",
+        "include/uapi/linux/hash_info.h",
+        "include/uapi/linux/kcm.h",
+        "include/uapi/linux/kcov.h",
+        "include/uapi/linux/kfd_ioctl.h",
+        "include/uapi/linux/lightnvm.h",
+        "include/uapi/linux/module.h",
+        "include/uapi/linux/nilfs2_api.h",
+        "include/uapi/linux/nilfs2_ondisk.h",
+        "include/uapi/linux/nsfs.h",
+        "include/uapi/linux/pr.h",
+        "include/uapi/linux/qrtr.h",
+        "include/uapi/linux/stm.h",
+        "include/uapi/linux/tee.h",
+        "include/uapi/linux/userio.h",
+        "include/uapi/linux/wil6210_uapi.h",
+        "include/uapi/rdma/qedr-abi.h",
+        "include/uapi/video/adf.h",
+        "include/uapi/linux/cifs/cifs_mount.h",
+        "include/uapi/linux/genwqe/genwqe_card.h",
+        "include/uapi/linux/netfilter/xt_HARDIDLETIMER.h",
+        "include/uapi/linux/usb/f_accessory.h",
+        "include/uapi/linux/usb/f_mtp.h",
     ],
     cmd: "python3 $(location kernel_headers.py) " +
         kernel_headers_verbose +
diff --git a/include/uapi/drm/Kbuild b/include/uapi/drm/Kbuild
new file mode 100644
index 0000000..74758ea
--- /dev/null
+++ b/include/uapi/drm/Kbuild
@@ -0,0 +1,5 @@
+# UAPI Header export list
+no-export-headers += armada_drm.h
+no-export-headers += etnaviv_drm.h
+no-export-headers += omap_drm.h
+no-export-headers += vgem_drm.h
diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild
index 93993cb..8878609 100644
--- a/include/uapi/linux/Kbuild
+++ b/include/uapi/linux/Kbuild
@@ -15,6 +15,28 @@
 no-export-headers += kvm_para.h
 endif
 
+no-export-headers += auto_dev-ioctl.h
+no-export-headers += batman_adv.h
+no-export-headers += bcache.h
+no-export-headers += btrfs_tree.h
+no-export-headers += cryptouser.h
+no-export-headers += dma-buf.h
+no-export-headers += hash_info.h
+no-export-headers += kcm.h
+no-export-headers += kcov.h
+no-export-headers += kfd_ioctl.h
+no-export-headers += lightnvm.h
+no-export-headers += module.h
+no-export-headers += nilfs2_api.h
+no-export-headers += nilfs2_ondisk.h
+no-export-headers += nsfs.h
+no-export-headers += pr.h
+no-export-headers += qrtr.h
+no-export-headers += stm.h
+no-export-headers += tee.h
+no-export-headers += userio.h
+no-export-headers += wil6210_uapi.h
+
 header-y += mhi.h
 header-y += sockev.h
 header-y += nfc/
diff --git a/include/uapi/linux/cifs/Kbuild b/include/uapi/linux/cifs/Kbuild
new file mode 100644
index 0000000..c922dbe
--- /dev/null
+++ b/include/uapi/linux/cifs/Kbuild
@@ -0,0 +1,2 @@
+# UAPI Header export list
+no-export-headers += cifs_mount.h
diff --git a/include/uapi/linux/genwqe/Kbuild b/include/uapi/linux/genwqe/Kbuild
new file mode 100644
index 0000000..b50fc21
--- /dev/null
+++ b/include/uapi/linux/genwqe/Kbuild
@@ -0,0 +1,2 @@
+# UAPI Header export list
+no-export-headers += genwqe_card.h
diff --git a/include/uapi/linux/netfilter/Kbuild b/include/uapi/linux/netfilter/Kbuild
new file mode 100644
index 0000000..6b00ca2
--- /dev/null
+++ b/include/uapi/linux/netfilter/Kbuild
@@ -0,0 +1,2 @@
+# UAPI Header export list
+no-export-headers += xt_HARDIDLETIMER.h
diff --git a/include/uapi/linux/usb/Kbuild b/include/uapi/linux/usb/Kbuild
new file mode 100644
index 0000000..e511bf6
--- /dev/null
+++ b/include/uapi/linux/usb/Kbuild
@@ -0,0 +1,3 @@
+# UAPI Header export list
+no-export-headers += f_accessory.h
+no-export-headers += f_mtp.h
diff --git a/include/uapi/rdma/Kbuild b/include/uapi/rdma/Kbuild
new file mode 100644
index 0000000..c2a45be
--- /dev/null
+++ b/include/uapi/rdma/Kbuild
@@ -0,0 +1,2 @@
+# UAPI Header export list
+no-export-headers += qedr-abi.h
diff --git a/include/uapi/video/Kbuild b/include/uapi/video/Kbuild
new file mode 100644
index 0000000..35ee3b6
--- /dev/null
+++ b/include/uapi/video/Kbuild
@@ -0,0 +1,2 @@
+# UAPI Header export list
+no-export-headers += adf.h
diff --git a/kernel_headers.py b/kernel_headers.py
index 5dfaadc..7a7660c 100644
--- a/kernel_headers.py
+++ b/kernel_headers.py
@@ -478,6 +478,81 @@
 
   return error_count
 
+def scan_no_export_headers(verbose, module_dir, prefix):
+  """Scan include/uapi kbuild for no-export-headers
+
+  This function processes the Kbuild file to scan for no-export files that
+  should not export to usr/include/uapi which is identified by adding
+  to the no-export-headers make variable.
+
+  Args:
+    verbose: Set True to print progress messages.
+    module_dir: The root directory of the kernel source.
+    prefix: The prefix with in the kernel source tree to search for headers.
+  Return:
+    lists of no-export-headers.
+  """
+
+  no_export_headers_re = re.compile(r'no-export-headers\s*\+=\s*(\S+)')
+  header_re = re.compile(r'include/uapi/')
+  full_dirs_ = os.path.join(module_dir, prefix)
+  full_dirs = [full_dirs_]
+
+  if verbose:
+    print('scan_no_export_headers: processing [%s]' % full_dirs)
+
+  full_srcs = []
+  no_export_headers_lists = []
+
+  while full_dirs:
+    full_dir = full_dirs.pop(0)
+    items = sorted(os.listdir(full_dir))
+
+    for item in items:
+      full_item = os.path.join(full_dir, item)
+
+      if os.path.isdir(full_item):
+        full_dirs.append(full_item)
+        continue
+
+      if (full_item.find('Kbuild') != -1):
+        full_srcs.append(full_item)
+
+  for full_src in full_srcs:
+    with open(full_src, 'r') as f:
+      while True:
+        line = f.readline()
+
+        if not line:
+          break
+
+        line = line.rstrip()
+
+        match = no_export_headers_re.match(line)
+
+        if match:
+          if verbose:
+            print('scan_no_export_headers: matched [%s]' % line)
+
+          if (match.group(1) == "kvm.h" or
+              match.group(1) == "kvm_para.h" or
+              match.group(1) == "a.out.h"):
+              continue
+
+          (full_src_dir_name, full_src_base_name) = full_src.split('include/uapi/')
+          no_export_header_file_name = os.path.join(os.path.dirname(full_src_base_name),match.group(1))
+
+          if verbose:
+            print('scan_no_export_headers: no_export_header_file_name = ',no_export_header_file_name)
+
+          no_export_headers_lists.append(no_export_header_file_name)
+          continue
+
+  if verbose:
+    for x in no_export_headers_lists:
+      print('scan_no_export_headers: no_export_headers_lists [%s]' % x)
+
+  return no_export_headers_lists
 
 def gen_blueprints(
     verbose, header_arch, gen_dir, arch_asm_kbuild, asm_generic_kbuild, module_dir,
@@ -533,6 +608,15 @@
   if header_arch == "arm64":
     exclude_srcs = ['linux/a.out.h', 'linux/kvm_para.h']
 
+  no_export_headers_lists = scan_no_export_headers(verbose, module_dir, generic_prefix)
+
+  for no_export_headers_list in no_export_headers_lists:
+    exclude_srcs.append(no_export_headers_list)
+
+  if verbose:
+    for x in exclude_srcs:
+      print('gen_blueprints : exclude_srcs [%s]' % x)
+
   # Scan the arch_asm_kbuild file for files that need to be generated and those
   # that are generic (i.e., need to be wrapped).