diff --git a/SConstruct b/SConstruct
index 965f1dba..5aa1c31b 100644
--- a/SConstruct
+++ b/SConstruct
@@ -55,6 +55,8 @@ defenv = Environment()
defenv.SConsignFile()
Export('defenv')
+defenv.Append(NSIS_VERSION = VERSION)
+
######################################################################
####### Options ###
######################################################################
diff --git a/Source/SConscript b/Source/SConscript
index 2a6d34a3..6cef9eab 100644
--- a/Source/SConscript
+++ b/Source/SConscript
@@ -72,7 +72,11 @@ conf.Finish()
#env['PCH'] = env.PCH(pch)[0]
#env['PCHSTOP'] = pch
-##### Compile LZMA
+##### Defines
+
+env.Append(CPPDEFINES = ['NSIS_VERSION=v$NSIS_VERSION'])
+
+##### LZMA specific defines
lzma_env = env.Copy()
lzma_env.Append(CPPDEFINES = ['COMPRESS_MF_BT'])
diff --git a/Source/build.cpp b/Source/build.cpp
index 55800279..b281f7dc 100644
--- a/Source/build.cpp
+++ b/Source/build.cpp
@@ -84,8 +84,7 @@ CEXEBuild::CEXEBuild() :
ns_func.add("",0); // make sure offset 0 is special on these (i.e. never used by a label)
ns_label.add("",0);
- extern const char *NSIS_VERSION;
- definedlist.add("NSIS_VERSION", NSIS_VERSION);
+ definedlist.add("NSIS_VERSION", CONST_STR(NSIS_VERSION));
#define intdef2str_(x) #x
#define intdef2str(x) intdef2str_(x)
diff --git a/Source/lang.cpp b/Source/lang.cpp
index 7cadfa2c..d986eb3a 100644
--- a/Source/lang.cpp
+++ b/Source/lang.cpp
@@ -6,8 +6,6 @@
#include "DialogTemplate.h"
#include "exehead/resource.h"
-extern const char *NSIS_VERSION;
-
// Default English strings. Should match NSIS_DEFAULT_LANG
// Do not change the first string in every item, it's the LangString
// name for usage in scripts.
@@ -830,8 +828,8 @@ void CEXEBuild::FillLanguageTable(LanguageTable *table) {
if (!dstr)
continue;
if (i == NLF_BRANDING) {
- char temp[NSIS_MAX_STRLEN + sizeof(NSIS_VERSION)];
- sprintf(temp, dstr, NSIS_VERSION);
+ char temp[NSIS_MAX_STRLEN + sizeof(CONST_STR(NSIS_VERSION))];
+ sprintf(temp, dstr, CONST_STR(NSIS_VERSION));
table->lang_strings->set(sn, temp);
continue;
}
diff --git a/Source/makenssi.cpp b/Source/makenssi.cpp
index fd713fee..bdad8aa3 100644
--- a/Source/makenssi.cpp
+++ b/Source/makenssi.cpp
@@ -1,5 +1,3 @@
-const char *NSIS_VERSION="v2.06";
-
/*
Nullsoft Scriptable Install System (NSIS)
@@ -108,7 +106,7 @@ int main(int argc, char **argv)
if (argc > 1 && !stricmp(argv[1], OPT_STR "VERSION"))
{
- fprintf(g_output,NSIS_VERSION);
+ fprintf(g_output,CONST_STR(NSIS_VERSION));
fflush(g_output);
return 0;
}
@@ -139,7 +137,7 @@ int main(int argc, char **argv)
"Portions Copyright (C) 1996-2002 Julian R Seward (bzip2).\n"
"Portions Copyright (C) 1999-2003 Igor Pavlov (lzma).\n"
"\n"
- "Contributors: nnop@newmail.ru, Ryan Geiss, Andras Varga, Drew Davidson, Peter Windridge, Dave Laundon, Robert Rainwater, Yaroslav Faybishenko, Jeff Doozan, Amir Szekely, Ximon Eighteen, et al.\n\n",NSIS_VERSION);
+ "Contributors: nnop@newmail.ru, Ryan Geiss, Andras Varga, Drew Davidson, Peter Windridge, Dave Laundon, Robert Rainwater, Yaroslav Faybishenko, Jeff Doozan, Amir Szekely, Ximon Eighteen, et al.\n\n",CONST_STR(NSIS_VERSION));
fflush(g_output);
}
diff --git a/Source/script.cpp b/Source/script.cpp
index 948cfd07..598cba77 100644
--- a/Source/script.cpp
+++ b/Source/script.cpp
@@ -2191,7 +2191,7 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
if (k == -1) PRINTHELP()
SCRIPT_MSG("XPStyle: %s\n", line.gettoken_str(1));
init_res_editor();
- const char *szXPManifest = k ? 0 : "Nullsoft Install System v2.06";
+ const char *szXPManifest = k ? 0 : "Nullsoft Install System " CONST_STR(NSIS_VERSION) "";
res_editor->UpdateResource(MAKEINTRESOURCE(24), MAKEINTRESOURCE(1), NSIS_DEFAULT_LANG, (unsigned char*)szXPManifest, k ? 0 : strlen(szXPManifest));
}
catch (exception& err) {
@@ -3188,11 +3188,10 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
if (trim) {
char str[512];
- extern const char *NSIS_VERSION;
if (line.getnumtokens()==a+1 && line.gettoken_str(a)[0])
strcpy(str, line.gettoken_str(a));
else
- wsprintf(str, "Nullsoft Install System %s", NSIS_VERSION);
+ wsprintf(str, "Nullsoft Install System %s", CONST_STR(NSIS_VERSION));
switch (trim) {
case 1: td.LTrimToString(IDC_VERSTR, str, 4); break;
diff --git a/Source/util.h b/Source/util.h
index e10188bb..3b79b463 100644
--- a/Source/util.h
+++ b/Source/util.h
@@ -35,6 +35,8 @@ size_t WCStrLen(const WCHAR* szwStr);
size_t my_strftime(char *s, size_t max, const char *fmt, const struct tm *tm);
+#define CONST_STR(x) #x
+
#ifndef __BIG_ENDIAN__
# define FIX_ENDIAN_INT32_INPLACE(x) (x)
#else