annotate revisions.pl.in @ 1065:dc576c7e4b1e

Fix to make sure to create gen/ in build dir and unbreak build with older perl
author Frits van Bommel <fvbommel wxs.nl>
date Sun, 08 Mar 2009 16:37:55 +0100
parents f0b6549055ab
children 829ac3f30103
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
1064
f0b6549055ab Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents: 972
diff changeset
10 my $llvm_rev = `svnversion --committed $llvm_src`;
f0b6549055ab Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents: 972
diff changeset
11 my $llvm_rev_str;
f0b6549055ab Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents: 972
diff changeset
12 my $llvm_rev_nr;
853
82ad6c0c601c Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
13
1065
dc576c7e4b1e Fix to make sure to create gen/ in build dir and unbreak build with older perl
Frits van Bommel <fvbommel wxs.nl>
parents: 1064
diff changeset
14 if ($llvm_rev =~ /^\s*(\d+:)?((\d+)[MSP]*)\s*$/) {
dc576c7e4b1e Fix to make sure to create gen/ in build dir and unbreak build with older perl
Frits van Bommel <fvbommel wxs.nl>
parents: 1064
diff changeset
15 $llvm_rev_str = qq!#define LLVM_REV_STR "LLVM rev. $2"!;
dc576c7e4b1e Fix to make sure to create gen/ in build dir and unbreak build with older perl
Frits van Bommel <fvbommel wxs.nl>
parents: 1064
diff changeset
16 $llvm_rev_nr = "$3";
853
82ad6c0c601c Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
17 } else {
82ad6c0c601c Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
18 my $llvm_lib = `perl @LLVM_CONFIG@ --libdir`;
82ad6c0c601c Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
19 $llvm_lib =~ s/\s+$//;
82ad6c0c601c Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
20 $llvm_rev = ctime(stat($llvm_lib)->mtime) if (-d $llvm_lib);
1064
f0b6549055ab Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents: 972
diff changeset
21 $llvm_rev_str = qq!#include "llvm/Config/config.h"\n#define LLVM_REV_STR PACKAGE_STRING" ($llvm_rev)"!;
f0b6549055ab Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents: 972
diff changeset
22 # Assume latest release, so < any version we should be testing for.
f0b6549055ab Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents: 972
diff changeset
23 $llvm_rev_nr = 0;
853
82ad6c0c601c Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
24 }
82ad6c0c601c Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
25
972
d66ab756c75b Change the way the version is printed (more verbose, with short hash)
Frits van Bommel <fvbommel wxs.nl>
parents: 873
diff changeset
26 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
27
873
a331ce9bc749 fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents: 853
diff changeset
28 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
29 #define LDC_VERSIONS_H
82ad6c0c601c Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
30
1064
f0b6549055ab Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents: 972
diff changeset
31 // LLVM version string, for use in -version output
f0b6549055ab Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents: 972
diff changeset
32 $llvm_rev_str
f0b6549055ab Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents: 972
diff changeset
33 // LLVM svn revision number, used to adapt to changes in LLVM
f0b6549055ab Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents: 972
diff changeset
34 // (Is 0 if LLVM is not an SVN version)
f0b6549055ab Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents: 972
diff changeset
35 #define LLVM_REV $llvm_rev_nr
f0b6549055ab Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents: 972
diff changeset
36 // 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
37 #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
38
82ad6c0c601c Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
39 #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
40
873
a331ce9bc749 fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents: 853
diff changeset
41 my $revh;
a331ce9bc749 fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents: 853
diff changeset
42 my $old = "";
a331ce9bc749 fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents: 853
diff changeset
43 open $revh, "revisions.h" and $old = join "", <$revh>;
a331ce9bc749 fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents: 853
diff changeset
44
a331ce9bc749 fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents: 853
diff changeset
45 if ($old ne $out) {
a331ce9bc749 fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents: 853
diff changeset
46 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
47 print $revh $out;
a331ce9bc749 fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents: 853
diff changeset
48 close $revh;
a331ce9bc749 fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents: 853
diff changeset
49 }