summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmake.cxx28
1 files changed, 27 insertions, 1 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index cf713a9..5a478d0 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -715,7 +715,33 @@ int cmake::CMakeCommand(std::vector<std::string>& args)
}
return 1;
- }
+ }
+
+ // Internal CMake shared library support.
+ else if (args[1] == "cmake_symlink_library" && args.size() == 5)
+ {
+ int result = 0;
+ std::string realName = args[2];
+ std::string soName = args[3];
+ std::string name = args[4];
+ if(soName != realName)
+ {
+ std::string fname = cmSystemTools::GetFilenameName(realName);
+ if(!cmSystemTools::CreateSymlink(fname.c_str(), soName.c_str()))
+ {
+ result = 1;
+ }
+ }
+ if(name != soName)
+ {
+ std::string fname = cmSystemTools::GetFilenameName(soName);
+ if(!cmSystemTools::CreateSymlink(fname.c_str(), name.c_str()))
+ {
+ result = 1;
+ }
+ }
+ return 0;
+ }
#if defined(_WIN32) && !defined(__CYGWIN__)
// Write registry value