summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/CPackWIX.cmake14
-rw-r--r--Source/CPack/WiX/cmCPackWIXGenerator.cxx28
-rw-r--r--Source/CPack/WiX/cmCPackWIXGenerator.h4
3 files changed, 46 insertions, 0 deletions
diff --git a/Modules/CPackWIX.cmake b/Modules/CPackWIX.cmake
index fce25f0..604eb37 100644
--- a/Modules/CPackWIX.cmake
+++ b/Modules/CPackWIX.cmake
@@ -102,6 +102,20 @@
# If this variable is not set, the default MSI template included with CMake will be used.
#
##end
+##variable
+# CPACK_WIX_EXTRA_SOURCES - Extra WiX source files
+#
+# This variable provides an optional list of extra WiX source files (.wxs)
+# that should be compiled and linked. The full path to source files is required.
+#
+##end
+##variable
+# CPACK_WIX_EXTRA_OBJECTS - Extra WiX object files or libraries
+#
+# This variable provides an optional list of extra WiX object (.wixobj) and/or
+# WiX library (.wixlib) files. The full path to objects and libraries is required.
+#
+##end
#=============================================================================
# Copyright 2012 Kitware, Inc.
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
index cc9dec7..888c29b 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
@@ -189,6 +189,8 @@ bool cmCPackWIXGenerator::PackageFilesImpl()
return false;
}
+ AppendUserSuppliedExtraSources();
+
std::stringstream objectFiles;
for(size_t i = 0; i < wixSources.size(); ++i)
{
@@ -205,9 +207,35 @@ bool cmCPackWIXGenerator::PackageFilesImpl()
objectFiles << " " << QuotePath(objectFilename);
}
+ AppendUserSuppliedExtraObjects(objectFiles);
+
return RunLightCommand(objectFiles.str());
}
+void cmCPackWIXGenerator::AppendUserSuppliedExtraSources()
+{
+ const char *cpackWixExtraSources = GetOption("CPACK_WIX_EXTRA_SOURCES");
+ if(!cpackWixExtraSources) return;
+
+ cmSystemTools::ExpandListArgument(cpackWixExtraSources, wixSources);
+}
+
+void cmCPackWIXGenerator::AppendUserSuppliedExtraObjects(std::ostream& stream)
+{
+ const char *cpackWixExtraObjects = GetOption("CPACK_WIX_EXTRA_OBJECTS");
+ if(!cpackWixExtraObjects) return;
+
+ std::vector<std::string> expandedExtraObjects;
+
+ cmSystemTools::ExpandListArgument(
+ cpackWixExtraObjects, expandedExtraObjects);
+
+ for(size_t i = 0; i < expandedExtraObjects.size(); ++i)
+ {
+ stream << " " << QuotePath(expandedExtraObjects[i]);
+ }
+}
+
bool cmCPackWIXGenerator::CreateWiXVariablesIncludeFile()
{
std::string cpackTopLevel;
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.h b/Source/CPack/WiX/cmCPackWIXGenerator.h
index aaccf9d..d6376cf 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.h
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.h
@@ -68,6 +68,10 @@ private:
bool CreateWiXSourceFiles();
+ void AppendUserSuppliedExtraSources();
+
+ void AppendUserSuppliedExtraObjects(std::ostream& stream);
+
bool CreateLicenseFile();
bool RunWiXCommand(const std::string& command);