Mercurial > projects > ldc
annotate revisions.pl.in @ 1138:4c8bb03e4fbc
Update DtoConstFP() to be correct after LLVM r67562, which changed the way the
APFloat constructor expects its i80 APInts to be formatted. (They're now
actually consistent with the x87 format)
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Tue, 24 Mar 2009 15:24:59 +0100 |
parents | 165a920f4e88 |
children | c86a629f24dd |
rev | line source |
---|---|
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
2 |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
3 use strict; |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
4 use warnings; |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
5 use File::stat; |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
6 use Time::localtime; |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
7 |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
8 my $llvm_src = `perl @LLVM_CONFIG@ --src-root`; |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
9 |
1112
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
10 my $svn_info = `svn info $llvm_src 2>/dev/null`; |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
11 |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
12 my $extra_includes = ""; |
1064
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
972
diff
changeset
|
13 my $llvm_rev_str; |
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
972
diff
changeset
|
14 my $llvm_rev_nr; |
1112
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
15 my $llvm_date = ""; |
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
16 |
1112
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
17 if ($svn_info =~ /^URL:.*\/trunk\s*$/m && $svn_info =~ /^Last Changed Rev:\s*(\d+)\s*/m) { |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
18 $llvm_rev_str = qq!"LLVM trunk rev. $1"!; |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
19 $llvm_rev_nr = $1; |
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
20 } else { |
1112
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
21 # Either non-trunk or 'svn info' didn't report "Last Changed Rev". |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
22 $extra_includes = qq!#include "llvm/Config/config.h"!; |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
23 $llvm_rev_str = "PACKAGE_STRING"; |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
24 # Assume latest release, so < any version we should be testing for. |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
25 $llvm_rev_nr = 0; |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
26 } |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
27 |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
28 # Use SVN date even if non-trunk: |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
29 if ($svn_info =~ /^Last Changed Date: ([^(]*?)\s*(\(|$)/m) { |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
30 $llvm_date = qq!" ($1)"!; |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
31 } else { |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
32 # Otherwise, try to get it from the libdir |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
33 my $llvm_lib = `perl @LLVM_CONFIG@ --libdir`; |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
34 $llvm_lib =~ s/\s+$//; |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
35 if (-d $llvm_lib) { |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
36 my $mod_time = ctime(stat($llvm_lib)->mtime); |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
37 $llvm_date = qq!" ($mod_time)"!; |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
38 } |
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
39 } |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
40 |
972
d66ab756c75b
Change the way the version is printed (more verbose, with short hash)
Frits van Bommel <fvbommel wxs.nl>
parents:
873
diff
changeset
|
41 my $ldc_rev = `hg -R@PROJECT_SOURCE_DIR@ log -r qparent --template '{rev}:{node|short} ({date|isodate})' 2>/dev/null || hg -R@PROJECT_SOURCE_DIR@ tip --template '{rev}:{node|short} ({date|isodate})'`; |
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
42 |
873
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
43 my $out = qq!#ifndef LDC_VERSIONS_H |
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
44 #define LDC_VERSIONS_H |
1112
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
45 $extra_includes |
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
46 |
1064
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
972
diff
changeset
|
47 // LLVM version string, for use in -version output |
1112
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
48 #define LLVM_REV_STR $llvm_rev_str$llvm_date |
1064
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
972
diff
changeset
|
49 // LDC version string, for use in -version output |
972
d66ab756c75b
Change the way the version is printed (more verbose, with short hash)
Frits van Bommel <fvbommel wxs.nl>
parents:
873
diff
changeset
|
50 #define LDC_REV "rev. $ldc_rev" |
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
51 |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
52 #endif // LDC_VERSIONS_H\n!; |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
53 |
873
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
54 my $revh; |
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
55 my $old = ""; |
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
56 open $revh, "revisions.h" and $old = join "", <$revh>; |
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
57 |
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
58 if ($old ne $out) { |
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
59 open $revh, ">revisions.h" or die "cannot create revisions.h: $!"; |
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
60 print $revh $out; |
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
61 close $revh; |
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
62 } |
1113
123812e02bc8
Split out LLVM_REV into separate header, to reduce rebuilding when only the LDC
Frits van Bommel <fvbommel wxs.nl>
parents:
1112
diff
changeset
|
63 |
1123
165a920f4e88
Don't set LLVM_REV if it's set on the command line.
Frits van Bommel <fvbommel wxs.nl>
parents:
1113
diff
changeset
|
64 # Allow the user to manually define it on the command line... |
165a920f4e88
Don't set LLVM_REV if it's set on the command line.
Frits van Bommel <fvbommel wxs.nl>
parents:
1113
diff
changeset
|
65 $out = qq!#ifndef LLVM_REV |
1113
123812e02bc8
Split out LLVM_REV into separate header, to reduce rebuilding when only the LDC
Frits van Bommel <fvbommel wxs.nl>
parents:
1112
diff
changeset
|
66 |
123812e02bc8
Split out LLVM_REV into separate header, to reduce rebuilding when only the LDC
Frits van Bommel <fvbommel wxs.nl>
parents:
1112
diff
changeset
|
67 // LLVM svn revision number, used to adapt to changes in LLVM |
123812e02bc8
Split out LLVM_REV into separate header, to reduce rebuilding when only the LDC
Frits van Bommel <fvbommel wxs.nl>
parents:
1112
diff
changeset
|
68 // (Is 0 if LLVM is not an SVN trunk version) |
123812e02bc8
Split out LLVM_REV into separate header, to reduce rebuilding when only the LDC
Frits van Bommel <fvbommel wxs.nl>
parents:
1112
diff
changeset
|
69 #define LLVM_REV $llvm_rev_nr |
123812e02bc8
Split out LLVM_REV into separate header, to reduce rebuilding when only the LDC
Frits van Bommel <fvbommel wxs.nl>
parents:
1112
diff
changeset
|
70 |
1123
165a920f4e88
Don't set LLVM_REV if it's set on the command line.
Frits van Bommel <fvbommel wxs.nl>
parents:
1113
diff
changeset
|
71 #endif // LLVM_REV\n!; |
1113
123812e02bc8
Split out LLVM_REV into separate header, to reduce rebuilding when only the LDC
Frits van Bommel <fvbommel wxs.nl>
parents:
1112
diff
changeset
|
72 |
123812e02bc8
Split out LLVM_REV into separate header, to reduce rebuilding when only the LDC
Frits van Bommel <fvbommel wxs.nl>
parents:
1112
diff
changeset
|
73 $old = ""; |
123812e02bc8
Split out LLVM_REV into separate header, to reduce rebuilding when only the LDC
Frits van Bommel <fvbommel wxs.nl>
parents:
1112
diff
changeset
|
74 open $revh, "llvm-version.h" and $old = join "", <$revh>; |
123812e02bc8
Split out LLVM_REV into separate header, to reduce rebuilding when only the LDC
Frits van Bommel <fvbommel wxs.nl>
parents:
1112
diff
changeset
|
75 |
123812e02bc8
Split out LLVM_REV into separate header, to reduce rebuilding when only the LDC
Frits van Bommel <fvbommel wxs.nl>
parents:
1112
diff
changeset
|
76 if ($old ne $out) { |
123812e02bc8
Split out LLVM_REV into separate header, to reduce rebuilding when only the LDC
Frits van Bommel <fvbommel wxs.nl>
parents:
1112
diff
changeset
|
77 open $revh, ">llvm-version.h" or die "cannot create llvm-version.h: $!"; |
123812e02bc8
Split out LLVM_REV into separate header, to reduce rebuilding when only the LDC
Frits van Bommel <fvbommel wxs.nl>
parents:
1112
diff
changeset
|
78 print $revh $out; |
123812e02bc8
Split out LLVM_REV into separate header, to reduce rebuilding when only the LDC
Frits van Bommel <fvbommel wxs.nl>
parents:
1112
diff
changeset
|
79 close $revh; |
123812e02bc8
Split out LLVM_REV into separate header, to reduce rebuilding when only the LDC
Frits van Bommel <fvbommel wxs.nl>
parents:
1112
diff
changeset
|
80 } |