Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 19 May 2001 00:49:57 +0900
From:      "Akinori MUSHA" <knu@iDaemons.org>
To:        Maxim Sobolev <sobomax@FreeBSD.org>
Cc:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/usr.bin/make Makefile
Message-ID:  <86ofsqejx6.wl@archon.local.idaemons.org>
In-Reply-To: <200105180905.f4I95vH45495@freefall.freebsd.org>
References:  <200105180905.f4I95vH45495@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
At Fri, 18 May 2001 02:05:56 -0700 (PDT),
sobomax wrote:
> sobomax     2001/05/18 02:05:56 PDT
> 
>   Modified files:
>     usr.bin/make         Makefile 
>   Log:
>   By default build make(1) as a static binary. It costs only 100k of additional
>   disk space, buf provides measureable speed increase for make-intensive
>   operations, such as pkg_version(1), `make world' and so on.

Speaking of speed increase, does anybody object against MFC'ing this?
This allows you to use /bin/ksh instead of the default of /bin/sh.

Index: Makefile
===================================================================
RCS file: /home/ncvs/src/usr.bin/make/Makefile,v
retrieving revision 1.13
diff -u -r1.13 Makefile
--- Makefile	1999/11/15 17:07:45	1.13
+++ Makefile	2001/05/18 15:40:21
@@ -12,4 +12,20 @@
 	lstMember.c lstNext.c lstOpen.c lstRemove.c lstReplace.c lstSucc.c
 .PATH:	${.CURDIR}/lst.lib
 
+# Set the shell which make(1) uses.  Bourne is the default, but a decent
+# Korn shell works fine, and much faster.  Using the C shell for this
+# will almost certainly break everything, but it's Unix tradition to
+# allow you to shoot yourself in the foot if you want to :-)
+
+MAKE_SHELL?=	sh
+.if ${MAKE_SHELL} == "csh"
+CFLAGS+=	-DDEFSHELL=0
+.elif ${MAKE_SHELL} == "sh"
+CFLAGS+=	-DDEFSHELL=1
+.elif ${MAKE_SHELL} == "ksh"
+CFLAGS+=	-DDEFSHELL=2
+.else
+.error "MAKE_SHELL must be set to one of \"csh\", \"sh\" or \"ksh\"."
+.endif
+
 .include <bsd.prog.mk>
Index: Makefile.dist
===================================================================
RCS file: /home/ncvs/src/usr.bin/make/Makefile.dist,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 Makefile.dist
--- Makefile.dist	1994/05/27 12:32:13	1.1.1.1
+++ Makefile.dist	2001/05/18 15:34:48
@@ -1,7 +1,7 @@
 # a very simple makefile...
 pmake:
 	@echo 'make started.'
-	cc -I. -c *.c
+	cc -DDEFSHELL=1 -I. -c *.c
 	cd lst.lib; cc -I.. -c *.c
 	cc *.o lst.lib/*.o -o pmake
 	@echo 'make completed.'
Index: config.h
===================================================================
RCS file: /home/ncvs/src/usr.bin/make/config.h,v
retrieving revision 1.9
diff -u -r1.9 config.h
--- config.h	1999/09/10 20:51:59	1.9
+++ config.h	2001/05/18 15:35:11
@@ -39,8 +39,6 @@
  * $FreeBSD: src/usr.bin/make/config.h,v 1.9 1999/09/10 20:51:59 julian Exp $
  */
 
-#define	DEFSHELL	1			/* Bourne shell */
-
 /*
  * DEFMAXJOBS
  * DEFMAXLOCAL
Index: job.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/make/job.c,v
retrieving revision 1.17.2.2
diff -u -r1.17.2.2 job.c
--- job.c	2001/02/13 03:13:57	1.17.2.2
+++ job.c	2001/05/18 15:39:14
@@ -198,6 +198,16 @@
     "v", "e",
 },
     /*
+     * KSH description. The Korn shell has a superset of
+     * the Bourne shell's functionality.
+     */
+{
+    "ksh",
+    TRUE, "set -", "set -v", "set -", 5,
+    TRUE, "set -e", "set +e",
+    "v", "e",
+},
+    /*
      * UNKNOWN.
      */
 {
Index: main.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/make/main.c,v
retrieving revision 1.35.2.4
diff -u -r1.35.2.4 main.c
--- main.c	2001/03/04 09:40:32	1.35.2.4
+++ main.c	2001/05/18 15:38:38
@@ -486,6 +486,13 @@
 					/* avoid faults on read-only strings */
 	static char syspath[] = _PATH_DEFSYSPATH;
 
+#if DEFSHELL == 2
+	/*
+	 * Turn off ENV to make ksh happier.
+	 */
+	unsetenv("ENV");
+#endif
+
 #ifdef RLIMIT_NOFILE
 	/*
 	 * get rid of resource limit on file descriptors
@@ -1034,7 +1041,13 @@
 	(void) dup2(fds[1], 1);
 	(void) close(fds[1]);
 
+#if DEFSHELL == 1
 	(void) execv("/bin/sh", args);
+#elif DEFSHELL == 2
+	(void) execv("/bin/ksh", args);
+#else
+#error "DEFSHELL must be 1 or 2."
+#endif
 	_exit(1);
 	/*NOTREACHED*/
 

-- 
                     /
                    /__  __            Akinori.org / MUSHA.org
                   / )  )  ) )  /     FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ /  ( (__(  @ iDaemons.org / and.or.jp

"Freeze this moment a little bit longer, make each impression
  a little bit stronger..  Experience slips away -- Time stand still"

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86ofsqejx6.wl>