summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/FindGettext.cmake2
-rw-r--r--Modules/NSIS.template.in7
-rw-r--r--Source/CMakeVersion.cmake2
-rw-r--r--Source/CPack/cmCPackGeneratorFactory.cxx2
-rw-r--r--Source/CPack/cmCPackNSISGenerator.cxx18
-rw-r--r--Source/CPack/cmCPackNSISGenerator.h7
-rw-r--r--Source/cmNinjaNormalTargetGenerator.cxx3
-rw-r--r--Source/cmSystemTools.cxx7
8 files changed, 39 insertions, 9 deletions
diff --git a/Modules/FindGettext.cmake b/Modules/FindGettext.cmake
index f1c78ae..1a6bd39 100644
--- a/Modules/FindGettext.cmake
+++ b/Modules/FindGettext.cmake
@@ -209,5 +209,3 @@ function(GETTEXT_PROCESS_PO_FILES _lang)
add_dependencies(pofiles ${uniqueTargetName})
endfunction()
-
-set(GETTEXT_FOUND ${Gettext_FOUND})
diff --git a/Modules/NSIS.template.in b/Modules/NSIS.template.in
index ffc425e..59a444b 100644
--- a/Modules/NSIS.template.in
+++ b/Modules/NSIS.template.in
@@ -37,6 +37,9 @@
;Set compression
SetCompressor @CPACK_NSIS_COMPRESSOR@
+ ;Require administrator access
+ RequestExecutionLevel admin
+
@CPACK_NSIS_DEFINES@
!include Sections.nsh
@@ -119,7 +122,7 @@ Var AR_RegFlags
"exit_${SecName}:"
!macroend
-!macro RemoveSection SecName
+!macro RemoveSection_CPack SecName
; This macro is used to call section's Remove_... macro
;from the uninstaller.
;Input: section index constant name specified in Section command.
@@ -841,7 +844,7 @@ Section "Uninstall"
DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
; Removes all optional components
- !insertmacro SectionList "RemoveSection"
+ !insertmacro SectionList "RemoveSection_CPack"
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index 300abd7..be8259d 100644
--- a/Source/CMakeVersion.cmake
+++ b/Source/CMakeVersion.cmake
@@ -2,5 +2,5 @@
set(CMake_VERSION_MAJOR 2)
set(CMake_VERSION_MINOR 8)
set(CMake_VERSION_PATCH 10)
-set(CMake_VERSION_TWEAK 20121120)
+set(CMake_VERSION_TWEAK 20121127)
#set(CMake_VERSION_RC 1)
diff --git a/Source/CPack/cmCPackGeneratorFactory.cxx b/Source/CPack/cmCPackGeneratorFactory.cxx
index 37ff460..eba1ef9 100644
--- a/Source/CPack/cmCPackGeneratorFactory.cxx
+++ b/Source/CPack/cmCPackGeneratorFactory.cxx
@@ -61,6 +61,8 @@ cmCPackGeneratorFactory::cmCPackGeneratorFactory()
{
this->RegisterGenerator("NSIS", "Null Soft Installer",
cmCPackNSISGenerator::CreateGenerator);
+ this->RegisterGenerator("NSIS64", "Null Soft Installer (64-bit)",
+ cmCPackNSISGenerator::CreateGenerator64);
}
#ifdef __CYGWIN__
if (cmCPackCygwinBinaryGenerator::CanGenerate())
diff --git a/Source/CPack/cmCPackNSISGenerator.cxx b/Source/CPack/cmCPackNSISGenerator.cxx
index fdbae35..9f86ea2 100644
--- a/Source/CPack/cmCPackNSISGenerator.cxx
+++ b/Source/CPack/cmCPackNSISGenerator.cxx
@@ -33,8 +33,9 @@
#endif
//----------------------------------------------------------------------
-cmCPackNSISGenerator::cmCPackNSISGenerator()
+cmCPackNSISGenerator::cmCPackNSISGenerator(bool nsis64)
{
+ Nsis64 = nsis64;
}
//----------------------------------------------------------------------
@@ -359,6 +360,21 @@ int cmCPackNSISGenerator::InitializeInternal()
bool gotRegValue = false;
#ifdef _WIN32
+ if (Nsis64)
+ {
+ if ( !gotRegValue && cmsys::SystemTools::ReadRegistryValue(
+ "HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS\\Unicode", nsisPath,
+ cmsys::SystemTools::KeyWOW64_64) )
+ {
+ gotRegValue = true;
+ }
+ if ( !gotRegValue && cmsys::SystemTools::ReadRegistryValue(
+ "HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS", nsisPath,
+ cmsys::SystemTools::KeyWOW64_64) )
+ {
+ gotRegValue = true;
+ }
+ }
if ( !gotRegValue && cmsys::SystemTools::ReadRegistryValue(
"HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS\\Unicode", nsisPath,
cmsys::SystemTools::KeyWOW64_32) )
diff --git a/Source/CPack/cmCPackNSISGenerator.h b/Source/CPack/cmCPackNSISGenerator.h
index 8224854..e46fbda 100644
--- a/Source/CPack/cmCPackNSISGenerator.h
+++ b/Source/CPack/cmCPackNSISGenerator.h
@@ -27,10 +27,13 @@ class cmCPackNSISGenerator : public cmCPackGenerator
public:
cmCPackTypeMacro(cmCPackNSISGenerator, cmCPackGenerator);
+ static cmCPackGenerator* CreateGenerator64()
+ { return new cmCPackNSISGenerator(true); }
+
/**
* Construct generator
*/
- cmCPackNSISGenerator();
+ cmCPackNSISGenerator(bool nsis64 = false);
virtual ~cmCPackNSISGenerator();
protected:
@@ -77,6 +80,8 @@ protected:
/// Translations any newlines found in the string into \\r\\n, so that the
/// resulting string can be used within NSIS.
static std::string TranslateNewlines(std::string str);
+
+ bool Nsis64;
};
#endif
diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx
index 853bc12..65967a5 100644
--- a/Source/cmNinjaNormalTargetGenerator.cxx
+++ b/Source/cmNinjaNormalTargetGenerator.cxx
@@ -439,6 +439,9 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
this->GetGeneratorTarget());
this->AddModuleDefinitionFlag(vars["LINK_FLAGS"]);
+ vars["LINK_FLAGS"] = cmGlobalNinjaGenerator
+ ::EncodeLiteral(vars["LINK_FLAGS"]);
+
vars["LINK_PATH"] = frameworkPath + linkPath;
// Compute architecture specific link flags. Yes, these go into a different
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx
index 22b6aec..c2521d9 100644
--- a/Source/cmSystemTools.cxx
+++ b/Source/cmSystemTools.cxx
@@ -1931,6 +1931,7 @@ bool extract_tar(const char* outFileName, bool verbose,
{
cmSystemTools::Error("Problem with archive_read_next_header(): ",
archive_error_string(a));
+ break;
}
if (verbose && extract)
{
@@ -1953,6 +1954,7 @@ bool extract_tar(const char* outFileName, bool verbose,
cmSystemTools::Error(
"Problem with archive_write_disk_set_options(): ",
archive_error_string(ext));
+ break;
}
r = archive_write_header(ext, entry);
@@ -1962,6 +1964,7 @@ bool extract_tar(const char* outFileName, bool verbose,
archive_error_string(ext));
cmSystemTools::Error("Current file:",
archive_entry_pathname(entry));
+ break;
}
else
{
@@ -1971,6 +1974,7 @@ bool extract_tar(const char* outFileName, bool verbose,
{
cmSystemTools::Error("Problem with archive_write_finish_entry(): ",
archive_error_string(ext));
+ break;
}
}
}
@@ -1981,8 +1985,7 @@ bool extract_tar(const char* outFileName, bool verbose,
}
archive_read_close(a);
archive_read_finish(a);
- return true;
-
+ return r == ARCHIVE_EOF || r == ARCHIVE_OK;
}
}
#endif