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>
[schikk@codeaurora.org: resolve trivial merge conflicts]
Signed-off-by: Swetha Chikkaboraiah <schikk@codeaurora.org>
This commit is contained in:
Naitik Bharadiya 2020-02-27 16:39:22 +05:30 committed by Gerrit - the friendly Code Review server
parent a99e3ea584
commit 04e6f16c0c
13 changed files with 178 additions and 56 deletions

View file

@ -64,8 +64,6 @@ gen_headers_arm = [
"asm-generic/types.h",
"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",
@ -77,7 +75,6 @@ gen_headers_arm = [
"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",
@ -127,7 +124,6 @@ gen_headers_arm = [
"linux/b1lli.h",
"linux/batterydata-interface.h",
"linux/baycom.h",
"linux/bcache.h",
"linux/bcm933xx_hcs.h",
"linux/bfs_fs.h",
"linux/binfmts.h",
@ -155,9 +151,7 @@ gen_headers_arm = [
"linux/coff.h",
"linux/connector.h",
"linux/const.h",
"linux/coresight-stm.h",
"linux/cramfs_fs.h",
"linux/cryptouser.h",
"linux/cuda.h",
"linux/cyclades.h",
"linux/cycx_cfm.h",
@ -211,7 +205,6 @@ gen_headers_arm = [
"linux/gsmmux.h",
"linux/hab_ioctl.h",
"linux/habmmid.h",
"linux/hash_info.h",
"linux/hbtp_input.h",
"linux/hbtp_vm.h",
"linux/hdlc.h",
@ -299,7 +292,6 @@ gen_headers_arm = [
"linux/jffs2.h",
"linux/joystick.h",
"linux/kcmp.h",
"linux/kcov.h",
"linux/kd.h",
"linux/kdev_t.h",
"linux/kernel-page-flags.h",
@ -307,14 +299,11 @@ gen_headers_arm = [
"linux/kernelcapi.h",
"linux/kexec.h",
"linux/keyboard.h",
"linux/keychord.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/llc.h",
"linux/loop.h",
@ -341,7 +330,6 @@ gen_headers_arm = [
"linux/minix_fs.h",
"linux/mman.h",
"linux/mmtimer.h",
"linux/module.h",
"linux/mpls.h",
"linux/mpls_iptunnel.h",
"linux/mqueue.h",
@ -449,7 +437,6 @@ gen_headers_arm = [
"linux/ppp-ioctl.h",
"linux/ppp_defs.h",
"linux/pps.h",
"linux/pr.h",
"linux/prctl.h",
"linux/psci.h",
"linux/ptp_clock.h",
@ -512,7 +499,6 @@ gen_headers_arm = [
"linux/spcom.h",
"linux/stat.h",
"linux/stddef.h",
"linux/stm.h",
"linux/string.h",
"linux/suspend_ioctls.h",
"linux/sw_sync.h",
@ -525,7 +511,6 @@ gen_headers_arm = [
"linux/taskstats.h",
"linux/tcp.h",
"linux/tcp_metrics.h",
"linux/tee.h",
"linux/telephony.h",
"linux/termios.h",
"linux/thermal.h",
@ -552,7 +537,6 @@ gen_headers_arm = [
"linux/usbdevice_fs.h",
"linux/usbip.h",
"linux/userfaultfd.h",
"linux/userio.h",
"linux/utime.h",
"linux/utsname.h",
"linux/uuid.h",
@ -582,12 +566,10 @@ gen_headers_arm = [
"linux/virtio_types.h",
"linux/virtio_vsock.h",
"linux/vm_sockets.h",
"linux/vsp1.h",
"linux/vt.h",
"linux/wait.h",
"linux/wanrouter.h",
"linux/watchdog.h",
"linux/wil6210_uapi.h",
"linux/wimax.h",
"linux/wireless.h",
"linux/x25.h",
@ -637,7 +619,6 @@ gen_headers_arm = [
"scsi/scsi_netlink_fc.h",
"scsi/sg.h",
"sound/asequencer.h",
"sound/asoc.h",
"sound/asound.h",
"sound/asound_fm.h",
"sound/audio_effects.h",
@ -654,11 +635,9 @@ gen_headers_arm = [
"sound/sb16_csp.h",
"sound/sfnt_info.h",
"sound/tlv.h",
"sound/usb_stream.h",
"sound/voice_params.h",
"sound/voice_svc.h",
"sound/wcd-dsp-glink.h",
"video/adf.h",
"video/edid.h",
"video/msm_hdmi_hdcp_mgr.h",
"video/msm_hdmi_modes.h",
@ -678,7 +657,6 @@ gen_headers_arm = [
"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",
@ -687,8 +665,6 @@ gen_headers_arm = [
"linux/dvb/osd.h",
"linux/dvb/version.h",
"linux/dvb/video.h",
"linux/genwqe/genwqe_card.h",
"linux/goldfish/goldfish_dma.h",
"linux/hdlc/ioctl.h",
"linux/hsi/cs-protocol.h",
"linux/hsi/hsi_char.h",
@ -723,7 +699,6 @@ gen_headers_arm = [
"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",
@ -733,7 +708,6 @@ gen_headers_arm = [
"linux/netfilter/xt_NFQUEUE.h",
"linux/netfilter/xt_RATEEST.h",
"linux/netfilter/xt_SECMARK.h",
"linux/netfilter/xt_SYNPROXY.h",
"linux/netfilter/xt_TCPMSS.h",
"linux/netfilter/xt_TCPOPTSTRIP.h",
"linux/netfilter/xt_TEE.h",
@ -856,8 +830,6 @@ gen_headers_arm = [
"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",
@ -948,6 +920,34 @@ genrule {
],
exclude_srcs: [
"include/uapi/linux/a.out.h",
"include/uapi/drm/amdgpu_drm.h",
"include/uapi/drm/armada_drm.h",
"include/uapi/drm/omap_drm.h",
"include/uapi/linux/bcache.h",
"include/uapi/linux/cryptouser.h",
"include/uapi/linux/coresight-stm.h",
"include/uapi/linux/hash_info.h",
"include/uapi/linux/kcov.h",
"include/uapi/linux/keychord.h",
"include/uapi/linux/kfd_ioctl.h",
"include/uapi/linux/lightnvm.h",
"include/uapi/linux/module.h",
"include/uapi/linux/pr.h",
"include/uapi/linux/stm.h",
"include/uapi/linux/tee.h",
"include/uapi/linux/userio.h",
"include/uapi/linux/vsp1.h",
"include/uapi/linux/wil6210_uapi.h",
"include/uapi/sound/asoc.h",
"include/uapi/sound/usb_stream.h",
"include/uapi/video/adf.h",
"include/uapi/linux/cifs/cifs_mount.h",
"include/uapi/linux/genwqe/genwqe_card.h",
"include/uapi/linux/goldfish/goldfish_dma.h",
"include/uapi/linux/netfilter/xt_HARDIDLETIMER.h",
"include/uapi/linux/netfilter/xt_SYNPROXY.h",
"include/uapi/linux/usb/f_accessory.h",
"include/uapi/linux/usb/f_mtp.h",
],
cmd: "python3 $(location kernel_headers.py) " +
kernel_headers_verbose +

View file

@ -63,8 +63,6 @@ gen_headers_arm64 = [
"asm-generic/types.h",
"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",
@ -76,7 +74,6 @@ gen_headers_arm64 = [
"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",
@ -126,7 +123,6 @@ gen_headers_arm64 = [
"linux/b1lli.h",
"linux/batterydata-interface.h",
"linux/baycom.h",
"linux/bcache.h",
"linux/bcm933xx_hcs.h",
"linux/bfs_fs.h",
"linux/binfmts.h",
@ -154,9 +150,7 @@ gen_headers_arm64 = [
"linux/coff.h",
"linux/connector.h",
"linux/const.h",
"linux/coresight-stm.h",
"linux/cramfs_fs.h",
"linux/cryptouser.h",
"linux/cuda.h",
"linux/cyclades.h",
"linux/cycx_cfm.h",
@ -210,7 +204,6 @@ gen_headers_arm64 = [
"linux/gsmmux.h",
"linux/hab_ioctl.h",
"linux/habmmid.h",
"linux/hash_info.h",
"linux/hbtp_input.h",
"linux/hbtp_vm.h",
"linux/hdlc.h",
@ -298,7 +291,6 @@ gen_headers_arm64 = [
"linux/jffs2.h",
"linux/joystick.h",
"linux/kcmp.h",
"linux/kcov.h",
"linux/kd.h",
"linux/kdev_t.h",
"linux/kernel-page-flags.h",
@ -306,13 +298,10 @@ gen_headers_arm64 = [
"linux/kernelcapi.h",
"linux/kexec.h",
"linux/keyboard.h",
"linux/keychord.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/llc.h",
"linux/loop.h",
@ -339,7 +328,6 @@ gen_headers_arm64 = [
"linux/minix_fs.h",
"linux/mman.h",
"linux/mmtimer.h",
"linux/module.h",
"linux/mpls.h",
"linux/mpls_iptunnel.h",
"linux/mqueue.h",
@ -447,7 +435,6 @@ gen_headers_arm64 = [
"linux/ppp-ioctl.h",
"linux/ppp_defs.h",
"linux/pps.h",
"linux/pr.h",
"linux/prctl.h",
"linux/psci.h",
"linux/ptp_clock.h",
@ -510,7 +497,6 @@ gen_headers_arm64 = [
"linux/spcom.h",
"linux/stat.h",
"linux/stddef.h",
"linux/stm.h",
"linux/string.h",
"linux/suspend_ioctls.h",
"linux/sw_sync.h",
@ -523,7 +509,6 @@ gen_headers_arm64 = [
"linux/taskstats.h",
"linux/tcp.h",
"linux/tcp_metrics.h",
"linux/tee.h",
"linux/telephony.h",
"linux/termios.h",
"linux/thermal.h",
@ -550,7 +535,6 @@ gen_headers_arm64 = [
"linux/usbdevice_fs.h",
"linux/usbip.h",
"linux/userfaultfd.h",
"linux/userio.h",
"linux/utime.h",
"linux/utsname.h",
"linux/uuid.h",
@ -580,12 +564,10 @@ gen_headers_arm64 = [
"linux/virtio_types.h",
"linux/virtio_vsock.h",
"linux/vm_sockets.h",
"linux/vsp1.h",
"linux/vt.h",
"linux/wait.h",
"linux/wanrouter.h",
"linux/watchdog.h",
"linux/wil6210_uapi.h",
"linux/wimax.h",
"linux/wireless.h",
"linux/x25.h",
@ -635,7 +617,6 @@ gen_headers_arm64 = [
"scsi/scsi_netlink_fc.h",
"scsi/sg.h",
"sound/asequencer.h",
"sound/asoc.h",
"sound/asound.h",
"sound/asound_fm.h",
"sound/audio_effects.h",
@ -652,11 +633,9 @@ gen_headers_arm64 = [
"sound/sb16_csp.h",
"sound/sfnt_info.h",
"sound/tlv.h",
"sound/usb_stream.h",
"sound/voice_params.h",
"sound/voice_svc.h",
"sound/wcd-dsp-glink.h",
"video/adf.h",
"video/edid.h",
"video/msm_hdmi_hdcp_mgr.h",
"video/msm_hdmi_modes.h",
@ -676,7 +655,6 @@ gen_headers_arm64 = [
"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",
@ -685,8 +663,6 @@ gen_headers_arm64 = [
"linux/dvb/osd.h",
"linux/dvb/version.h",
"linux/dvb/video.h",
"linux/genwqe/genwqe_card.h",
"linux/goldfish/goldfish_dma.h",
"linux/hdlc/ioctl.h",
"linux/hsi/cs-protocol.h",
"linux/hsi/hsi_char.h",
@ -721,7 +697,6 @@ gen_headers_arm64 = [
"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",
@ -731,7 +706,6 @@ gen_headers_arm64 = [
"linux/netfilter/xt_NFQUEUE.h",
"linux/netfilter/xt_RATEEST.h",
"linux/netfilter/xt_SECMARK.h",
"linux/netfilter/xt_SYNPROXY.h",
"linux/netfilter/xt_TCPMSS.h",
"linux/netfilter/xt_TCPOPTSTRIP.h",
"linux/netfilter/xt_TEE.h",
@ -854,8 +828,6 @@ gen_headers_arm64 = [
"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",
@ -944,6 +916,34 @@ genrule {
exclude_srcs: [
"include/uapi/linux/a.out.h",
"include/uapi/linux/kvm_para.h",
"include/uapi/drm/amdgpu_drm.h",
"include/uapi/drm/armada_drm.h",
"include/uapi/drm/omap_drm.h",
"include/uapi/linux/bcache.h",
"include/uapi/linux/cryptouser.h",
"include/uapi/linux/coresight-stm.h",
"include/uapi/linux/hash_info.h",
"include/uapi/linux/kcov.h",
"include/uapi/linux/keychord.h",
"include/uapi/linux/kfd_ioctl.h",
"include/uapi/linux/lightnvm.h",
"include/uapi/linux/module.h",
"include/uapi/linux/pr.h",
"include/uapi/linux/stm.h",
"include/uapi/linux/tee.h",
"include/uapi/linux/userio.h",
"include/uapi/linux/vsp1.h",
"include/uapi/linux/wil6210_uapi.h",
"include/uapi/sound/asoc.h",
"include/uapi/sound/usb_stream.h",
"include/uapi/video/adf.h",
"include/uapi/linux/cifs/cifs_mount.h",
"include/uapi/linux/genwqe/genwqe_card.h",
"include/uapi/linux/goldfish/goldfish_dma.h",
"include/uapi/linux/netfilter/xt_HARDIDLETIMER.h",
"include/uapi/linux/netfilter/xt_SYNPROXY.h",
"include/uapi/linux/usb/f_accessory.h",
"include/uapi/linux/usb/f_mtp.h",
],
cmd: "python3 $(location kernel_headers.py) " +
kernel_headers_verbose +

4
include/uapi/drm/Kbuild Normal file
View file

@ -0,0 +1,4 @@
# UAPI Header export list
no-export-headers += amdgpu_drm.h
no-export-headers += armada_drm.h
no-export-headers += omap_drm.h

View file

@ -13,6 +13,22 @@ ifeq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/kvm_para.h),)
no-export-headers += kvm_para.h
endif
no-export-headers += bcache.h
no-export-headers += cryptouser.h
no-export-headers += coresight-stm.h
no-export-headers += hash_info.h
no-export-headers += kcov.h
no-export-headers += keychord.h
no-export-headers += kfd_ioctl.h
no-export-headers += lightnvm.h
no-export-headers += module.h
no-export-headers += pr.h
no-export-headers += stm.h
no-export-headers += tee.h
no-export-headers += userio.h
no-export-headers += vsp1.h
no-export-headers += wil6210_uapi.h
ifeq ($(VSERVICES_SUPPORT), "")
include include/linux/Kbuild.vservices
endif

View file

@ -0,0 +1,2 @@
# UAPI Header export list
no-export-headers += cifs_mount.h

View file

@ -0,0 +1,2 @@
# UAPI Header export list
no-export-headers += genwqe_card.h

View file

@ -0,0 +1,2 @@
# UAPI Header export list
no-export-headers += goldfish_dma.h

View file

@ -0,0 +1,3 @@
# UAPI Header export list
no-export-headers += xt_HARDIDLETIMER.h
no-export-headers += xt_SYNPROXY.h

View file

@ -0,0 +1,3 @@
# UAPI Header export list
no-export-headers += f_accessory.h
no-export-headers += f_mtp.h

1
include/uapi/rdma/Kbuild Normal file
View file

@ -0,0 +1 @@
# UAPI Header export list

View file

@ -0,0 +1,3 @@
#UAPI Header export list
no-export-headers += asoc.h
no-export-headers += usb_stream.h

View file

@ -0,0 +1,2 @@
# UAPI Header export list
no-export-headers += adf.h

View file

@ -478,6 +478,81 @@ def find_out(verbose, module_dir, prefix, rel_glob, excludes, outs):
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 @@ def gen_blueprints(
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).