# HG changeset patch # User Christian Kamm # Date 1229269896 -3600 # Node ID 82ad6c0c601c7419dda48ae7e887557a9c2920bc # Parent c1aeb2d0b559481aec5fdde9d0e26aa935da25be Add Elrood's patch to output LDC and LLVM source revs. diff -r c1aeb2d0b559 -r 82ad6c0c601c .hgignore --- a/.hgignore Sun Dec 14 16:39:27 2008 +0100 +++ b/.hgignore Sun Dec 14 16:51:36 2008 +0100 @@ -6,6 +6,7 @@ *.a *.s *.so +*.rej Makefile CMakeFiles CMakeCache.txt @@ -25,6 +26,8 @@ ^impcnvgen ^impcnvgen.make ^ldc.make +^revisions.pl +^dmd2?/revisions.h ^dmd2?/impcnvtab.c ^dmd2?/id.c ^dmd2?/id.h diff -r c1aeb2d0b559 -r 82ad6c0c601c CMakeLists.txt --- a/CMakeLists.txt Sun Dec 14 16:39:27 2008 +0100 +++ b/CMakeLists.txt Sun Dec 14 16:51:36 2008 +0100 @@ -160,6 +160,17 @@ add_executable(${LDC_EXE} ${LDC_SOURCE_FILES}) +# generate revision info +configure_file(revisions.pl.in revisions.pl) +add_custom_command( + OUTPUT revisions.h + COMMAND ${PERL_EXECUTABLE} ${PROJECT_BINARY_DIR}/revisions.pl + WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/${DMDFE_PATH} +) +add_custom_target(gen_revs_h ALL DEPENDS revisions.h) +add_dependencies(${LDC_EXE} gen_revs_h) +# + set(LDC_EXE_NAME ${PROGRAM_PREFIX}${LDC_EXE}${PROGRAM_SUFFIX}) set_target_properties( diff -r c1aeb2d0b559 -r 82ad6c0c601c dmd/mars.c --- a/dmd/mars.c Sun Dec 14 16:39:27 2008 +0100 +++ b/dmd/mars.c Sun Dec 14 16:51:36 2008 +0100 @@ -38,8 +38,7 @@ #include "gen/logger.h" #include "gen/linker.h" - -#include "llvm/Config/config.h" +#include "revisions.h" void getenv_setargv(const char *envvar, int *pargc, char** *pargv); @@ -65,7 +64,8 @@ copyright = "Copyright (c) 1999-2008 by Digital Mars and Tomas Lindquist Olsen"; written = "written by Walter Bright and Tomas Lindquist Olsen"; version = "v1.037"; - ldc_version = "0.1"; + ldc_version = LDC_REV; + llvm_version = LLVM_REV; global.structalign = 8; memset(¶ms, 0, sizeof(Param)); @@ -152,8 +152,8 @@ void usage() { - printf("LLVM D Compiler %s (based on DMD %s and %s)\n%s\n%s\n", - global.ldc_version, global.version, PACKAGE_STRING, global.copyright, global.written); + printf("LLVM D Compiler %s\nbased on DMD %s and %s\n%s\n%s\n", + global.ldc_version, global.version, global.llvm_version, global.copyright, global.written); printf("\ D Language Documentation: http://www.digitalmars.com/d/1.0/index.html\n\ LDC Homepage: http://www.dsource.org/projects/ldc\n\ diff -r c1aeb2d0b559 -r 82ad6c0c601c dmd/mars.h --- a/dmd/mars.h Sun Dec 14 16:39:27 2008 +0100 +++ b/dmd/mars.h Sun Dec 14 16:51:36 2008 +0100 @@ -186,6 +186,7 @@ int structalign; char *version; char *ldc_version; + char *llvm_version; Param params; unsigned errors; // number of errors reported so far diff -r c1aeb2d0b559 -r 82ad6c0c601c dmd2/mars.c --- a/dmd2/mars.c Sun Dec 14 16:39:27 2008 +0100 +++ b/dmd2/mars.c Sun Dec 14 16:51:36 2008 +0100 @@ -39,7 +39,7 @@ #include "gen/logger.h" #include "gen/linker.h" -#include "llvm/Config/config.h" +#include "revisions.h" void getenv_setargv(const char *envvar, int *pargc, char** *pargv); @@ -152,8 +152,8 @@ void usage() { - printf("LLVM D Compiler %s (based on DMD %s and %s)\n%s\n%s\n", - global.ldc_version, global.version, PACKAGE_STRING, global.copyright, global.written); + printf("LLVM D Compiler %s\nbased on DMD %s and %s\n%s\n%s\n", + global.ldc_version, global.version, global.llvm_version, global.copyright, global.written); printf("\ D Language Documentation: http://www.digitalmars.com/d/2.0/index.html\n\ LDC Homepage: http://www.dsource.org/projects/ldc\n\ diff -r c1aeb2d0b559 -r 82ad6c0c601c dmd2/mars.h --- a/dmd2/mars.h Sun Dec 14 16:39:27 2008 +0100 +++ b/dmd2/mars.h Sun Dec 14 16:51:36 2008 +0100 @@ -193,6 +193,7 @@ int structalign; const char *version; const char *ldc_version; + const char *llvm_version; Param params; unsigned errors; // number of errors reported so far diff -r c1aeb2d0b559 -r 82ad6c0c601c revisions.pl.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/revisions.pl.in Sun Dec 14 16:51:36 2008 +0100 @@ -0,0 +1,34 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use File::stat; +use Time::localtime; + +my $llvm_src = `perl @LLVM_CONFIG@ --src-root`; +#my $llvm_src = "k:/sources/llvm"; + +my $llvm_rev = `svnversion $llvm_src`; + +if ($llvm_rev =~ s/(\d+)\s+$/$1/) { + $llvm_rev = qq!#define LLVM_REV "LLVM rev.$llvm_rev"! +} else { + my $llvm_lib = `perl @LLVM_CONFIG@ --libdir`; + $llvm_lib =~ s/\s+$//; + $llvm_rev = ctime(stat($llvm_lib)->mtime) if (-d $llvm_lib); + $llvm_rev = qq!#include "llvm/Config/config.h"\n#define LLVM_REV PACKAGE_STRING" ($llvm_rev)"!; +} + +my $ldc_rev = `hg -R@PROJECT_SOURCE_DIR@ tip --template {rev}`; + +open my $revh, ">", "revisions.h" or die "cannot create revisions.h"; + +print $revh qq!#ifndef LDC_VERSIONS_H +#define LDC_VERSIONS_H + +$llvm_rev +#define LDC_REV "rev.$ldc_rev" + +#endif // LDC_VERSIONS_H\n!; + +close $revh;