gcc -I. -I./lib /
src/version.c /
lib/progname.c /
lib/safe-read.c /
lib/safe-write.c /
lib/quotearg.c /
lib/xmalloc.c /
lib/localcharset.c /
lib/c-strcasecmp.c /
lib/mbrtowc.c /
lib/xalloc-die.c /
lib/c-ctype.c /
lib/hard-locale.c /
lib/exitfail.c /
lib/closeout.c /
lib/close-stream.c /
lib/fclose.c /
lib/fflush.c /
lib/fseeko.c /
lib/version-etc.c /
lib/xbinary-io.c /
lib/version-etc-fsf.c /
lib/binary-io.c /
lib/fadvise.c /
lib/full-write.c /
src/cat.c
Those .c files add up to 5021 lines.The .c files include 44 header files:
lib/binary-io.h
lib/c-ctype.h
lib/closeout.h
lib/close-stream.h
lib/config.h
lib/c-strcaseeq.h
lib/c-strcase.h
lib/ctype.h
lib/error.h
lib/exitfail.h
lib/fadvise.h
lib/fcntl.h
lib/fpending.h
lib/freading.h
lib/full-write.h
lib/gettext.h
lib/hard-locale.h
lib/ignore-value.h
lib/limits.h
lib/localcharset.h
lib/locale.h
lib/minmax.h
lib/progname.h
lib/quotearg.h
lib/quote.h
lib/safe-read.h
lib/stdio.h
lib/stdio-impl.h
lib/stdlib.h
lib/string.h
lib/sys/ioctl.h
lib/sys-limits.h
lib/sys/types.h
lib/unistd.h
lib/unused-parameter.h
lib/verify.h
lib/version-etc.h
lib/wchar.h
lib/wctype.h
lib/xalloc.h
lib/xbinary-io.h
src/die.h
src/ioblksize.h
src/system.h
The header files add up to 19.7k lines.So the total line count for files GNU cat actually needs to build is at least ~25k.
(I didn't bother checking for headers including other headers.)
Next step: do this for various versions of GNU coreutils.