annotate revisions.pl.in @ 1183:df386fd4030e

Commit requested by lindquist.
author Frits van Bommel <fvbommel wxs.nl>
date Tue, 31 Mar 2009 03:06:19 +0200
parents 165a920f4e88
children c86a629f24dd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }