Re: [KBUILD] 2.x.x mkdep incorrectly handles serial.c (and probably others)

Keith Owens (kaos@ocs.com.au)
Sat, 12 Jun 1999 19:19:47 +1000


On Fri, 11 Jun 1999 23:02:50 -0500,
Michael Elizabeth Chastain <mec@shout.net> wrote:
>kaos wrote
>> Changing CONFIG_SERIAL_SHARE_IRQ with no other changes does *not*
>> recompile serial.c but it should.
>Would you like to fool around with mkdep.c? Right around here:
>... try ripping out the call to define_config.

--- linux-2.2.9/linux/scripts/mkdep.c Fri, 05 Feb 1999 09:47:48 +1100 keith (linux-2.2/4_mkdep.c 1.1 644)
+++ linux/linux/scripts/mkdep.c Sat, 12 Jun 1999 17:07:11 +1000 keith (linux-2.2/4_mkdep.c 1.1 644)
@@ -379,7 +379,6 @@
GETNEXT
if (isalnum(current) || current == '_')
goto pound_define_undef_CONFIG_word;
- define_config(1, map_dot, next - map_dot - 1);
+ /* do not define_config() here, it can hide real config changes */
goto __start;

/* \<CONFIG_(\w*) */

Works for me. No extra files, 29 unique extra wildcard lines scattered
over 12 files. The ones prefixed by '*' are real ones, they appear in
i386 .config. The others are pseudo, internal config options, to avoid
future confusion they should all be changed to a different name or
added to .config.

CONFIG_0
CONFIG_1
CONFIG_AEDSP16
CONFIG_AWE32_SYNTH
CONFIG_CMD
CONFIG_DIO_CONSTANTS
* CONFIG_HUB6
CONFIG_IHPIB
CONFIG_IPV6_SUBTREES
CONFIG_IP_MASQ_LOOSE_DEFAULT
CONFIG_IP_PIMSM
CONFIG_IP_PNP_DYNAMIC
CONFIG_NFS_SNAPSHOT
CONFIG_PACKET_MULTICAST
* CONFIG_PARPORT
CONFIG_RADIO_TYPHOON_PROC_FS
CONFIG_REG_0
CONFIG_REG_1
CONFIG_RT6_POLICY
CONFIG_SCSI_OMIT_FLASHPOINT
* CONFIG_SERIAL_DETECT_IRQ
* CONFIG_SERIAL_MANY_PORTS
* CONFIG_SERIAL_MULTIPORT
CONFIG_SERIAL_NOPAUSE_IO
* CONFIG_SERIAL_SHARE_IRQ
CONFIG_SOCK_PACKET
CONFIG_UDP_DELAY_CSUM
CONFIG_WDT501_FAN
CONFIG_WDT_500

The ones prefixed by '*' worry me, these options are being forcibly set
inside .c files. It implies that there is a mismatch between the
.config dependencies and the code dependencies. While the result may
be valid, the logic should probably be in .config instead of being
buried in the code. For example, CONFIG_HUB6 forcibly sets
CONFIG_SERIAL_MANY_PORTS and CONFIG_SERIAL_SHARE_IRQ but only within
serial.c. Any other code using .config can see a different
combination of these options.

As a general principle, I prefer "do it in one place and get it right
once". In this case, setting HUB6 in make ...config should
automatically set MANY_PORTS and SHARE_IRQ and not let the user
override them. Is that possible with make ...config at the moment?

I scanned for all unusual define/undef of those options, i386 only.
Some of these are obviously obsolete, they only have undef or ifdef.

--- CONFIG_0
drivers/net/at1700.c:134:#define CONFIG_0 6 /* Misc. configuration settings. */
drivers/net/fmv18x.c:92:#define CONFIG_0 6 /* Misc. configuration settings. */
--- CONFIG_1
drivers/net/at1700.c:135:#define CONFIG_1 7
drivers/net/fmv18x.c:93:#define CONFIG_1 7
--- CONFIG_AEDSP16
drivers/sound/lowlevel/aedsp16.c:38:# undef CONFIG_AEDSP16
drivers/sound/lowlevel/aedsp16.c:41:# define CONFIG_AEDSP16 1
--- CONFIG_AWE32_SYNTH
drivers/sound/lowlevel/awe_compat-fbsd.h:56:#define CONFIG_AWE32_SYNTH
drivers/sound/lowlevel/awe_compat-fbsd.h:67:# define CONFIG_AWE32_SYNTH
drivers/sound/lowlevel/awe_compat-linux.h:84:#define CONFIG_AWE32_SYNTH
drivers/sound/lowlevel/awe_compat.h:84:#define CONFIG_AWE32_SYNTH
--- CONFIG_CMD
drivers/net/3c507.c:184:#define CONFIG_CMD 0x0018
arch/i386/kernel/bios32.c:192:#define CONFIG_CMD(bus, device_fn, where) (0x80000000 | (bus << 16) | (device_fn << 8) | (where & ~3))
arch/i386/kernel/bios32.c:242:#undef CONFIG_CMD
--- CONFIG_DIO_CONSTANTS
drivers/dio/dio.c:36:#define CONFIG_DIO_CONSTANTS
--- CONFIG_HUB6
drivers/char/serial.c:76:#define CONFIG_HUB6
--- CONFIG_IHPIB
include/linux/dio.h:50:#define CONFIG_IHPIB /* hack hack : not yet a proper config option */
--- CONFIG_IPV6_SUBTREES
net/ipv6/ip6_fib.c:36:#undef CONFIG_IPV6_SUBTREES
--- CONFIG_IP_MASQ_LOOSE_DEFAULT
net/ipv4/ip_masq.c:408:#define CONFIG_IP_MASQ_LOOSE_DEFAULT 1
--- CONFIG_IP_PIMSM
net/ipv4/ipmr.c:64:#define CONFIG_IP_PIMSM 1
--- CONFIG_IP_PNP_DYNAMIC
net/ipv4/ipconfig.c:74:#define CONFIG_IP_PNP_DYNAMIC
--- CONFIG_NFS_SNAPSHOT
fs/nfs/inode.c:35:#define CONFIG_NFS_SNAPSHOT 1
--- CONFIG_PACKET_MULTICAST
net/packet/af_packet.c:110:#define CONFIG_PACKET_MULTICAST 1
--- CONFIG_PARPORT
drivers/block/paride/paride.c:30:#define CONFIG_PARPORT
--- CONFIG_RADIO_TYPHOON_PROC_FS
drivers/char/radio-typhoon.c:52:#undef CONFIG_RADIO_TYPHOON_PROC_FS
--- CONFIG_REG_0
drivers/net/eth16i.c:265:#define CONFIG_REG_0 6
--- CONFIG_REG_1
drivers/net/eth16i.c:284:#define CONFIG_REG_1 7
--- CONFIG_RT6_POLICY
net/ipv6/route.c:49:#undef CONFIG_RT6_POLICY
--- CONFIG_SCSI_OMIT_FLASHPOINT
drivers/scsi/BusLogic.h:99:#undef CONFIG_SCSI_OMIT_FLASHPOINT
drivers/scsi/BusLogic.h:100:#define CONFIG_SCSI_OMIT_FLASHPOINT
drivers/scsi/BusLogic.h:104:#undef CONFIG_SCSI_OMIT_FLASHPOINT
drivers/scsi/BusLogic.h:105:#define CONFIG_SCSI_OMIT_FLASHPOINT
--- CONFIG_SERIAL_DETECT_IRQ
drivers/char/serial.c:74:#define CONFIG_SERIAL_DETECT_IRQ
--- CONFIG_SERIAL_MANY_PORTS
drivers/char/serial.c:72:#define CONFIG_SERIAL_MANY_PORTS
drivers/char/serial.c:89:#define CONFIG_SERIAL_MANY_PORTS
--- CONFIG_SERIAL_MULTIPORT
drivers/char/serial.c:75:#define CONFIG_SERIAL_MULTIPORT
--- CONFIG_SERIAL_NOPAUSE_IO
drivers/char/serial.c:66:#define CONFIG_SERIAL_NOPAUSE_IO
drivers/sbus/char/su.c:15:#define CONFIG_SERIAL_NOPAUSE_IO /* Unused on sparc */
--- CONFIG_SERIAL_SHARE_IRQ
drivers/char/serial.c:73:#define CONFIG_SERIAL_SHARE_IRQ
drivers/char/serial.c:83:#define CONFIG_SERIAL_SHARE_IRQ
drivers/char/serial.c:92:#define CONFIG_SERIAL_SHARE_IRQ
--- CONFIG_SOCK_PACKET
net/packet/af_packet.c:84:#define CONFIG_SOCK_PACKET 1
--- CONFIG_UDP_DELAY_CSUM
net/ipv4/udp.c:848:#undef CONFIG_UDP_DELAY_CSUM
net/ipv6/udp.c:342:#undef CONFIG_UDP_DELAY_CSUM
--- CONFIG_WDT501_FAN
drivers/char/wd501p.h:49:#ifdef CONFIG_WDT501_FAN /* Full board, Fan has no tachometer */
--- CONFIG_WDT_500
drivers/char/wd501p.h:61:#define CONFIG_WDT_500

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/