Mercurial > projects > ldc
view revisions.pl.in @ 1156:19d4ded7204a
Fixed issue with runtime supplied typeinfo generating multiple symbols.
Added new ldc.llvmasm import in runtime cmake file.
author | Tomas Lindquist Olsen <tomas.l.olsen gmail.com> |
---|---|
date | Sat, 28 Mar 2009 09:45:33 +0100 |
parents | 165a920f4e88 |
children | c86a629f24dd |
line wrap: on
line source
#!/usr/bin/perl use strict; use warnings; use File::stat; use Time::localtime; my $llvm_src = `perl @LLVM_CONFIG@ --src-root`; my $svn_info = `svn info $llvm_src 2>/dev/null`; my $extra_includes = ""; my $llvm_rev_str; my $llvm_rev_nr; my $llvm_date = ""; if ($svn_info =~ /^URL:.*\/trunk\s*$/m && $svn_info =~ /^Last Changed Rev:\s*(\d+)\s*/m) { $llvm_rev_str = qq!"LLVM trunk rev. $1"!; $llvm_rev_nr = $1; } else { # Either non-trunk or 'svn info' didn't report "Last Changed Rev". $extra_includes = qq!#include "llvm/Config/config.h"!; $llvm_rev_str = "PACKAGE_STRING"; # Assume latest release, so < any version we should be testing for. $llvm_rev_nr = 0; } # Use SVN date even if non-trunk: if ($svn_info =~ /^Last Changed Date: ([^(]*?)\s*(\(|$)/m) { $llvm_date = qq!" ($1)"!; } else { # Otherwise, try to get it from the libdir my $llvm_lib = `perl @LLVM_CONFIG@ --libdir`; $llvm_lib =~ s/\s+$//; if (-d $llvm_lib) { my $mod_time = ctime(stat($llvm_lib)->mtime); $llvm_date = qq!" ($mod_time)"!; } } 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})'`; my $out = qq!#ifndef LDC_VERSIONS_H #define LDC_VERSIONS_H $extra_includes // LLVM version string, for use in -version output #define LLVM_REV_STR $llvm_rev_str$llvm_date // LDC version string, for use in -version output #define LDC_REV "rev. $ldc_rev" #endif // LDC_VERSIONS_H\n!; my $revh; my $old = ""; open $revh, "revisions.h" and $old = join "", <$revh>; if ($old ne $out) { open $revh, ">revisions.h" or die "cannot create revisions.h: $!"; print $revh $out; close $revh; } # Allow the user to manually define it on the command line... $out = qq!#ifndef LLVM_REV // LLVM svn revision number, used to adapt to changes in LLVM // (Is 0 if LLVM is not an SVN trunk version) #define LLVM_REV $llvm_rev_nr #endif // LLVM_REV\n!; $old = ""; open $revh, "llvm-version.h" and $old = join "", <$revh>; if ($old ne $out) { open $revh, ">llvm-version.h" or die "cannot create llvm-version.h: $!"; print $revh $out; close $revh; }