Module Name:    src
Committed By:   uebayasi
Date:           Tue Sep  1 11:22:59 UTC 2015

Modified Files:
        src/usr.bin/config: defs.h files.c gram.y mkmakefile.c

Log Message:
Merge struct objects into struct files.  Keep per-suffix file lists.


To generate a diff of this commit:
cvs rdiff -u -r1.75 -r1.76 src/usr.bin/config/defs.h
cvs rdiff -u -r1.21 -r1.22 src/usr.bin/config/files.c
cvs rdiff -u -r1.50 -r1.51 src/usr.bin/config/gram.y
cvs rdiff -u -r1.51 -r1.52 src/usr.bin/config/mkmakefile.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/config/defs.h
diff -u src/usr.bin/config/defs.h:1.75 src/usr.bin/config/defs.h:1.76
--- src/usr.bin/config/defs.h:1.75	Tue Sep  1 10:37:48 2015
+++ src/usr.bin/config/defs.h	Tue Sep  1 11:22:59 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: defs.h,v 1.75 2015/09/01 10:37:48 uebayasi Exp $	*/
+/*	$NetBSD: defs.h,v 1.76 2015/09/01 11:22:59 uebayasi Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -149,6 +149,9 @@ struct defoptlist {
 	struct nvlist *dl_depends;
 };
 
+struct files;
+TAILQ_HEAD(filelist, files);
+
 struct module {
 	const char		*m_name;
 #if 1
@@ -158,7 +161,7 @@ struct module {
 	struct modulelist	*m_deps;
 #endif
 	int			m_expanding;
-	TAILQ_HEAD(, files)	m_files;
+	struct filelist		m_files;
 	int			m_weight;
 };
 
@@ -334,6 +337,7 @@ struct devi {
  */
 struct filetype {
 	TAILQ_ENTRY(files) fit_next;
+	TAILQ_ENTRY(files) fit_snext;
 	const char *fit_srcfile;	/* the name of the "files" file that got us */
 	u_short	fit_srcline;	/* and the line number */
 	u_char	fit_flags;	/* as below */
@@ -367,6 +371,7 @@ struct files {
 	struct filetype fi_fit;
 };
 #define fi_next    fi_fit.fit_next
+#define fi_snext    fi_fit.fit_snext
 #define fi_srcfile fi_fit.fit_srcfile
 #define fi_srcline fi_fit.fit_srcline
 #define fi_flags   fi_fit.fit_flags
@@ -390,35 +395,6 @@ struct files {
 #define	FI_HIDDEN	0x08	/* obscured by other(s), base names overlap */
 
 /*
- * Objects and libraries.  This allows precompiled object and library
- * files (e.g. binary-only device drivers) to be linked in.
- */
-struct objects {
-	struct  filetype oi_fit;
-};
-
-#define oi_next    oi_fit.fit_next
-#define oi_srcfile oi_fit.fit_srcfile
-#define oi_srcline oi_fit.fit_srcline
-#define oi_flags   oi_fit.fit_flags
-#define oi_lastc   oi_fit.fit_lastc
-#define oi_tail    oi_fit.fit_tail
-#define oi_base    oi_fit.fit_base
-#define oi_path    oi_fit.fit_path
-#define oi_prefix  oi_fit.fit_prefix
-#define oi_suffix  oi_fit.fit_suffix
-#define oi_len     oi_fit.fit_len
-#define oi_optx    oi_fit.fit_optx
-#define oi_optf    oi_fit.fit_optf
-#define oi_mkrule  oi_fit.fit_mkrule
-#define oi_attr    oi_fit.fit_attr
-#define oi_anext   oi_fit.fit_anext
-
-/* flags */
-#define	OI_SEL		0x01	/* selected */
-#define	OI_NEEDSFLAG	0x02	/* needs-flag */
-
-/*
  * Condition expressions.
  */
 
@@ -534,8 +510,11 @@ int	do_devsw;			/* 0 if pre-devsw config
 int	oktopackage;			/* 0 before setmachine() */
 int	devilevel;			/* used for devi->i_level */
 
-TAILQ_HEAD(, files)	allfiles;	/* list of all kernel source files */
-TAILQ_HEAD(, objects)	allobjects;	/* list of all kernel object and
+struct filelist		allfiles;	/* list of all kernel source files */
+struct filelist		allcfiles;	/* list of all .c files */
+struct filelist		allsfiles;	/* list of all .S files */
+struct filelist		allofiles;	/* list of all .o files */
+TAILQ_HEAD(, files)	allobjects;	/* list of all kernel object and
 					   library files */
 
 SLIST_HEAD(, prefix)	prefixes,	/* prefix stack */
@@ -563,7 +542,6 @@ int	fixfiles(void);		/* finalize */
 int	fixobjects(void);
 int	fixdevsw(void);
 void	addfile(const char *, struct condexpr *, u_char, const char *);
-void	addobject(const char *, struct condexpr *, u_char);
 int	expr_eval(struct condexpr *, int (*)(const char *, void *), void *);
 
 /* hash.c */

Index: src/usr.bin/config/files.c
diff -u src/usr.bin/config/files.c:1.21 src/usr.bin/config/files.c:1.22
--- src/usr.bin/config/files.c:1.21	Sat Aug 29 02:54:07 2015
+++ src/usr.bin/config/files.c	Tue Sep  1 11:22:59 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: files.c,v 1.21 2015/08/29 02:54:07 uebayasi Exp $	*/
+/*	$NetBSD: files.c,v 1.22 2015/09/01 11:22:59 uebayasi Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -45,7 +45,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: files.c,v 1.21 2015/08/29 02:54:07 uebayasi Exp $");
+__RCSID("$NetBSD: files.c,v 1.22 2015/09/01 11:22:59 uebayasi Exp $");
 
 #include <sys/param.h>
 #include <errno.h>
@@ -81,6 +81,9 @@ initfiles(void)
 	basetab = ht_new();
 	pathtab = ht_new();
 	TAILQ_INIT(&allfiles);
+	TAILQ_INIT(&allcfiles);
+	TAILQ_INIT(&allsfiles);
+	TAILQ_INIT(&allofiles);
 	unchecked = &TAILQ_FIRST(&allfiles);
 	TAILQ_INIT(&allobjects);
 }
@@ -168,7 +171,21 @@ addfile(const char *path, struct condexp
 	fi->fi_optf = NULL;
 	fi->fi_mkrule = rule;
 	fi->fi_attr = NULL;
-	TAILQ_INSERT_TAIL(&allfiles, fi, fi_next);
+	switch (fi->fi_suffix) {
+	case 'c':
+		TAILQ_INSERT_TAIL(&allcfiles, fi, fi_snext);
+		TAILQ_INSERT_TAIL(&allfiles, fi, fi_next);
+		break;
+	case 'S':
+	case 's':
+		TAILQ_INSERT_TAIL(&allsfiles, fi, fi_snext);
+		TAILQ_INSERT_TAIL(&allfiles, fi, fi_next);
+		break;
+	case 'o':
+		TAILQ_INSERT_TAIL(&allofiles, fi, fi_snext);
+		TAILQ_INSERT_TAIL(&allobjects, fi, fi_next);
+		break;
+	}
 	return;
  bad:
 	if (optx != NULL) {
@@ -176,36 +193,6 @@ addfile(const char *path, struct condexp
 	}
 }
 
-void
-addobject(const char *path, struct condexpr *optx, u_char flags)
-{
-	struct objects *oi;
-
-	/*
-	 * Commit this object to memory.  We will decide later whether it
-	 * will be used after all.
-	 */
-	oi = ecalloc(1, sizeof *oi);
-	if (ht_insert(pathtab, path, oi)) {
-		free(oi);
-		if ((oi = ht_lookup(pathtab, path)) == NULL)
-			panic("addfile: ht_lookup(%s)", path);
-		cfgerror("duplicate file %s", path);
-		cfgxerror(oi->oi_srcfile, oi->oi_srcline,
-		    "here is the original definition");
-	} 
-	oi->oi_srcfile = yyfile;
-	oi->oi_srcline = currentline();
-	oi->oi_flags = flags;
-	oi->oi_path = path;
-	oi->oi_prefix = SLIST_EMPTY(&prefixes) ? NULL :
-			SLIST_FIRST(&prefixes)->pf_prefix;
-	oi->oi_optx = optx;
-	oi->oi_optf = NULL;
-	TAILQ_INSERT_TAIL(&allobjects, oi, oi_next);
-	return;
-}     
-
 static void
 addfiletoattr(const char *name, struct files *fi)
 {
@@ -339,26 +326,26 @@ fixfiles(void)
 int    
 fixobjects(void)
 {     
-	struct objects *oi;
+	struct files *fi;
 	struct nvlist *flathead, **flatp;
 	int err, sel; 
  
 	err = 0;
-	TAILQ_FOREACH(oi, &allobjects, oi_next) {
+	TAILQ_FOREACH(fi, &allobjects, fi_next) {
 		/* Optional: see if it is to be included. */
-		if (oi->oi_optx != NULL) {
+		if (fi->fi_optx != NULL) {
 			flathead = NULL;
 			flatp = &flathead;
-			sel = expr_eval(oi->oi_optx,
-			    oi->oi_flags & OI_NEEDSFLAG ? fixfsel :
+			sel = expr_eval(fi->fi_optx,
+			    fi->fi_flags & FI_NEEDSFLAG ? fixfsel :
 			    fixsel,
 			    &flatp);
-			oi->oi_optf = flathead;
+			fi->fi_optf = flathead;
 			if (!sel)
 				continue;
 		}
 
-		oi->oi_flags |= OI_SEL;  
+		fi->fi_flags |= FI_SEL;  
 	}
 	return (err);
 }     

Index: src/usr.bin/config/gram.y
diff -u src/usr.bin/config/gram.y:1.50 src/usr.bin/config/gram.y:1.51
--- src/usr.bin/config/gram.y:1.50	Mon Aug 31 02:58:25 2015
+++ src/usr.bin/config/gram.y	Tue Sep  1 11:22:59 2015
@@ -1,5 +1,5 @@
 %{
-/*	$NetBSD: gram.y,v 1.50 2015/08/31 02:58:25 uebayasi Exp $	*/
+/*	$NetBSD: gram.y,v 1.51 2015/09/01 11:22:59 uebayasi Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -42,7 +42,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: gram.y,v 1.50 2015/08/31 02:58:25 uebayasi Exp $");
+__RCSID("$NetBSD: gram.y,v 1.51 2015/09/01 11:22:59 uebayasi Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -343,7 +343,7 @@ define_file:
 
 /* object file: object zot.o foo|zot needs-flag */
 define_object:
-	XOBJECT filename fopts oflags	{ addobject($2, $3, $4); }
+	XOBJECT filename fopts oflags	{ addfile($2, $3, $4, NULL); }
 ;
 
 /* device major declaration */
@@ -473,7 +473,7 @@ oflags:
 
 /* a single flag for an object file */
 oflag:
-	NEEDS_FLAG			{ $$ = OI_NEEDSFLAG; }
+	NEEDS_FLAG			{ $$ = FI_NEEDSFLAG; }
 ;
 
 /* char 55 */

Index: src/usr.bin/config/mkmakefile.c
diff -u src/usr.bin/config/mkmakefile.c:1.51 src/usr.bin/config/mkmakefile.c:1.52
--- src/usr.bin/config/mkmakefile.c:1.51	Tue Sep  1 01:17:56 2015
+++ src/usr.bin/config/mkmakefile.c	Tue Sep  1 11:22:59 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: mkmakefile.c,v 1.51 2015/09/01 01:17:56 uebayasi Exp $	*/
+/*	$NetBSD: mkmakefile.c,v 1.52 2015/09/01 11:22:59 uebayasi Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -45,7 +45,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: mkmakefile.c,v 1.51 2015/09/01 01:17:56 uebayasi Exp $");
+__RCSID("$NetBSD: mkmakefile.c,v 1.52 2015/09/01 11:22:59 uebayasi Exp $");
 
 #include <sys/param.h>
 #include <ctype.h>
@@ -313,7 +313,6 @@ static void
 emitobjs(FILE *fp)
 {
 	struct files *fi;
-	struct objects *oi;
 
 	fputs("OBJS= \\\n", fp);
 	TAILQ_FOREACH(fi, &allfiles, fi_next) {
@@ -321,11 +320,11 @@ emitobjs(FILE *fp)
 			continue;
 		fprintf(fp, "\t%s.o \\\n", fi->fi_base);
 	}
-	TAILQ_FOREACH(oi, &allobjects, oi_next) {
-		if ((oi->oi_flags & OI_SEL) == 0)
+	TAILQ_FOREACH(fi, &allobjects, fi_next) {
+		if ((fi->fi_flags & FI_SEL) == 0)
 			continue;
 		putc('\t', fp);
-		emitfiletype(fp, &oi->oi_fit);
+		emitfiletype(fp, &fi->fi_fit);
 		fputs(" \\\n", fp);
 	}
 	putc('\n', fp);

Reply via email to