kconfig: split some C files out of zconf.y
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Fri, 21 Dec 2018 08:33:04 +0000 (17:33 +0900)
committerMasahiro Yamada <yamada.masahiro@socionext.com>
Fri, 28 Dec 2018 13:22:38 +0000 (22:22 +0900)
I want to compile each C file independently instead of including all
of them from zconf.y.

Split out confdata.c, expr.c, symbol.c, and preprocess.c .
These are low-hanging fruits.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
scripts/kconfig/Makefile
scripts/kconfig/confdata.c
scripts/kconfig/expr.c
scripts/kconfig/lkc.h
scripts/kconfig/preprocess.c
scripts/kconfig/symbol.c
scripts/kconfig/zconf.y

index 63b609243d03783beb1da485aaaa1e1d6f3c78eb..d3bd687547500be3b5b666dafc568e0c8fe90901 100644 (file)
@@ -142,13 +142,8 @@ help:
        @echo  '  testconfig      - Run Kconfig unit tests (requires python3 and pytest)'
 
 # ===========================================================================
-# Shared Makefile for the various kconfig executables:
-# conf:          Used for defconfig, oldconfig and related targets
 # object files used by all kconfig flavours
-
-conf-objs      := conf.o  zconf.tab.o
-
-hostprogs-y := conf
+common-objs    := confdata.o expr.o symbol.o preprocess.o zconf.tab.o
 
 targets                += zconf.lex.c
 
@@ -156,9 +151,13 @@ targets            += zconf.lex.c
 HOSTCFLAGS_zconf.lex.o := -I$(src)
 HOSTCFLAGS_zconf.tab.o := -I$(src)
 
+# conf: Used for defconfig, oldconfig and related targets
+hostprogs-y    += conf
+conf-objs      := conf.o $(common-objs)
+
 # nconf: Used for the nconfig target based on ncurses
 hostprogs-y    += nconf
-nconf-objs     := nconf.o zconf.tab.o nconf.gui.o
+nconf-objs     := nconf.o nconf.gui.o $(common-objs)
 
 HOSTLDLIBS_nconf       = $(shell . $(obj)/.nconf-cfg && echo $$libs)
 HOSTCFLAGS_nconf.o     = $(shell . $(obj)/.nconf-cfg && echo $$cflags)
@@ -169,7 +168,7 @@ $(obj)/nconf.o $(obj)/nconf.gui.o: $(obj)/.nconf-cfg
 # mconf: Used for the menuconfig target based on lxdialog
 hostprogs-y    += mconf
 lxdialog       := checklist.o inputbox.o menubox.o textbox.o util.o yesno.o
-mconf-objs     := mconf.o zconf.tab.o $(addprefix lxdialog/, $(lxdialog))
+mconf-objs     := mconf.o $(addprefix lxdialog/, $(lxdialog)) $(common-objs)
 
 HOSTLDLIBS_mconf = $(shell . $(obj)/.mconf-cfg && echo $$libs)
 $(foreach f, mconf.o $(lxdialog), \
@@ -181,7 +180,7 @@ $(addprefix $(obj)/lxdialog/, $(lxdialog)): $(obj)/.mconf-cfg
 # qconf: Used for the xconfig target based on Qt
 hostprogs-y    += qconf
 qconf-cxxobjs  := qconf.o
-qconf-objs     := zconf.tab.o
+qconf-objs     := $(common-objs)
 
 HOSTLDLIBS_qconf       = $(shell . $(obj)/.qconf-cfg && echo $$libs)
 HOSTCXXFLAGS_qconf.o   = $(shell . $(obj)/.qconf-cfg && echo $$cflags)
@@ -196,7 +195,7 @@ $(obj)/%.moc: $(src)/%.h $(obj)/.qconf-cfg
 
 # gconf: Used for the gconfig target based on GTK+
 hostprogs-y    += gconf
-gconf-objs     := gconf.o zconf.tab.o
+gconf-objs     := gconf.o $(common-objs)
 
 HOSTLDLIBS_gconf    = $(shell . $(obj)/.gconf-cfg && echo $$libs)
 HOSTCFLAGS_gconf.o  = $(shell . $(obj)/.gconf-cfg && echo $$cflags)
index 83f78e5c137e8bf1eb89742779d100c60aaf7cd8..08ba146a83c547db9e5607f407de08128656bc40 100644 (file)
@@ -7,6 +7,7 @@
 #include <ctype.h>
 #include <errno.h>
 #include <fcntl.h>
+#include <limits.h>
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
index 3ff8c92c86baf925f866db5b1307c0e53ba08628..77ffff3a053ccb844a0f368ae59661a01bc8444c 100644 (file)
@@ -3,6 +3,8 @@
  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  */
 
+#include <ctype.h>
+#include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
index 4ff33cd099cd20f8f403fe11a5349a3aece11870..160a9312e11a7dd9ee7d6bfa9f7b167e00aed06e 100644 (file)
@@ -108,6 +108,7 @@ const char *str_get(struct gstr *gs);
 /* symbol.c */
 void sym_clear_all_valid(void);
 struct symbol *sym_choice_default(struct symbol *sym);
+struct property *sym_get_range_prop(struct symbol *sym);
 const char *sym_get_string_default(struct symbol *sym);
 struct symbol *sym_check_deps(struct symbol *sym);
 struct property *prop_alloc(enum prop_type type, struct symbol *sym);
index b028a48b0e761f491f90e29df43b6975f5a0a757..592dfbfa9fb30d6804043a5bad23b9f683adefd8 100644 (file)
@@ -2,6 +2,7 @@
 //
 // Copyright (C) 2018 Masahiro Yamada <yamada.masahiro@socionext.com>
 
+#include <ctype.h>
 #include <stdarg.h>
 #include <stdbool.h>
 #include <stdio.h>
@@ -9,6 +10,7 @@
 #include <string.h>
 
 #include "list.h"
+#include "lkc.h"
 
 #define ARRAY_SIZE(arr)                (sizeof(arr) / sizeof((arr)[0]))
 
index d1457836e92a1cfc509a922c1de1ad9c7af60ed0..1f9266dadedf63f2c01fb102e3e173d3349520e7 100644 (file)
@@ -86,7 +86,7 @@ static struct property *sym_get_default_prop(struct symbol *sym)
        return NULL;
 }
 
-static struct property *sym_get_range_prop(struct symbol *sym)
+struct property *sym_get_range_prop(struct symbol *sym)
 {
        struct property *prop;
 
index 0d590cb07b719dff22b2eff3b8a116e539633300..a990f46f38257702c30311adbca516514c178567 100644 (file)
@@ -731,8 +731,4 @@ void zconfdump(FILE *out)
 
 #include "zconf.lex.c"
 #include "util.c"
-#include "confdata.c"
-#include "expr.c"
-#include "symbol.c"
 #include "menu.c"
-#include "preprocess.c"