summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2016-08-06 16:15:31 +0800
committerruki <[email protected]>2016-08-06 16:15:31 +0800
commitd9f5c18a8f80dad25589f8fe9992ecfcc469e75d (patch)
tree4907c0cbf57dca6913a1650e5fa7811137aa5e25
parentce3b9ada065d09d2d771061b20f07fc1d661c648 (diff)
add vsfile for vstduio plugin
-rwxr-xr-xxmake/plugins/project/vstudio/impl/vs200x.lua67
-rwxr-xr-xxmake/plugins/project/vstudio/impl/vsfile.lua107
-rwxr-xr-xxmake/plugins/project/vstudio/vs2005.lua10
-rwxr-xr-xxmake/plugins/project/vstudio/vs2008.lua10
4 files changed, 180 insertions, 14 deletions
diff --git a/xmake/plugins/project/vstudio/impl/vs200x.lua b/xmake/plugins/project/vstudio/impl/vs200x.lua
new file mode 100755
index 000000000..63e236062
--- /dev/null
+++ b/xmake/plugins/project/vstudio/impl/vs200x.lua
@@ -0,0 +1,67 @@
+--!The Make-like Build Utility based on Lua
+--
+-- XMake is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation; either version 2.1 of the License, or
+-- (at your option) any later version.
+--
+-- XMake is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public License
+-- along with XMake;
+-- If not, see <a href="http://www.gnu.org/licenses/"> http://www.gnu.org/licenses/</a>
+--
+-- Copyright (C) 2015 - 2016, ruki All rights reserved.
+--
+-- @author ruki
+-- @file vs200x.lua
+--
+
+-- imports
+import("core.project.project")
+import("vsfile")
+
+-- make
+function make(outputdir)
+
+ -- enter project directory
+ local olddir = os.cd(project.directory())
+
+ --[[
+ local slnfile = vsfile.open(path.join(outputdir, "vs2008.sln"), "w")
+ if slnfile then
+
+ slnfile:print("Microsoft Visual Studio Solution File, Format Version 10.00")
+ slnfile:print("# Visual Studio 2008")
+ slnfile:enter("Project")
+ slnfile:enter("ProjectSection(ProjectDependencies) = postProject")
+ slnfile:print("{ED657C29-5162-4124-AF9D-0F5889E7868A} = {ED657C29-5162-4124-AF9D-0F5889E7868A}")
+ slnfile:leave("EndProjectSection")
+ slnfile:leave("EndProject")
+ slnfile:enter("Project")
+ slnfile:leave("EndProject")
+ slnfile:enter("Global")
+ slnfile:enter("ProjectSection(ProjectDependencies) = postProject")
+ slnfile:enter("ProjectSection(ProjectDependencies) = postProject")
+ slnfile:print("1111")
+ slnfile:print("1111")
+ slnfile:print("1111")
+ slnfile:print("1111")
+ slnfile:leave("EndProjectSection")
+ slnfile:leave("EndProjectSection")
+
+ slnfile:enter("ProjectSection(ProjectDependencies) = postProject")
+ slnfile:print("1111")
+ slnfile:leave("EndProjectSection")
+ slnfile:leave("EndGlobal")
+
+ slnfile:close()
+ end
+ ]]
+
+ -- leave project directory
+ os.cd(olddir)
+end
diff --git a/xmake/plugins/project/vstudio/impl/vsfile.lua b/xmake/plugins/project/vstudio/impl/vsfile.lua
new file mode 100755
index 000000000..d478c33f6
--- /dev/null
+++ b/xmake/plugins/project/vstudio/impl/vsfile.lua
@@ -0,0 +1,107 @@
+--!The Make-like Build Utility based on Lua
+--
+-- XMake is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation; either version 2.1 of the License, or
+-- (at your option) any later version.
+--
+-- XMake is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public License
+-- along with XMake;
+-- If not, see <a href="http://www.gnu.org/licenses/"> http://www.gnu.org/licenses/</a>
+--
+-- Copyright (C) 2015 - 2016, ruki All rights reserved.
+--
+-- @author ruki
+-- @file vsfile.lua
+--
+
+-- print file
+function _print(self, ...)
+
+ -- print indent
+ for i = 1, self._indent do
+ self:_write(" ")
+ end
+
+ -- print it
+ self:_print(...)
+end
+
+-- printf file
+function _printf(self, ...)
+
+ -- print indent
+ for i = 1, self._indent do
+ self:_write(" ")
+ end
+
+ -- printf it
+ self:_printf(...)
+end
+
+-- write file
+function _write(self, ...)
+
+ -- print indent
+ for i = 1, self._indent do
+ self:_write(" ")
+ end
+
+ -- write it
+ self:_write(...)
+end
+
+-- enter and print file
+function _enter(self, ...)
+
+ -- print it
+ self:print(...)
+
+ -- increase indent
+ self._indent = self._indent + 4
+end
+
+-- leave and print file
+function _leave(self, ...)
+
+ -- decrease indent
+ if self._indent >= 4 then
+ self._indent = self._indent - 4
+ else
+ self._indent = 0
+ end
+
+ -- print it
+ self:print(...)
+end
+
+-- open file
+function open(filepath, mode)
+
+ -- open it
+ local file = io.open(filepath, mode)
+
+ -- hook print, printf and write
+ file._print = file.print
+ file._printf = file.printf
+ file._write = file.write
+ file.print = _print
+ file.printf = _printf
+ file.write = _write
+
+ -- add enter and leave interfaces
+ file.enter = _enter
+ file.leave = _leave
+
+ -- init indent
+ file._indent = 0
+
+ -- ok?
+ return file
+end
+
diff --git a/xmake/plugins/project/vstudio/vs2005.lua b/xmake/plugins/project/vstudio/vs2005.lua
index 14a6808ad..da87a4454 100755
--- a/xmake/plugins/project/vstudio/vs2005.lua
+++ b/xmake/plugins/project/vstudio/vs2005.lua
@@ -21,15 +21,11 @@
--
-- imports
-import("core.project.project")
+import("impl.vs200x")
-- make
function make(outputdir)
- -- enter project directory
- local olddir = os.cd(project.directory())
-
-
- -- leave project directory
- os.cd(olddir)
+ -- make project
+ vs200x.make(outputdir)
end
diff --git a/xmake/plugins/project/vstudio/vs2008.lua b/xmake/plugins/project/vstudio/vs2008.lua
index 8c1804e36..289581148 100755
--- a/xmake/plugins/project/vstudio/vs2008.lua
+++ b/xmake/plugins/project/vstudio/vs2008.lua
@@ -21,15 +21,11 @@
--
-- imports
-import("core.project.project")
+import("impl.vs200x")
-- make
function make(outputdir)
- -- enter project directory
- local olddir = os.cd(project.directory())
-
-
- -- leave project directory
- os.cd(olddir)
+ -- make project
+ vs200x.make(outputdir)
end