diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/CMakeLists.txt | 23 | ||||
-rw-r--r-- | Source/cmSystemTools.cxx | 45 | ||||
-rw-r--r-- | Source/cmSystemTools.h | 3 |
3 files changed, 71 insertions, 0 deletions
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 10828eb..d6adea7 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -7,6 +7,10 @@ CONFIGURE_FILE( "${CMake_SOURCE_DIR}/Source/cmConfigure.cmake.h.in" "${CMake_BINARY_DIR}/Source/cmConfigure.h" ) +CONFIGURE_FILE( + "${CMake_SOURCE_DIR}/Source/CPack/cmCPackConfigure.h.in" + "${CMake_BINARY_DIR}/Source/CPack/cmCPackConfigure.h" + ) # add the include path to find the .h INCLUDE_DIRECTORIES( @@ -247,6 +251,21 @@ SET(CMTEST_SRCS cmCTest.cxx ADD_LIBRARY(CTestLib ${CMTEST_SRCS}) TARGET_LINK_LIBRARIES(CTestLib CMakeLib ${CMAKE_CURL_LIBRARIES} ${CMAKE_XMLRPC_LIBRARIES}) +# +# Sources for CPack +# +SET(CPACK_SRCS + CPack/cmCPackGenerators.cxx + CPack/cmCPackSTGZGenerator.cxx + CPack/cmCPackTGZGenerator.cxx + CPack/cmCPackNSISGenerator.cxx + CPack/cmCPackPackageMakerGenerator.cxx + CPack/cmCPackGenericGenerator.cxx + ) +# Build CPackLib +ADD_LIBRARY(CPackLib ${CPACK_SRCS}) +TARGET_LINK_LIBRARIES(CPackLib CMakeLib) + # Build CMake executable ADD_EXECUTABLE(cmake cmakemain.cxx) TARGET_LINK_LIBRARIES(cmake CMakeLib) @@ -265,6 +284,10 @@ ENDIF(WIN32) ADD_EXECUTABLE(ctest ctest.cxx) TARGET_LINK_LIBRARIES(ctest CTestLib) +# Build CPack executable +ADD_EXECUTABLE(cpack CPack/cpack.cxx) +TARGET_LINK_LIBRARIES(cpack CPackLib) + # Curses GUI IF (UNIX) INCLUDE (${CMake_SOURCE_DIR}/Modules/FindCurses.cmake OPTIONAL) diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 45fa836..85d1786 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -1353,6 +1353,51 @@ bool cmSystemTools::PutEnv(const char* value) return ret == 0; } +std::string cmSystemTools::MakeXMLSafe(const char* str) +{ + std::vector<char> result; + result.reserve(500); + const char* pos = str; + for ( ;*pos; ++pos) + { + char ch = *pos; + if ( (ch > 126 || ch < 32) && ch != 9 && ch != 10 && ch != 13 && ch != '\r' ) + { + char buffer[33]; + sprintf(buffer, "<%d>", (int)ch); + //sprintf(buffer, "&#x%0x;", (unsigned int)ch); + result.insert(result.end(), buffer, buffer+strlen(buffer)); + } + else + { + const char* const encodedChars[] = { + "&", + "<", + ">" + }; + switch ( ch ) + { + case '&': + result.insert(result.end(), encodedChars[0], encodedChars[0]+5); + break; + case '<': + result.insert(result.end(), encodedChars[1], encodedChars[1]+4); + break; + case '>': + result.insert(result.end(), encodedChars[2], encodedChars[2]+4); + break; + case '\n': + result.push_back('\n'); + break; + case '\r': break; // Ignore \r + default: + result.push_back(ch); + } + } + } + return std::string(&*result.begin(), result.size()); +} + bool cmSystemTools::IsPathToFramework(const char* path) { if(cmSystemTools::FileIsFullPath(path)) diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index 181d513..2895fff 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -297,6 +297,9 @@ public: of the form var=value */ static bool PutEnv(const char* value); + /** Make string XML safe */ + static std::string MakeXMLSafe(const char* str); + /** Create tar */ static bool ListTar(const char* outFileName, std::vector<cmStdString>& files, bool gzip, bool verbose); static bool CreateTar(const char* outFileName, const std::vector<cmStdString>& files, bool gzip, bool verbose); |