[PATCH 2/3] kbuild: detect missing header include guard

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Our convention is to surround the whole of the header content with an
include guard. This avoids the same header being parsed over again
when it is included multiple times.

The header-test-y syntax allows the comprehensive sanity checks of
headers. This commit adds another check; if include guard is missing,
the header will fail to build due to redefinition of something.

More headers must be excluded from the test-coverage for now.

Signed-off-by: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx>
Reviewed-by: Sam Ravnborg <sam@xxxxxxxxxxxx>
---

 include/Kbuild         | 26 ++++++++++++++++++++++++++
 scripts/Makefile.build |  3 ++-
 usr/include/Makefile   |  3 +++
 3 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/include/Kbuild b/include/Kbuild
index ffba79483cc5..4c49b9ae4b4d 100644
--- a/include/Kbuild
+++ b/include/Kbuild
@@ -133,6 +133,7 @@ header-test-			+= linux/cyclades.h
 header-test-			+= linux/dcookies.h
 header-test-			+= linux/delayacct.h
 header-test-			+= linux/delayed_call.h
+header-test-			+= linux/device_cgroup.h
 header-test-			+= linux/device-mapper.h
 header-test-			+= linux/devpts_fs.h
 header-test-			+= linux/dio.h
@@ -146,12 +147,15 @@ header-test-			+= linux/dma/sprd-dma.h
 header-test-			+= linux/dns_resolver.h
 header-test-			+= linux/drbd_genl.h
 header-test-			+= linux/drbd_genl_api.h
+header-test-			+= linux/dsa/lan9303.h
+header-test-			+= linux/dtlk.h
 header-test-			+= linux/dw_apb_timer.h
 header-test-			+= linux/dynamic_debug.h
 header-test-			+= linux/dynamic_queue_limits.h
 header-test-			+= linux/ecryptfs.h
 header-test-			+= linux/edma.h
 header-test-			+= linux/eeprom_93cx6.h
+header-test-			+= linux/eeprom_93xx46.h
 header-test-			+= linux/efs_vh.h
 header-test-			+= linux/elevator.h
 header-test-			+= linux/elfcore-compat.h
@@ -169,6 +173,7 @@ header-test-			+= linux/firmware/trusted_foundations.h
 header-test-			+= linux/firmware/xlnx-zynqmp.h
 header-test-			+= linux/fixp-arith.h
 header-test-			+= linux/flat.h
+header-test-			+= linux/fs_pin.h
 header-test-			+= linux/fs_types.h
 header-test-			+= linux/fs_uart_pd.h
 header-test-			+= linux/fsi-occ.h
@@ -189,6 +194,7 @@ header-test-			+= linux/gpio/aspeed.h
 header-test-			+= linux/gpio/gpio-reg.h
 header-test-			+= linux/hid-debug.h
 header-test-			+= linux/hiddev.h
+header-test-			+= linux/hil_mlc.h
 header-test-			+= linux/hippidevice.h
 header-test-			+= linux/hmm.h
 header-test-			+= linux/hp_sdc.h
@@ -237,6 +243,7 @@ header-test-			+= linux/input/bu21013.h
 header-test-			+= linux/input/cma3000.h
 header-test-			+= linux/input/kxtj9.h
 header-test-			+= linux/input/lm8333.h
+header-test-			+= linux/input/navpoint.h
 header-test-			+= linux/input/sparse-keymap.h
 header-test-			+= linux/input/touchscreen.h
 header-test-			+= linux/input/tps6507x-ts.h
@@ -327,6 +334,7 @@ header-test-			+= linux/mfd/lpc_ich.h
 header-test-			+= linux/mfd/max77693.h
 header-test-			+= linux/mfd/max8998-private.h
 header-test-			+= linux/mfd/menelaus.h
+header-test-			+= linux/mfd/motorola-cpcap.h
 header-test-			+= linux/mfd/mt6397/core.h
 header-test-			+= linux/mfd/palmas.h
 header-test-			+= linux/mfd/pcf50633/backlight.h
@@ -448,6 +456,7 @@ header-test-			+= linux/platform_data/ads7828.h
 header-test-			+= linux/platform_data/apds990x.h
 header-test-			+= linux/platform_data/arm-ux500-pm.h
 header-test-			+= linux/platform_data/asoc-s3c.h
+header-test-			+= linux/platform_data/asoc-s3c24xx_simtec.h
 header-test-			+= linux/platform_data/at91_adc.h
 header-test-			+= linux/platform_data/ata-pxa.h
 header-test-			+= linux/platform_data/atmel.h
@@ -479,14 +488,17 @@ header-test-			+= linux/platform_data/i2c-imx.h
 header-test-			+= linux/platform_data/i2c-mux-reg.h
 header-test-			+= linux/platform_data/i2c-ocores.h
 header-test-			+= linux/platform_data/i2c-xiic.h
+header-test-			+= linux/platform_data/ina2xx.h
 header-test-			+= linux/platform_data/intel-spi.h
 header-test-			+= linux/platform_data/invensense_mpu6050.h
+header-test-			+= linux/platform_data/iommu-omap.h
 header-test-			+= linux/platform_data/irda-pxaficp.h
 header-test-			+= linux/platform_data/irda-sa11x0.h
 header-test-			+= linux/platform_data/itco_wdt.h
 header-test-			+= linux/platform_data/jz4740/jz4740_nand.h
 header-test-			+= linux/platform_data/keyboard-pxa930_rotary.h
 header-test-			+= linux/platform_data/keypad-omap.h
+header-test-			+= linux/platform_data/leds-lm355x.h
 header-test-			+= linux/platform_data/leds-lp55xx.h
 header-test-			+= linux/platform_data/leds-omap.h
 header-test-			+= linux/platform_data/lp855x.h
@@ -497,6 +509,7 @@ header-test-			+= linux/platform_data/max732x.h
 header-test-			+= linux/platform_data/mcs.h
 header-test-			+= linux/platform_data/mdio-bcm-unimac.h
 header-test-			+= linux/platform_data/mdio-gpio.h
+header-test-			+= linux/platform_data/media/mmp-camera.h
 header-test-			+= linux/platform_data/media/si4713.h
 header-test-			+= linux/platform_data/mlxreg.h
 header-test-			+= linux/platform_data/mmc-omap.h
@@ -584,6 +597,7 @@ header-test-			+= linux/qed/storage_common.h
 header-test-			+= linux/qed/tcp_common.h
 header-test-			+= linux/qnx6_fs.h
 header-test-			+= linux/quicklist.h
+header-test-			+= linux/raid_class.h
 header-test-			+= linux/ramfs.h
 header-test-			+= linux/range.h
 header-test-			+= linux/rcu_node_tree.h
@@ -613,6 +627,7 @@ header-test-			+= linux/sched/deadline.h
 header-test-			+= linux/sched/smt.h
 header-test-			+= linux/sched/sysctl.h
 header-test-			+= linux/sched_clock.h
+header-test-			+= linux/scmi_protocol.h
 header-test-			+= linux/scpi_protocol.h
 header-test-			+= linux/scx200_gpio.h
 header-test-			+= linux/seccomp.h
@@ -621,6 +636,7 @@ header-test-			+= linux/seg6_iptunnel.h
 header-test-			+= linux/selection.h
 header-test-			+= linux/set_memory.h
 header-test-			+= linux/shrinker.h
+header-test-			+= linux/siox.h
 header-test-			+= linux/sirfsoc_dma.h
 header-test-			+= linux/skb_array.h
 header-test-			+= linux/slab_def.h
@@ -660,6 +676,7 @@ header-test-			+= linux/spi/sh_msiof.h
 header-test-			+= linux/spi/spi-fsl-dspi.h
 header-test-			+= linux/spi/spi_bitbang.h
 header-test-			+= linux/spi/spi_gpio.h
+header-test-			+= linux/spi/tle62x0.h
 header-test-			+= linux/spi/xilinx_spi.h
 header-test-			+= linux/spinlock_api_smp.h
 header-test-			+= linux/spinlock_api_up.h
@@ -677,6 +694,7 @@ header-test-			+= linux/stackdepot.h
 header-test-			+= linux/stmp3xxx_rtc_wdt.h
 header-test-			+= linux/string_helpers.h
 header-test-			+= linux/sungem_phy.h
+header-test-			+= linux/sunrpc/gss_krb5.h
 header-test-			+= linux/sunrpc/msg_prot.h
 header-test-			+= linux/sunrpc/rpc_pipe_fs.h
 header-test-			+= linux/sunrpc/xprtmultipath.h
@@ -741,6 +759,7 @@ header-test-			+= linux/vmw_vmci_api.h
 header-test-			+= linux/vmw_vmci_defs.h
 header-test-			+= linux/vringh.h
 header-test-			+= linux/vt_buffer.h
+header-test-			+= linux/yam.h
 header-test-			+= linux/zorro.h
 header-test-			+= linux/zpool.h
 header-test-			+= math-emu/double.h
@@ -930,6 +949,7 @@ header-test-			+= soc/tegra/bpmp-abi.h
 header-test-			+= soc/tegra/common.h
 header-test-			+= soc/tegra/flowctrl.h
 header-test-			+= soc/tegra/fuse.h
+header-test-			+= soc/tegra/ivc.h
 header-test-			+= soc/tegra/mc.h
 header-test-			+= sound/ac97/compat.h
 header-test-			+= sound/aci.h
@@ -1008,6 +1028,7 @@ header-test-			+= sound/wm8996.h
 header-test-			+= sound/wm9081.h
 header-test-			+= sound/wm9090.h
 header-test-			+= target/iscsi/iscsi_target_stat.h
+header-test-			+= target/iscsi/iscsi_transport.h
 header-test-			+= trace/bpf_probe.h
 header-test-			+= trace/events/9p.h
 header-test-			+= trace/events/afs.h
@@ -1058,8 +1079,10 @@ header-test-			+= trace/perf.h
 header-test-			+= trace/trace_events.h
 header-test-			+= uapi/drm/vmwgfx_drm.h
 header-test-			+= uapi/linux/a.out.h
+header-test-			+= uapi/linux/chio.h
 header-test-			+= uapi/linux/coda.h
 header-test-			+= uapi/linux/coda_psdev.h
+header-test-			+= uapi/linux/coff.h
 header-test-			+= uapi/linux/errqueue.h
 header-test-			+= uapi/linux/eventpoll.h
 header-test-			+= uapi/linux/hdlc/ioctl.h
@@ -1071,6 +1094,7 @@ header-test-			+= uapi/linux/mic_common.h
 header-test-			+= uapi/linux/mman.h
 header-test-			+= uapi/linux/nilfs2_ondisk.h
 header-test-			+= uapi/linux/patchkey.h
+header-test-			+= uapi/linux/pg.h
 header-test-			+= uapi/linux/ptrace.h
 header-test-			+= uapi/linux/scc.h
 header-test-			+= uapi/linux/seg6_iptunnel.h
@@ -1091,12 +1115,14 @@ header-test-			+= vdso/vsyscall.h
 header-test-			+= video/broadsheetfb.h
 header-test-			+= video/cvisionppc.h
 header-test-			+= video/gbe.h
+header-test-			+= video/ili9320.h
 header-test-			+= video/kyro.h
 header-test-			+= video/maxinefb.h
 header-test-			+= video/metronomefb.h
 header-test-			+= video/neomagic.h
 header-test-			+= video/of_display_timing.h
 header-test-			+= video/omapvrfb.h
+header-test-			+= video/platform_lcd.h
 header-test-			+= video/s1d13xxxfb.h
 header-test-			+= video/sstfb.h
 header-test-			+= video/tgafb.h
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index f72aba64d611..052cb418eb5f 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -286,8 +286,9 @@ $(obj)/%.lst: $(src)/%.c FORCE
 # header test (header-test-y, header-test-m target)
 # ---------------------------------------------------------------------------
 
+# include the header twice to catch missing header include guard.
 quiet_cmd_cc_s_h = CC      $@
-      cmd_cc_s_h = $(CC) $(c_flags) -S -o $@ -x c /dev/null -include $<
+      cmd_cc_s_h = $(CC) $(c_flags) -S -o $@ -x c /dev/null -include $< -include $<
 
 $(obj)/%.h.s: $(src)/%.h FORCE
 	$(call if_changed_dep,cc_s_h)
diff --git a/usr/include/Makefile b/usr/include/Makefile
index 4ef9946775ee..944eb8097702 100644
--- a/usr/include/Makefile
+++ b/usr/include/Makefile
@@ -28,8 +28,10 @@ header-test- += linux/android/binder.h
 header-test- += linux/android/binderfs.h
 header-test-$(CONFIG_CPU_BIG_ENDIAN) += linux/byteorder/big_endian.h
 header-test-$(CONFIG_CPU_LITTLE_ENDIAN) += linux/byteorder/little_endian.h
+header-test- += linux/chio.h
 header-test- += linux/coda.h
 header-test- += linux/coda_psdev.h
+header-test- += linux/coff.h
 header-test- += linux/elfcore.h
 header-test- += linux/errqueue.h
 header-test- += linux/fsmap.h
@@ -44,6 +46,7 @@ header-test- += linux/nfc.h
 header-test- += linux/omap3isp.h
 header-test- += linux/omapfb.h
 header-test- += linux/patchkey.h
+header-test- += linux/pg.h
 header-test- += linux/phonet.h
 header-test- += linux/reiserfs_xattr.h
 header-test- += linux/scc.h
-- 
2.17.1




[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux