LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH] Remove the new perl dependency from build.
@ 2008-02-16  2:10 Rob Landley
  2008-02-16  2:52 ` H. Peter Anvin
  2008-02-16 11:24 ` Sam Ravnborg
  0 siblings, 2 replies; 3+ messages in thread
From: Rob Landley @ 2008-02-16  2:10 UTC (permalink / raw)
  To: linux-kernel; +Cc: miltonm, hpa, Sam Ravnborg, Andrew Morton

From: Rob Landley <rob@landley.net>

Remove perl dependency introduced in 2.6.25-rc1, by shipping kernel/timeconst.h
with all the "canned" values so perl is only used to regenerate it if that
file is deleted.

Removed the special case "canned" logic from the perl script (it always requires
Math::bigint when it runs now).  Moved the list of canned values into
kernel/Makefile.  (It's already a selection menu in kconfig, so you can't
just feed arbitrary values into it anyway.  If you add a new value to kconfig,
add it to kernel/Makefile as well and delete kernel/timeconst.h so the build
recreates it.)

Signed-off-by: Rob Landley <rob@landley.net>
---

 kernel/Makefile     |    6 
 kernel/timeconst.h  |  537 ++++++++++++++++++++++++++++++++++++++++++
 kernel/timeconst.pl |  281 ++-------------------
 3 files changed, 567 insertions(+), 257 deletions(-)

I have a build system that's been happily building kernels since 2.6.16,
which can't build 2.6.25-rc1:

>   TIMEC   kernel/timeconst.h
> /bin/sh: perl: not found
> make[1]: *** [kernel/timeconst.h] Error 127
> make: *** [kernel] Error 2
> make: *** Waiting for unfinished jobs....

Building the kernel has never required perl before, and it's a large change to
need to build perl on x86, arm, mips, powerpc, m68k, sh4, and so on to get a
native build environment that can compile a kernel, when I didn't need to do
this for 2.6.24 or any previous version.

For the record, a self-bootstrapping system (built from linux, busybox,
uClibc, binutils, gcc, make, and bash) requires the following commands to
natively recompile everything:

At absolute paths:
  /bin/bash, /bin/sh, and /lib/ld-uClinux.so.0

In $PATH:
  ar, as, awk, basename, cat, cc, chmod, chown, cmp, cp, cut, date, dd, diff,
  dirname, echo, egrep, env, expr, find, gcc, grep, gzip, hostname, id,
  install, ld, ln, ls, make, mkdir, mktemp, mv, nm, od, patch, pwd, readlink,
  rm, rmdir, sed, sha1sum, sleep, sort, tail, tar, touch, tr, true, uname,
  uniq, wc, which, whoami.

(It also needs some /dev stuff and shared libraries, of course.  But no
bison, no lexx, and no perl.)

diff -ru linux-2.6.25-rc1/kernel/timeconst.pl linux-2.6.25-new/kernel/timeconst.pl
--- linux-2.6.25-rc1/kernel/timeconst.pl	2008-02-10 16:18:14.000000000 -0600
+++ linux-2.6.25-new/kernel/timeconst.pl	2008-02-15 17:52:02.000000000 -0600
@@ -11,210 +11,10 @@
 #
 
 #
-# Usage: timeconst.pl HZ > timeconst.h
+# Usage: timeconst.pl HZ... > timeconst.h
 #
 
-# Precomputed values for systems without Math::BigInt
-# Generated by:
 # timeconst.pl --can 24 32 48 64 100 122 128 200 250 256 300 512 1000 1024 1200
-%canned_values = (
-	24 => [
-		'0xa6aaaaab','0x2aaaaaa',26,
-		'0xa6aaaaaaaaaaaaab','0x2aaaaaaaaaaaaaa',58,
-		125,3,
-		'0xc49ba5e4','0x1fbe76c8b4',37,
-		'0xc49ba5e353f7ceda','0x1fbe76c8b439581062',69,
-		3,125,
-		'0xa2c2aaab','0xaaaa',16,
-		'0xa2c2aaaaaaaaaaab','0xaaaaaaaaaaaa',48,
-		125000,3,
-		'0xc9539b89','0x7fffbce4217d',47,
-		'0xc9539b8887229e91','0x7fffbce4217d2849cb25',79,
-		3,125000,
-	], 32 => [
-		'0xfa000000','0x6000000',27,
-		'0xfa00000000000000','0x600000000000000',59,
-		125,4,
-		'0x83126e98','0xfdf3b645a',36,
-		'0x83126e978d4fdf3c','0xfdf3b645a1cac0831',68,
-		4,125,
-		'0xf4240000','0x0',17,
-		'0xf424000000000000','0x0',49,
-		31250,1,
-		'0x8637bd06','0x3fff79c842fa',46,
-		'0x8637bd05af6c69b6','0x3fff79c842fa5093964a',78,
-		1,31250,
-	], 48 => [
-		'0xa6aaaaab','0x6aaaaaa',27,
-		'0xa6aaaaaaaaaaaaab','0x6aaaaaaaaaaaaaa',59,
-		125,6,
-		'0xc49ba5e4','0xfdf3b645a',36,
-		'0xc49ba5e353f7ceda','0xfdf3b645a1cac0831',68,
-		6,125,
-		'0xa2c2aaab','0x15555',17,
-		'0xa2c2aaaaaaaaaaab','0x1555555555555',49,
-		62500,3,
-		'0xc9539b89','0x3fffbce4217d',46,
-		'0xc9539b8887229e91','0x3fffbce4217d2849cb25',78,
-		3,62500,
-	], 64 => [
-		'0xfa000000','0xe000000',28,
-		'0xfa00000000000000','0xe00000000000000',60,
-		125,8,
-		'0x83126e98','0x7ef9db22d',35,
-		'0x83126e978d4fdf3c','0x7ef9db22d0e560418',67,
-		8,125,
-		'0xf4240000','0x0',18,
-		'0xf424000000000000','0x0',50,
-		15625,1,
-		'0x8637bd06','0x1fff79c842fa',45,
-		'0x8637bd05af6c69b6','0x1fff79c842fa5093964a',77,
-		1,15625,
-	], 100 => [
-		'0xa0000000','0x0',28,
-		'0xa000000000000000','0x0',60,
-		10,1,
-		'0xcccccccd','0x733333333',35,
-		'0xcccccccccccccccd','0x73333333333333333',67,
-		1,10,
-		'0x9c400000','0x0',18,
-		'0x9c40000000000000','0x0',50,
-		10000,1,
-		'0xd1b71759','0x1fff2e48e8a7',45,
-		'0xd1b71758e219652c','0x1fff2e48e8a71de69ad4',77,
-		1,10000,
-	], 122 => [
-		'0x8325c53f','0xfbcda3a',28,
-		'0x8325c53ef368eb05','0xfbcda3ac10c9714',60,
-		500,61,
-		'0xf9db22d1','0x7fbe76c8b',35,
-		'0xf9db22d0e560418a','0x7fbe76c8b43958106',67,
-		61,500,
-		'0x8012e2a0','0x3ef36',18,
-		'0x8012e29f79b47583','0x3ef368eb04325',50,
-		500000,61,
-		'0xffda4053','0x1ffffbce4217',45,
-		'0xffda4052d666a983','0x1ffffbce4217d2849cb2',77,
-		61,500000,
-	], 128 => [
-		'0xfa000000','0x1e000000',29,
-		'0xfa00000000000000','0x1e00000000000000',61,
-		125,16,
-		'0x83126e98','0x3f7ced916',34,
-		'0x83126e978d4fdf3c','0x3f7ced916872b020c',66,
-		16,125,
-		'0xf4240000','0x40000',19,
-		'0xf424000000000000','0x4000000000000',51,
-		15625,2,
-		'0x8637bd06','0xfffbce4217d',44,
-		'0x8637bd05af6c69b6','0xfffbce4217d2849cb25',76,
-		2,15625,
-	], 200 => [
-		'0xa0000000','0x0',29,
-		'0xa000000000000000','0x0',61,
-		5,1,
-		'0xcccccccd','0x333333333',34,
-		'0xcccccccccccccccd','0x33333333333333333',66,
-		1,5,
-		'0x9c400000','0x0',19,
-		'0x9c40000000000000','0x0',51,
-		5000,1,
-		'0xd1b71759','0xfff2e48e8a7',44,
-		'0xd1b71758e219652c','0xfff2e48e8a71de69ad4',76,
-		1,5000,
-	], 250 => [
-		'0x80000000','0x0',29,
-		'0x8000000000000000','0x0',61,
-		4,1,
-		'0x80000000','0x180000000',33,
-		'0x8000000000000000','0x18000000000000000',65,
-		1,4,
-		'0xfa000000','0x0',20,
-		'0xfa00000000000000','0x0',52,
-		4000,1,
-		'0x83126e98','0x7ff7ced9168',43,
-		'0x83126e978d4fdf3c','0x7ff7ced916872b020c4',75,
-		1,4000,
-	], 256 => [
-		'0xfa000000','0x3e000000',30,
-		'0xfa00000000000000','0x3e00000000000000',62,
-		125,32,
-		'0x83126e98','0x1fbe76c8b',33,
-		'0x83126e978d4fdf3c','0x1fbe76c8b43958106',65,
-		32,125,
-		'0xf4240000','0xc0000',20,
-		'0xf424000000000000','0xc000000000000',52,
-		15625,4,
-		'0x8637bd06','0x7ffde7210be',43,
-		'0x8637bd05af6c69b6','0x7ffde7210be9424e592',75,
-		4,15625,
-	], 300 => [
-		'0xd5555556','0x2aaaaaaa',30,
-		'0xd555555555555556','0x2aaaaaaaaaaaaaaa',62,
-		10,3,
-		'0x9999999a','0x1cccccccc',33,
-		'0x999999999999999a','0x1cccccccccccccccc',65,
-		3,10,
-		'0xd0555556','0xaaaaa',20,
-		'0xd055555555555556','0xaaaaaaaaaaaaa',52,
-		10000,3,
-		'0x9d495183','0x7ffcb923a29',43,
-		'0x9d495182a9930be1','0x7ffcb923a29c779a6b5',75,
-		3,10000,
-	], 512 => [
-		'0xfa000000','0x7e000000',31,
-		'0xfa00000000000000','0x7e00000000000000',63,
-		125,64,
-		'0x83126e98','0xfdf3b645',32,
-		'0x83126e978d4fdf3c','0xfdf3b645a1cac083',64,
-		64,125,
-		'0xf4240000','0x1c0000',21,
-		'0xf424000000000000','0x1c000000000000',53,
-		15625,8,
-		'0x8637bd06','0x3ffef39085f',42,
-		'0x8637bd05af6c69b6','0x3ffef39085f4a1272c9',74,
-		8,15625,
-	], 1000 => [
-		'0x80000000','0x0',31,
-		'0x8000000000000000','0x0',63,
-		1,1,
-		'0x80000000','0x0',31,
-		'0x8000000000000000','0x0',63,
-		1,1,
-		'0xfa000000','0x0',22,
-		'0xfa00000000000000','0x0',54,
-		1000,1,
-		'0x83126e98','0x1ff7ced9168',41,
-		'0x83126e978d4fdf3c','0x1ff7ced916872b020c4',73,
-		1,1000,
-	], 1024 => [
-		'0xfa000000','0xfe000000',32,
-		'0xfa00000000000000','0xfe00000000000000',64,
-		125,128,
-		'0x83126e98','0x7ef9db22',31,
-		'0x83126e978d4fdf3c','0x7ef9db22d0e56041',63,
-		128,125,
-		'0xf4240000','0x3c0000',22,
-		'0xf424000000000000','0x3c000000000000',54,
-		15625,16,
-		'0x8637bd06','0x1fff79c842f',41,
-		'0x8637bd05af6c69b6','0x1fff79c842fa5093964',73,
-		16,15625,
-	], 1200 => [
-		'0xd5555556','0xd5555555',32,
-		'0xd555555555555556','0xd555555555555555',64,
-		5,6,
-		'0x9999999a','0x66666666',31,
-		'0x999999999999999a','0x6666666666666666',63,
-		6,5,
-		'0xd0555556','0x2aaaaa',22,
-		'0xd055555555555556','0x2aaaaaaaaaaaaa',54,
-		2500,3,
-		'0x9d495183','0x1ffcb923a29',41,
-		'0x9d495182a9930be1','0x1ffcb923a29c779a6b5',73,
-		3,2500,
-	]
-);
 
 $has_bigint = eval 'use Math::BigInt qw(bgcd); 1;';
 
@@ -305,8 +105,7 @@
 	my $s, $m, $a, $g;
 
 	if (!$has_bigint) {
-		die "$0: HZ == $hz not canned and ".
-		    "Math::BigInt not available\n";
+		die "$0: Math::BigInt not available\n";
 	}
 
 	# MSEC conversions
@@ -323,19 +122,7 @@
 	my($hz, @val) = @_;
 	my $pfx, $bit, $suf, $s, $m, $a;
 
-	print "/* Automatically generated by kernel/timeconst.pl */\n";
-	print "/* Conversion constants for HZ == $hz */\n";
-	print "\n";
-	print "#ifndef KERNEL_TIMECONST_H\n";
-	print "#define KERNEL_TIMECONST_H\n";
-	print "\n";
-
-	print "#include <linux/param.h>\n";
-
-	print "\n";
-	print "#if HZ != $hz\n";
-	print "#error \"kernel/timeconst.h has the wrong HZ value!\"\n";
-	print "#endif\n";
+	print "HZ == $hz\n";
 	print "\n";
 
 	foreach $pfx ('HZ_TO_MSEC','MSEC_TO_HZ',
@@ -352,51 +139,37 @@
 		}
 	}
 
-	print "\n";
-	print "#endif /* KERNEL_TIMECONST_H */\n";
+	print "\n#elif "
 }
 
-($hz) = @ARGV;
+#($hz) = @ARGV;
 
-# Use this to generate the %canned_values structure
-if ($hz eq '--can') {
-	shift(@ARGV);
-	@hzlist = sort {$a <=> $b} (@ARGV);
-
-	print "# Precomputed values for systems without Math::BigInt\n";
-	print "# Generated by:\n";
-	print "# timeconst.pl --can ", join(' ', @hzlist), "\n";
-	print "\%canned_values = (\n";
-	my $pf = "\t";
-	foreach $hz (@hzlist) {
-		my @values = compute_values($hz);
-		print "$pf$hz => [\n";
-		while (scalar(@values)) {
-			my $bit;
-			foreach $bit (32, 64) {
-				my $m = shift(@values);
-				my $a = shift(@values);
-				my $s = shift(@values);
-				print "\t\t\'",$m,"\',\'",$a,"\',",$s,",\n";
-			}
-			my $n = shift(@values);
-			my $d = shift(@values);
-			print "\t\t",$n,',',$d,",\n";
-		}
-		print "\t]";
-		$pf = ', ';
-	}
-	print "\n);\n";
-} else {
-	$hz += 0;			# Force to number
+print "/* Automatically generated by kernel/timeconst.pl */\n";
+print "/* Conversion constants for HZ */\n";
+print "\n";
+print "#ifndef KERNEL_TIMECONST_H\n";
+print "#define KERNEL_TIMECONST_H\n";
+print "\n";
+
+print "#include <linux/param.h>\n";
+
+print "#if ";
+
+foreach $hz (@ARGV)
+{
+	#$hz += 0;			# Force to number
 	if ($hz < 1) {
 		die "Usage: $0 HZ\n";
 	}
 
-	@val = @{$canned_values{$hz}};
-	if (!defined(@val)) {
-		@val = compute_values($hz);
-	}
+	@val = compute_values($hz);
 	output($hz, @val);
 }
+
+print "1\n";
+print "#error \"kernel/timeconst.h has unknown HZ value!\"\n";
+print "#endif\n";
+print "\n";
+print "#endif /* KERNEL_TIMECONST_H */\n";
+
 exit 0;
--- /dev/null	2007-10-16 17:06:33.000000000 -0500
+++ linux-new/kernel/timeconst.h	2008-02-15 18:39:01.000000000 -0600
@@ -0,0 +1,537 @@
+/* Automatically generated by kernel/timeconst.pl */
+/* Conversion constants for HZ */
+
+#ifndef KERNEL_TIMECONST_H
+#define KERNEL_TIMECONST_H
+
+#include <linux/param.h>
+#if HZ == 24
+
+#define HZ_TO_MSEC_MUL32        0xa6aaaaab
+#define HZ_TO_MSEC_ADJ32        0x2aaaaaa
+#define HZ_TO_MSEC_SHR32        26
+#define HZ_TO_MSEC_MUL64        0xa6aaaaaaaaaaaaab
+#define HZ_TO_MSEC_ADJ64        0x2aaaaaaaaaaaaaa
+#define HZ_TO_MSEC_SHR64        58
+#define HZ_TO_MSEC_NUM          125
+#define HZ_TO_MSEC_DEN          3
+#define MSEC_TO_HZ_MUL32        0xc49ba5e4
+#define MSEC_TO_HZ_ADJ32        0x1fbe76c8b4
+#define MSEC_TO_HZ_SHR32        37
+#define MSEC_TO_HZ_MUL64        0xc49ba5e353f7ceda
+#define MSEC_TO_HZ_ADJ64        0x1fbe76c8b439581062
+#define MSEC_TO_HZ_SHR64        69
+#define MSEC_TO_HZ_NUM          3
+#define MSEC_TO_HZ_DEN          125
+#define HZ_TO_USEC_MUL32        0xa2c2aaab
+#define HZ_TO_USEC_ADJ32        0xaaaa
+#define HZ_TO_USEC_SHR32        16
+#define HZ_TO_USEC_MUL64        0xa2c2aaaaaaaaaaab
+#define HZ_TO_USEC_ADJ64        0xaaaaaaaaaaaa
+#define HZ_TO_USEC_SHR64        48
+#define HZ_TO_USEC_NUM          125000
+#define HZ_TO_USEC_DEN          3
+#define USEC_TO_HZ_MUL32        0xc9539b89
+#define USEC_TO_HZ_ADJ32        0x7fffbce4217d
+#define USEC_TO_HZ_SHR32        47
+#define USEC_TO_HZ_MUL64        0xc9539b8887229e91
+#define USEC_TO_HZ_ADJ64        0x7fffbce4217d2849cb25
+#define USEC_TO_HZ_SHR64        79
+#define USEC_TO_HZ_NUM          3
+#define USEC_TO_HZ_DEN          125000
+
+#elif HZ == 32
+
+#define HZ_TO_MSEC_MUL32        0xfa000000
+#define HZ_TO_MSEC_ADJ32        0x6000000
+#define HZ_TO_MSEC_SHR32        27
+#define HZ_TO_MSEC_MUL64        0xfa00000000000000
+#define HZ_TO_MSEC_ADJ64        0x600000000000000
+#define HZ_TO_MSEC_SHR64        59
+#define HZ_TO_MSEC_NUM          125
+#define HZ_TO_MSEC_DEN          4
+#define MSEC_TO_HZ_MUL32        0x83126e98
+#define MSEC_TO_HZ_ADJ32        0xfdf3b645a
+#define MSEC_TO_HZ_SHR32        36
+#define MSEC_TO_HZ_MUL64        0x83126e978d4fdf3c
+#define MSEC_TO_HZ_ADJ64        0xfdf3b645a1cac0831
+#define MSEC_TO_HZ_SHR64        68
+#define MSEC_TO_HZ_NUM          4
+#define MSEC_TO_HZ_DEN          125
+#define HZ_TO_USEC_MUL32        0xf4240000
+#define HZ_TO_USEC_ADJ32        0x0
+#define HZ_TO_USEC_SHR32        17
+#define HZ_TO_USEC_MUL64        0xf424000000000000
+#define HZ_TO_USEC_ADJ64        0x0
+#define HZ_TO_USEC_SHR64        49
+#define HZ_TO_USEC_NUM          31250
+#define HZ_TO_USEC_DEN          1
+#define USEC_TO_HZ_MUL32        0x8637bd06
+#define USEC_TO_HZ_ADJ32        0x3fff79c842fa
+#define USEC_TO_HZ_SHR32        46
+#define USEC_TO_HZ_MUL64        0x8637bd05af6c69b6
+#define USEC_TO_HZ_ADJ64        0x3fff79c842fa5093964a
+#define USEC_TO_HZ_SHR64        78
+#define USEC_TO_HZ_NUM          1
+#define USEC_TO_HZ_DEN          31250
+
+#elif HZ == 48
+
+#define HZ_TO_MSEC_MUL32        0xa6aaaaab
+#define HZ_TO_MSEC_ADJ32        0x6aaaaaa
+#define HZ_TO_MSEC_SHR32        27
+#define HZ_TO_MSEC_MUL64        0xa6aaaaaaaaaaaaab
+#define HZ_TO_MSEC_ADJ64        0x6aaaaaaaaaaaaaa
+#define HZ_TO_MSEC_SHR64        59
+#define HZ_TO_MSEC_NUM          125
+#define HZ_TO_MSEC_DEN          6
+#define MSEC_TO_HZ_MUL32        0xc49ba5e4
+#define MSEC_TO_HZ_ADJ32        0xfdf3b645a
+#define MSEC_TO_HZ_SHR32        36
+#define MSEC_TO_HZ_MUL64        0xc49ba5e353f7ceda
+#define MSEC_TO_HZ_ADJ64        0xfdf3b645a1cac0831
+#define MSEC_TO_HZ_SHR64        68
+#define MSEC_TO_HZ_NUM          6
+#define MSEC_TO_HZ_DEN          125
+#define HZ_TO_USEC_MUL32        0xa2c2aaab
+#define HZ_TO_USEC_ADJ32        0x15555
+#define HZ_TO_USEC_SHR32        17
+#define HZ_TO_USEC_MUL64        0xa2c2aaaaaaaaaaab
+#define HZ_TO_USEC_ADJ64        0x1555555555555
+#define HZ_TO_USEC_SHR64        49
+#define HZ_TO_USEC_NUM          62500
+#define HZ_TO_USEC_DEN          3
+#define USEC_TO_HZ_MUL32        0xc9539b89
+#define USEC_TO_HZ_ADJ32        0x3fffbce4217d
+#define USEC_TO_HZ_SHR32        46
+#define USEC_TO_HZ_MUL64        0xc9539b8887229e91
+#define USEC_TO_HZ_ADJ64        0x3fffbce4217d2849cb25
+#define USEC_TO_HZ_SHR64        78
+#define USEC_TO_HZ_NUM          3
+#define USEC_TO_HZ_DEN          62500
+
+#elif HZ == 64
+
+#define HZ_TO_MSEC_MUL32        0xfa000000
+#define HZ_TO_MSEC_ADJ32        0xe000000
+#define HZ_TO_MSEC_SHR32        28
+#define HZ_TO_MSEC_MUL64        0xfa00000000000000
+#define HZ_TO_MSEC_ADJ64        0xe00000000000000
+#define HZ_TO_MSEC_SHR64        60
+#define HZ_TO_MSEC_NUM          125
+#define HZ_TO_MSEC_DEN          8
+#define MSEC_TO_HZ_MUL32        0x83126e98
+#define MSEC_TO_HZ_ADJ32        0x7ef9db22d
+#define MSEC_TO_HZ_SHR32        35
+#define MSEC_TO_HZ_MUL64        0x83126e978d4fdf3c
+#define MSEC_TO_HZ_ADJ64        0x7ef9db22d0e560418
+#define MSEC_TO_HZ_SHR64        67
+#define MSEC_TO_HZ_NUM          8
+#define MSEC_TO_HZ_DEN          125
+#define HZ_TO_USEC_MUL32        0xf4240000
+#define HZ_TO_USEC_ADJ32        0x0
+#define HZ_TO_USEC_SHR32        18
+#define HZ_TO_USEC_MUL64        0xf424000000000000
+#define HZ_TO_USEC_ADJ64        0x0
+#define HZ_TO_USEC_SHR64        50
+#define HZ_TO_USEC_NUM          15625
+#define HZ_TO_USEC_DEN          1
+#define USEC_TO_HZ_MUL32        0x8637bd06
+#define USEC_TO_HZ_ADJ32        0x1fff79c842fa
+#define USEC_TO_HZ_SHR32        45
+#define USEC_TO_HZ_MUL64        0x8637bd05af6c69b6
+#define USEC_TO_HZ_ADJ64        0x1fff79c842fa5093964a
+#define USEC_TO_HZ_SHR64        77
+#define USEC_TO_HZ_NUM          1
+#define USEC_TO_HZ_DEN          15625
+
+#elif HZ == 100
+
+#define HZ_TO_MSEC_MUL32        0xa0000000
+#define HZ_TO_MSEC_ADJ32        0x0
+#define HZ_TO_MSEC_SHR32        28
+#define HZ_TO_MSEC_MUL64        0xa000000000000000
+#define HZ_TO_MSEC_ADJ64        0x0
+#define HZ_TO_MSEC_SHR64        60
+#define HZ_TO_MSEC_NUM          10
+#define HZ_TO_MSEC_DEN          1
+#define MSEC_TO_HZ_MUL32        0xcccccccd
+#define MSEC_TO_HZ_ADJ32        0x733333333
+#define MSEC_TO_HZ_SHR32        35
+#define MSEC_TO_HZ_MUL64        0xcccccccccccccccd
+#define MSEC_TO_HZ_ADJ64        0x73333333333333333
+#define MSEC_TO_HZ_SHR64        67
+#define MSEC_TO_HZ_NUM          1
+#define MSEC_TO_HZ_DEN          10
+#define HZ_TO_USEC_MUL32        0x9c400000
+#define HZ_TO_USEC_ADJ32        0x0
+#define HZ_TO_USEC_SHR32        18
+#define HZ_TO_USEC_MUL64        0x9c40000000000000
+#define HZ_TO_USEC_ADJ64        0x0
+#define HZ_TO_USEC_SHR64        50
+#define HZ_TO_USEC_NUM          10000
+#define HZ_TO_USEC_DEN          1
+#define USEC_TO_HZ_MUL32        0xd1b71759
+#define USEC_TO_HZ_ADJ32        0x1fff2e48e8a7
+#define USEC_TO_HZ_SHR32        45
+#define USEC_TO_HZ_MUL64        0xd1b71758e219652c
+#define USEC_TO_HZ_ADJ64        0x1fff2e48e8a71de69ad4
+#define USEC_TO_HZ_SHR64        77
+#define USEC_TO_HZ_NUM          1
+#define USEC_TO_HZ_DEN          10000
+
+#elif HZ == 122
+
+#define HZ_TO_MSEC_MUL32        0x8325c53f
+#define HZ_TO_MSEC_ADJ32        0xfbcda3a
+#define HZ_TO_MSEC_SHR32        28
+#define HZ_TO_MSEC_MUL64        0x8325c53ef368eb05
+#define HZ_TO_MSEC_ADJ64        0xfbcda3ac10c9714
+#define HZ_TO_MSEC_SHR64        60
+#define HZ_TO_MSEC_NUM          500
+#define HZ_TO_MSEC_DEN          61
+#define MSEC_TO_HZ_MUL32        0xf9db22d1
+#define MSEC_TO_HZ_ADJ32        0x7fbe76c8b
+#define MSEC_TO_HZ_SHR32        35
+#define MSEC_TO_HZ_MUL64        0xf9db22d0e560418a
+#define MSEC_TO_HZ_ADJ64        0x7fbe76c8b43958106
+#define MSEC_TO_HZ_SHR64        67
+#define MSEC_TO_HZ_NUM          61
+#define MSEC_TO_HZ_DEN          500
+#define HZ_TO_USEC_MUL32        0x8012e2a0
+#define HZ_TO_USEC_ADJ32        0x3ef36
+#define HZ_TO_USEC_SHR32        18
+#define HZ_TO_USEC_MUL64        0x8012e29f79b47583
+#define HZ_TO_USEC_ADJ64        0x3ef368eb04325
+#define HZ_TO_USEC_SHR64        50
+#define HZ_TO_USEC_NUM          500000
+#define HZ_TO_USEC_DEN          61
+#define USEC_TO_HZ_MUL32        0xffda4053
+#define USEC_TO_HZ_ADJ32        0x1ffffbce4217
+#define USEC_TO_HZ_SHR32        45
+#define USEC_TO_HZ_MUL64        0xffda4052d666a983
+#define USEC_TO_HZ_ADJ64        0x1ffffbce4217d2849cb2
+#define USEC_TO_HZ_SHR64        77
+#define USEC_TO_HZ_NUM          61
+#define USEC_TO_HZ_DEN          500000
+
+#elif HZ == 128
+
+#define HZ_TO_MSEC_MUL32        0xfa000000
+#define HZ_TO_MSEC_ADJ32        0x1e000000
+#define HZ_TO_MSEC_SHR32        29
+#define HZ_TO_MSEC_MUL64        0xfa00000000000000
+#define HZ_TO_MSEC_ADJ64        0x1e00000000000000
+#define HZ_TO_MSEC_SHR64        61
+#define HZ_TO_MSEC_NUM          125
+#define HZ_TO_MSEC_DEN          16
+#define MSEC_TO_HZ_MUL32        0x83126e98
+#define MSEC_TO_HZ_ADJ32        0x3f7ced916
+#define MSEC_TO_HZ_SHR32        34
+#define MSEC_TO_HZ_MUL64        0x83126e978d4fdf3c
+#define MSEC_TO_HZ_ADJ64        0x3f7ced916872b020c
+#define MSEC_TO_HZ_SHR64        66
+#define MSEC_TO_HZ_NUM          16
+#define MSEC_TO_HZ_DEN          125
+#define HZ_TO_USEC_MUL32        0xf4240000
+#define HZ_TO_USEC_ADJ32        0x40000
+#define HZ_TO_USEC_SHR32        19
+#define HZ_TO_USEC_MUL64        0xf424000000000000
+#define HZ_TO_USEC_ADJ64        0x4000000000000
+#define HZ_TO_USEC_SHR64        51
+#define HZ_TO_USEC_NUM          15625
+#define HZ_TO_USEC_DEN          2
+#define USEC_TO_HZ_MUL32        0x8637bd06
+#define USEC_TO_HZ_ADJ32        0xfffbce4217d
+#define USEC_TO_HZ_SHR32        44
+#define USEC_TO_HZ_MUL64        0x8637bd05af6c69b6
+#define USEC_TO_HZ_ADJ64        0xfffbce4217d2849cb25
+#define USEC_TO_HZ_SHR64        76
+#define USEC_TO_HZ_NUM          2
+#define USEC_TO_HZ_DEN          15625
+
+#elif HZ == 200
+
+#define HZ_TO_MSEC_MUL32        0xa0000000
+#define HZ_TO_MSEC_ADJ32        0x0
+#define HZ_TO_MSEC_SHR32        29
+#define HZ_TO_MSEC_MUL64        0xa000000000000000
+#define HZ_TO_MSEC_ADJ64        0x0
+#define HZ_TO_MSEC_SHR64        61
+#define HZ_TO_MSEC_NUM          5
+#define HZ_TO_MSEC_DEN          1
+#define MSEC_TO_HZ_MUL32        0xcccccccd
+#define MSEC_TO_HZ_ADJ32        0x333333333
+#define MSEC_TO_HZ_SHR32        34
+#define MSEC_TO_HZ_MUL64        0xcccccccccccccccd
+#define MSEC_TO_HZ_ADJ64        0x33333333333333333
+#define MSEC_TO_HZ_SHR64        66
+#define MSEC_TO_HZ_NUM          1
+#define MSEC_TO_HZ_DEN          5
+#define HZ_TO_USEC_MUL32        0x9c400000
+#define HZ_TO_USEC_ADJ32        0x0
+#define HZ_TO_USEC_SHR32        19
+#define HZ_TO_USEC_MUL64        0x9c40000000000000
+#define HZ_TO_USEC_ADJ64        0x0
+#define HZ_TO_USEC_SHR64        51
+#define HZ_TO_USEC_NUM          5000
+#define HZ_TO_USEC_DEN          1
+#define USEC_TO_HZ_MUL32        0xd1b71759
+#define USEC_TO_HZ_ADJ32        0xfff2e48e8a7
+#define USEC_TO_HZ_SHR32        44
+#define USEC_TO_HZ_MUL64        0xd1b71758e219652c
+#define USEC_TO_HZ_ADJ64        0xfff2e48e8a71de69ad4
+#define USEC_TO_HZ_SHR64        76
+#define USEC_TO_HZ_NUM          1
+#define USEC_TO_HZ_DEN          5000
+
+#elif HZ == 250
+
+#define HZ_TO_MSEC_MUL32        0x80000000
+#define HZ_TO_MSEC_ADJ32        0x0
+#define HZ_TO_MSEC_SHR32        29
+#define HZ_TO_MSEC_MUL64        0x8000000000000000
+#define HZ_TO_MSEC_ADJ64        0x0
+#define HZ_TO_MSEC_SHR64        61
+#define HZ_TO_MSEC_NUM          4
+#define HZ_TO_MSEC_DEN          1
+#define MSEC_TO_HZ_MUL32        0x80000000
+#define MSEC_TO_HZ_ADJ32        0x180000000
+#define MSEC_TO_HZ_SHR32        33
+#define MSEC_TO_HZ_MUL64        0x8000000000000000
+#define MSEC_TO_HZ_ADJ64        0x18000000000000000
+#define MSEC_TO_HZ_SHR64        65
+#define MSEC_TO_HZ_NUM          1
+#define MSEC_TO_HZ_DEN          4
+#define HZ_TO_USEC_MUL32        0xfa000000
+#define HZ_TO_USEC_ADJ32        0x0
+#define HZ_TO_USEC_SHR32        20
+#define HZ_TO_USEC_MUL64        0xfa00000000000000
+#define HZ_TO_USEC_ADJ64        0x0
+#define HZ_TO_USEC_SHR64        52
+#define HZ_TO_USEC_NUM          4000
+#define HZ_TO_USEC_DEN          1
+#define USEC_TO_HZ_MUL32        0x83126e98
+#define USEC_TO_HZ_ADJ32        0x7ff7ced9168
+#define USEC_TO_HZ_SHR32        43
+#define USEC_TO_HZ_MUL64        0x83126e978d4fdf3c
+#define USEC_TO_HZ_ADJ64        0x7ff7ced916872b020c4
+#define USEC_TO_HZ_SHR64        75
+#define USEC_TO_HZ_NUM          1
+#define USEC_TO_HZ_DEN          4000
+
+#elif HZ == 256
+
+#define HZ_TO_MSEC_MUL32        0xfa000000
+#define HZ_TO_MSEC_ADJ32        0x3e000000
+#define HZ_TO_MSEC_SHR32        30
+#define HZ_TO_MSEC_MUL64        0xfa00000000000000
+#define HZ_TO_MSEC_ADJ64        0x3e00000000000000
+#define HZ_TO_MSEC_SHR64        62
+#define HZ_TO_MSEC_NUM          125
+#define HZ_TO_MSEC_DEN          32
+#define MSEC_TO_HZ_MUL32        0x83126e98
+#define MSEC_TO_HZ_ADJ32        0x1fbe76c8b
+#define MSEC_TO_HZ_SHR32        33
+#define MSEC_TO_HZ_MUL64        0x83126e978d4fdf3c
+#define MSEC_TO_HZ_ADJ64        0x1fbe76c8b43958106
+#define MSEC_TO_HZ_SHR64        65
+#define MSEC_TO_HZ_NUM          32
+#define MSEC_TO_HZ_DEN          125
+#define HZ_TO_USEC_MUL32        0xf4240000
+#define HZ_TO_USEC_ADJ32        0xc0000
+#define HZ_TO_USEC_SHR32        20
+#define HZ_TO_USEC_MUL64        0xf424000000000000
+#define HZ_TO_USEC_ADJ64        0xc000000000000
+#define HZ_TO_USEC_SHR64        52
+#define HZ_TO_USEC_NUM          15625
+#define HZ_TO_USEC_DEN          4
+#define USEC_TO_HZ_MUL32        0x8637bd06
+#define USEC_TO_HZ_ADJ32        0x7ffde7210be
+#define USEC_TO_HZ_SHR32        43
+#define USEC_TO_HZ_MUL64        0x8637bd05af6c69b6
+#define USEC_TO_HZ_ADJ64        0x7ffde7210be9424e592
+#define USEC_TO_HZ_SHR64        75
+#define USEC_TO_HZ_NUM          4
+#define USEC_TO_HZ_DEN          15625
+
+#elif HZ == 300
+
+#define HZ_TO_MSEC_MUL32        0xd5555556
+#define HZ_TO_MSEC_ADJ32        0x2aaaaaaa
+#define HZ_TO_MSEC_SHR32        30
+#define HZ_TO_MSEC_MUL64        0xd555555555555556
+#define HZ_TO_MSEC_ADJ64        0x2aaaaaaaaaaaaaaa
+#define HZ_TO_MSEC_SHR64        62
+#define HZ_TO_MSEC_NUM          10
+#define HZ_TO_MSEC_DEN          3
+#define MSEC_TO_HZ_MUL32        0x9999999a
+#define MSEC_TO_HZ_ADJ32        0x1cccccccc
+#define MSEC_TO_HZ_SHR32        33
+#define MSEC_TO_HZ_MUL64        0x999999999999999a
+#define MSEC_TO_HZ_ADJ64        0x1cccccccccccccccc
+#define MSEC_TO_HZ_SHR64        65
+#define MSEC_TO_HZ_NUM          3
+#define MSEC_TO_HZ_DEN          10
+#define HZ_TO_USEC_MUL32        0xd0555556
+#define HZ_TO_USEC_ADJ32        0xaaaaa
+#define HZ_TO_USEC_SHR32        20
+#define HZ_TO_USEC_MUL64        0xd055555555555556
+#define HZ_TO_USEC_ADJ64        0xaaaaaaaaaaaaa
+#define HZ_TO_USEC_SHR64        52
+#define HZ_TO_USEC_NUM          10000
+#define HZ_TO_USEC_DEN          3
+#define USEC_TO_HZ_MUL32        0x9d495183
+#define USEC_TO_HZ_ADJ32        0x7ffcb923a29
+#define USEC_TO_HZ_SHR32        43
+#define USEC_TO_HZ_MUL64        0x9d495182a9930be1
+#define USEC_TO_HZ_ADJ64        0x7ffcb923a29c779a6b5
+#define USEC_TO_HZ_SHR64        75
+#define USEC_TO_HZ_NUM          3
+#define USEC_TO_HZ_DEN          10000
+
+#elif HZ == 512
+
+#define HZ_TO_MSEC_MUL32        0xfa000000
+#define HZ_TO_MSEC_ADJ32        0x7e000000
+#define HZ_TO_MSEC_SHR32        31
+#define HZ_TO_MSEC_MUL64        0xfa00000000000000
+#define HZ_TO_MSEC_ADJ64        0x7e00000000000000
+#define HZ_TO_MSEC_SHR64        63
+#define HZ_TO_MSEC_NUM          125
+#define HZ_TO_MSEC_DEN          64
+#define MSEC_TO_HZ_MUL32        0x83126e98
+#define MSEC_TO_HZ_ADJ32        0xfdf3b645
+#define MSEC_TO_HZ_SHR32        32
+#define MSEC_TO_HZ_MUL64        0x83126e978d4fdf3c
+#define MSEC_TO_HZ_ADJ64        0xfdf3b645a1cac083
+#define MSEC_TO_HZ_SHR64        64
+#define MSEC_TO_HZ_NUM          64
+#define MSEC_TO_HZ_DEN          125
+#define HZ_TO_USEC_MUL32        0xf4240000
+#define HZ_TO_USEC_ADJ32        0x1c0000
+#define HZ_TO_USEC_SHR32        21
+#define HZ_TO_USEC_MUL64        0xf424000000000000
+#define HZ_TO_USEC_ADJ64        0x1c000000000000
+#define HZ_TO_USEC_SHR64        53
+#define HZ_TO_USEC_NUM          15625
+#define HZ_TO_USEC_DEN          8
+#define USEC_TO_HZ_MUL32        0x8637bd06
+#define USEC_TO_HZ_ADJ32        0x3ffef39085f
+#define USEC_TO_HZ_SHR32        42
+#define USEC_TO_HZ_MUL64        0x8637bd05af6c69b6
+#define USEC_TO_HZ_ADJ64        0x3ffef39085f4a1272c9
+#define USEC_TO_HZ_SHR64        74
+#define USEC_TO_HZ_NUM          8
+#define USEC_TO_HZ_DEN          15625
+
+#elif HZ == 1000
+
+#define HZ_TO_MSEC_MUL32        0x80000000
+#define HZ_TO_MSEC_ADJ32        0x0
+#define HZ_TO_MSEC_SHR32        31
+#define HZ_TO_MSEC_MUL64        0x8000000000000000
+#define HZ_TO_MSEC_ADJ64        0x0
+#define HZ_TO_MSEC_SHR64        63
+#define HZ_TO_MSEC_NUM          1
+#define HZ_TO_MSEC_DEN          1
+#define MSEC_TO_HZ_MUL32        0x80000000
+#define MSEC_TO_HZ_ADJ32        0x0
+#define MSEC_TO_HZ_SHR32        31
+#define MSEC_TO_HZ_MUL64        0x8000000000000000
+#define MSEC_TO_HZ_ADJ64        0x0
+#define MSEC_TO_HZ_SHR64        63
+#define MSEC_TO_HZ_NUM          1
+#define MSEC_TO_HZ_DEN          1
+#define HZ_TO_USEC_MUL32        0xfa000000
+#define HZ_TO_USEC_ADJ32        0x0
+#define HZ_TO_USEC_SHR32        22
+#define HZ_TO_USEC_MUL64        0xfa00000000000000
+#define HZ_TO_USEC_ADJ64        0x0
+#define HZ_TO_USEC_SHR64        54
+#define HZ_TO_USEC_NUM          1000
+#define HZ_TO_USEC_DEN          1
+#define USEC_TO_HZ_MUL32        0x83126e98
+#define USEC_TO_HZ_ADJ32        0x1ff7ced9168
+#define USEC_TO_HZ_SHR32        41
+#define USEC_TO_HZ_MUL64        0x83126e978d4fdf3c
+#define USEC_TO_HZ_ADJ64        0x1ff7ced916872b020c4
+#define USEC_TO_HZ_SHR64        73
+#define USEC_TO_HZ_NUM          1
+#define USEC_TO_HZ_DEN          1000
+
+#elif HZ == 1024
+
+#define HZ_TO_MSEC_MUL32        0xfa000000
+#define HZ_TO_MSEC_ADJ32        0xfe000000
+#define HZ_TO_MSEC_SHR32        32
+#define HZ_TO_MSEC_MUL64        0xfa00000000000000
+#define HZ_TO_MSEC_ADJ64        0xfe00000000000000
+#define HZ_TO_MSEC_SHR64        64
+#define HZ_TO_MSEC_NUM          125
+#define HZ_TO_MSEC_DEN          128
+#define MSEC_TO_HZ_MUL32        0x83126e98
+#define MSEC_TO_HZ_ADJ32        0x7ef9db22
+#define MSEC_TO_HZ_SHR32        31
+#define MSEC_TO_HZ_MUL64        0x83126e978d4fdf3c
+#define MSEC_TO_HZ_ADJ64        0x7ef9db22d0e56041
+#define MSEC_TO_HZ_SHR64        63
+#define MSEC_TO_HZ_NUM          128
+#define MSEC_TO_HZ_DEN          125
+#define HZ_TO_USEC_MUL32        0xf4240000
+#define HZ_TO_USEC_ADJ32        0x3c0000
+#define HZ_TO_USEC_SHR32        22
+#define HZ_TO_USEC_MUL64        0xf424000000000000
+#define HZ_TO_USEC_ADJ64        0x3c000000000000
+#define HZ_TO_USEC_SHR64        54
+#define HZ_TO_USEC_NUM          15625
+#define HZ_TO_USEC_DEN          16
+#define USEC_TO_HZ_MUL32        0x8637bd06
+#define USEC_TO_HZ_ADJ32        0x1fff79c842f
+#define USEC_TO_HZ_SHR32        41
+#define USEC_TO_HZ_MUL64        0x8637bd05af6c69b6
+#define USEC_TO_HZ_ADJ64        0x1fff79c842fa5093964
+#define USEC_TO_HZ_SHR64        73
+#define USEC_TO_HZ_NUM          16
+#define USEC_TO_HZ_DEN          15625
+
+#elif HZ == 1200
+
+#define HZ_TO_MSEC_MUL32        0xd5555556
+#define HZ_TO_MSEC_ADJ32        0xd5555555
+#define HZ_TO_MSEC_SHR32        32
+#define HZ_TO_MSEC_MUL64        0xd555555555555556
+#define HZ_TO_MSEC_ADJ64        0xd555555555555555
+#define HZ_TO_MSEC_SHR64        64
+#define HZ_TO_MSEC_NUM          5
+#define HZ_TO_MSEC_DEN          6
+#define MSEC_TO_HZ_MUL32        0x9999999a
+#define MSEC_TO_HZ_ADJ32        0x66666666
+#define MSEC_TO_HZ_SHR32        31
+#define MSEC_TO_HZ_MUL64        0x999999999999999a
+#define MSEC_TO_HZ_ADJ64        0x6666666666666666
+#define MSEC_TO_HZ_SHR64        63
+#define MSEC_TO_HZ_NUM          6
+#define MSEC_TO_HZ_DEN          5
+#define HZ_TO_USEC_MUL32        0xd0555556
+#define HZ_TO_USEC_ADJ32        0x2aaaaa
+#define HZ_TO_USEC_SHR32        22
+#define HZ_TO_USEC_MUL64        0xd055555555555556
+#define HZ_TO_USEC_ADJ64        0x2aaaaaaaaaaaaa
+#define HZ_TO_USEC_SHR64        54
+#define HZ_TO_USEC_NUM          2500
+#define HZ_TO_USEC_DEN          3
+#define USEC_TO_HZ_MUL32        0x9d495183
+#define USEC_TO_HZ_ADJ32        0x1ffcb923a29
+#define USEC_TO_HZ_SHR32        41
+#define USEC_TO_HZ_MUL64        0x9d495182a9930be1
+#define USEC_TO_HZ_ADJ64        0x1ffcb923a29c779a6b5
+#define USEC_TO_HZ_SHR64        73
+#define USEC_TO_HZ_NUM          3
+#define USEC_TO_HZ_DEN          2500
+
+#elif 1
+#error "kernel/timeconst.h has unknown HZ value!"
+#endif
+
+#endif /* KERNEL_TIMECONST_H */
--- linux/hg/kernel/Makefile	2008-02-08 19:06:59.000000000 -0600
+++ linux-new/kernel/Makefile	2008-02-15 19:32:08.000000000 -0600
@@ -95,7 +95,7 @@
 $(obj)/time.o: $(obj)/timeconst.h
 
 quiet_cmd_timeconst  = TIMEC   $@
-      cmd_timeconst  = $(PERL) $< $(CONFIG_HZ) > $@
-targets += timeconst.h
-$(obj)/timeconst.h: $(src)/timeconst.pl FORCE
+      cmd_timeconst  = $(PERL) $< \
+            24 32 48 64 100 122 128 200 250 256 300 512 1000 1024 1200 > $@
+$(obj)/timeconst.h:
 	$(call if_changed,timeconst)


-- 
"One of my most productive days was throwing away 1000 lines of code."
  - Ken Thompson.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] Remove the new perl dependency from build.
  2008-02-16  2:10 [PATCH] Remove the new perl dependency from build Rob Landley
@ 2008-02-16  2:52 ` H. Peter Anvin
  2008-02-16 11:24 ` Sam Ravnborg
  1 sibling, 0 replies; 3+ messages in thread
From: H. Peter Anvin @ 2008-02-16  2:52 UTC (permalink / raw)
  To: Rob Landley; +Cc: linux-kernel, miltonm, Sam Ravnborg, Andrew Morton

Rob Landley wrote:
> 
> Removed the special case "canned" logic from the perl script (it always requires
> Math::bigint when it runs now).  Moved the list of canned values into
> kernel/Makefile.  (It's already a selection menu in kconfig, so you can't
> just feed arbitrary values into it anyway.  If you add a new value to kconfig,
> add it to kernel/Makefile as well and delete kernel/timeconst.h so the build
> recreates it.)
> 

The problem is that for at least one architecture, CONFIG_HZ is settable 
to arbitrary values, so you need a way to invoke the generic code if you 
don't have a pre-canned value available.

I have to admit to having very little interest in this kind of 
minimality exercises, which seem to have pretty much academic value only 
-- in reality, people cross-compile the kernel to go onto this kind of 
minimal boxes.

	-hpa

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] Remove the new perl dependency from build.
  2008-02-16  2:10 [PATCH] Remove the new perl dependency from build Rob Landley
  2008-02-16  2:52 ` H. Peter Anvin
@ 2008-02-16 11:24 ` Sam Ravnborg
  1 sibling, 0 replies; 3+ messages in thread
From: Sam Ravnborg @ 2008-02-16 11:24 UTC (permalink / raw)
  To: Rob Landley; +Cc: linux-kernel, miltonm, hpa, Andrew Morton

Hi Rob.
> 
> Remove perl dependency introduced in 2.6.25-rc1, by shipping kernel/timeconst.h
> with all the "canned" values so perl is only used to regenerate it if that
> file is deleted.
While I agree that we should keep the dependencies low for building a kernel
trying to avoid the perl dependency is in the long rund a dead-end.

I have for a while considered replacing part of the kbuild gmake magic
with a perl script thus pushing towards a mandatory dependency
on perl.

A few comments on the actual patch.

> --- linux/hg/kernel/Makefile	2008-02-08 19:06:59.000000000 -0600
> +++ linux-new/kernel/Makefile	2008-02-15 19:32:08.000000000 -0600
> @@ -95,7 +95,7 @@
>  $(obj)/time.o: $(obj)/timeconst.h
>  
>  quiet_cmd_timeconst  = TIMEC   $@
> -      cmd_timeconst  = $(PERL) $< $(CONFIG_HZ) > $@
> -targets += timeconst.h
> -$(obj)/timeconst.h: $(src)/timeconst.pl FORCE
> +      cmd_timeconst  = $(PERL) $< \
> +            24 32 48 64 100 122 128 200 250 256 300 512 1000 1024 1200 > $@
> +$(obj)/timeconst.h:
>  	$(call if_changed,timeconst)

We will only build timeconst.h if the file is missing and this
is not the desired behaviour.
What could be done to make the perl dependency optional would be to
introduce a small shell wrapper.
If called with a CONFIG_HZ value that is unknow use the perl script
to generate the .h file.
For known HZ values take a copy of the shipped .h file.

The MAkefile bits would looke like this:
      cmd_timeconst  = $(CONFIG_SHELL) $< $(CONFIG_HZ)

targets += timeconst.h
$(obj)/timeconst.h: $(src)/timeconst.sh FORCE
	$(call if_changed,timeconst)

Using 'if_changed' will make sure we call the shell script
when HZ is changed.

	Sam

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-02-16 11:24 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-02-16  2:10 [PATCH] Remove the new perl dependency from build Rob Landley
2008-02-16  2:52 ` H. Peter Anvin
2008-02-16 11:24 ` Sam Ravnborg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).