559 lines
24 KiB
JavaScript
559 lines
24 KiB
JavaScript
//
|
|
// $Id: projects.js 590167 2007-10-30 17:29:56Z faridz $
|
|
//
|
|
// projects.js - Definitions of the solution projects
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Licensed to the Apache Software Foundation (ASF) under one or more
|
|
// contributor license agreements. See the NOTICE file distributed
|
|
// with this work for additional information regarding copyright
|
|
// ownership. The ASF licenses this file to you under the Apache
|
|
// License, Version 2.0 (the "License"); you may not use this file
|
|
// except in compliance with the License. You may obtain a copy of
|
|
// the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
// implied. See the License for the specific language governing
|
|
// permissions and limitations under the License.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
var commonDefines = "debug?_RWSTDDEBUG;dll?_RWSHARED";
|
|
var commonIncludes = "$(SolutionDir)%CONFIG%\\include";
|
|
var stdcxxIncludes = "%SRCDIR%\\include;%SRCDIR%\\include\\ansi;" + commonIncludes;
|
|
var rwtestIncludes = "%SRCDIR%\\tests\\include;" + stdcxxIncludes;
|
|
|
|
var binPath = "$(SolutionDir)%CONFIG%\\bin";
|
|
var libPath = "$(SolutionDir)%CONFIG%\\lib";
|
|
|
|
var ProjectsDir = "%BUILDDIR%\\Projects";
|
|
|
|
// projects which requires RTTI support
|
|
var NonRTTIProjects = new Array();
|
|
|
|
var rxExcludedFolders =
|
|
new RegExp("^(?:\\.svn|Release.*|Debug.*|in|out|CVS)$","i");
|
|
|
|
// fill and return array of ProjectDef objects
|
|
// with definitions of the solution projects
|
|
// copyDll - if true then libstd and rwtest dlls will be copied
|
|
// to the target folder after build
|
|
// buildLocales - if true then generate projects for build locales
|
|
// testLocales - if true then generate projects for test locales
|
|
function CreateProjectsDefs(copyDll, buildLocales, testLocales)
|
|
{
|
|
var projectDefs = new Array();
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
var configureDef = new ProjectDef(".configure", typeGeneric);
|
|
configureDef.VCProjDir = ProjectsDir;
|
|
configureDef.FilterDefs.push(
|
|
new FilterDef(sourceFilterName, sourceFilterUuid, ".cpp;.c;.cxx;.s;.cc", eFileTypeCppCode, false).
|
|
addFilesByMask("%SRCDIR%\\etc\\config\\src", rxExcludedFolders, null));
|
|
configureDef.FilterDefs.push(
|
|
new FilterDef(headerFilterName, headerFilterUuid, ".h;.hpp;.hxx", eFileTypeCppHeader, false).
|
|
addFilesByMask("%SRCDIR%\\etc\\config\\src", rxExcludedFolders, null));
|
|
configureDef.FilterDefs.push(
|
|
new FilterDef("Script Files", null, ".js;.wsf", eFileTypeScript, false).
|
|
addFiles("%SRCDIR%\\etc\\config\\windows",
|
|
new Array("configure.wsf", "config.js", "data.js", "utilities.js")));
|
|
configureDef.OutDir = commonIncludes;
|
|
configureDef.IntDir = configureDef.OutDir;
|
|
configureDef.CustomBuildFile = "configure.wsf";
|
|
if (0 < CLVARSBAT.length)
|
|
configureDef.CustomBuildCmd = "echo Calling \"" + CLVARSBAT + "\"\r\n" +
|
|
"call \"" + CLVARSBAT + "\"\r\n";
|
|
else
|
|
configureDef.CustomBuildCmd = "";
|
|
configureDef.CustomBuildCmd += "cscript /nologo \"%CUSTOMFILE%\"" +
|
|
" /SolutionName:\"%SOLUTION%\"" +
|
|
" /ConfigurationName:\"%CFGNAME%\"" +
|
|
" /SrcDir:\"%SRCDIR%\\etc\\config\\src\"" +
|
|
" /OutDir:\"$(OutDir)\"" +
|
|
" /OutFile:\"$(OutDir)\\config.h\"" +
|
|
" /LogFile:\"$(OutDir)\\config.log\"";
|
|
configureDef.CustomBuildOut = "$(OutDir)\\config.h";
|
|
configureDef.CustomBuildDeps = "%FILES%";
|
|
|
|
projectDefs.push(new Array(configureDef));
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
var stdcxxDef = new ProjectDef(".stdcxx", typeLibrary);
|
|
stdcxxDef.VCProjDir = ProjectsDir;
|
|
stdcxxDef.FilterDefs.push(
|
|
new FilterDef(sourceFilterName, sourceFilterUuid, sourceFilterExts + ";.inc", eFileTypeCppCode, false).
|
|
addFilesByMask("%SRCDIR%\\src", rxExcludedFolders, null));
|
|
stdcxxDef.FilterDefs.push(
|
|
new FilterDef(headerFilterName, headerFilterUuid, headerFilterExts, eFileTypeCppHeader, true).
|
|
addFilesByMask("%SRCDIR%\\src", rxExcludedFolders, null).
|
|
addFilter(new FilterDef("Include", headerFilterUuid, headerFilterExts + ";.", eFileTypeCppHeader, true).
|
|
addFilesByMask("%SRCDIR%\\include", rxExcludedFolders, null)));
|
|
stdcxxDef.Defines = commonDefines;
|
|
stdcxxDef.Includes = stdcxxIncludes;
|
|
stdcxxDef.OutDir = libPath;
|
|
stdcxxDef.IntDir = "$(SolutionDir)%CONFIG%\\src";
|
|
stdcxxDef.Libs = LIBS;
|
|
stdcxxDef.OutFile = "$(OutDir)\\libstd%CONFIG%%EXT%";
|
|
stdcxxDef.PrjDeps.push(configureDef);
|
|
|
|
projectDefs.push(new Array(stdcxxDef));
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
var rwtestDef = new ProjectDef(".rwtest", typeLibrary);
|
|
rwtestDef.VCProjDir = ProjectsDir;
|
|
rwtestDef.FilterDefs.push(
|
|
new FilterDef(sourceFilterName, sourceFilterUuid, sourceFilterExts, eFileTypeCppCode, false).
|
|
addFilesByMask("%SRCDIR%\\tests\\src", rxExcludedFolders, null));
|
|
rwtestDef.FilterDefs.push(
|
|
new FilterDef(headerFilterName, headerFilterUuid, headerFilterExts, eFileTypeCppHeader, true).
|
|
addFilesByMask("%SRCDIR%\\tests\\src", rxExcludedFolders, null).
|
|
addFilter(new FilterDef("Include", headerFilterUuid, headerFilterExts, eFileTypeCppHeader, true).
|
|
addFilesByMask("%SRCDIR%\\tests\\include", rxExcludedFolders, null)));
|
|
rwtestDef.Defines = commonDefines;
|
|
rwtestDef.Includes = rwtestIncludes;
|
|
rwtestDef.OutDir = "$(SolutionDir)%CONFIG%\\tests";
|
|
rwtestDef.IntDir = rwtestDef.OutDir + "\\src";
|
|
rwtestDef.Libs = LIBS;
|
|
rwtestDef.PrjRefs.push(stdcxxDef);
|
|
|
|
projectDefs.push(new Array(rwtestDef));
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
var utilsArray = new Array();
|
|
|
|
var execDef = new ProjectDef("util_exec", typeApplication);
|
|
execDef.VCProjDir = ProjectsDir + "\\util";
|
|
execDef.FilterDefs.push(
|
|
new FilterDef(sourceFilterName, sourceFilterUuid, sourceFilterExts, eFileTypeCppCode, false).
|
|
addFiles("%SRCDIR%\\util",
|
|
new Array("cmdopt.cpp", "display.cpp", "exec.cpp", "output.cpp", "runall.cpp", "util.cpp")));
|
|
execDef.FilterDefs.push(
|
|
new FilterDef(headerFilterName, headerFilterUuid, headerFilterExts, eFileTypeCppHeader, true).
|
|
addFiles("%SRCDIR%\\util",
|
|
new Array("cmdopt.h", "display.h", "exec.h", "output.h", "target.h", "util.h")));
|
|
execDef.Defines = "";
|
|
execDef.Includes = commonIncludes;
|
|
execDef.OutDir = binPath;
|
|
execDef.Libs = LIBS;
|
|
execDef.OutFile = "$(OutDir)\\exec.exe";
|
|
execDef.PrjDeps.push(configureDef);
|
|
|
|
utilsArray.push(execDef);
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
var localedefDef = new ProjectDef("util_localedef", typeApplication);
|
|
localedefDef.VCProjDir = ProjectsDir + "\\util";
|
|
localedefDef.FilterDefs.push(
|
|
new FilterDef(sourceFilterName, sourceFilterUuid, sourceFilterExts, eFileTypeCppCode, false).
|
|
addFiles("%SRCDIR%\\util",
|
|
new Array("aliases.cpp", "charmap.cpp", "codecvt.cpp",
|
|
"collate.cpp", "ctype.cpp", "def.cpp",
|
|
"diagnostic.cpp", "locale.cpp", "localedef.cpp",
|
|
"memchk.cpp", "messages.cpp", "monetary.cpp",
|
|
"numeric.cpp", "path.cpp", "scanner.cpp",
|
|
"time.cpp")));
|
|
localedefDef.FilterDefs.push(
|
|
new FilterDef(headerFilterName, headerFilterUuid, headerFilterExts, eFileTypeCppHeader, true).
|
|
addFiles("%SRCDIR%\\util",
|
|
new Array("aliases.h", "charmap.h", "def.h", "diagnostic.h",
|
|
"loc_exception.h", "localedef.h", "memchk.h",
|
|
"path.h", "scanner.h")));
|
|
localedefDef.Defines = commonDefines;
|
|
localedefDef.Includes = stdcxxIncludes;
|
|
localedefDef.OutDir = binPath;
|
|
localedefDef.Libs = LIBS;
|
|
localedefDef.OutFile = "$(OutDir)\\localedef.exe";
|
|
localedefDef.PrjRefs.push(stdcxxDef);
|
|
|
|
utilsArray.push(localedefDef);
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
var localeDef = new ProjectDef("util_locale", typeApplication);
|
|
localeDef.VCProjDir = ProjectsDir + "\\util";
|
|
localeDef.FilterDefs.push(
|
|
new FilterDef(sourceFilterName, sourceFilterUuid, sourceFilterExts, eFileTypeCppCode, false).
|
|
addFiles("%SRCDIR%\\util",
|
|
new Array("locale_stub.cpp")));
|
|
localeDef.Defines = commonDefines;
|
|
localeDef.Includes = stdcxxIncludes;
|
|
localeDef.OutDir = binPath;
|
|
localeDef.Libs = LIBS;
|
|
localeDef.OutFile = "$(OutDir)\\locale.exe";
|
|
localeDef.PrjDeps.push(configureDef);
|
|
|
|
utilsArray.push(localeDef);
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
var gencatDef = new ProjectDef("util_gencat", typeApplication);
|
|
gencatDef.VCProjDir = ProjectsDir + "\\util";
|
|
gencatDef.FilterDefs.push(
|
|
new FilterDef(sourceFilterName, sourceFilterUuid, sourceFilterExts, eFileTypeCppCode, false).
|
|
addFiles("%SRCDIR%\\util",
|
|
new Array("gencat.cpp")));
|
|
gencatDef.Defines = commonDefines;
|
|
gencatDef.Includes = stdcxxIncludes;
|
|
gencatDef.OutDir = binPath;
|
|
gencatDef.Libs = LIBS;
|
|
gencatDef.OutFile = "$(OutDir)\\gencat.exe";
|
|
gencatDef.PrjRefs.push(stdcxxDef);
|
|
|
|
utilsArray.push(gencatDef);
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
var utilsDef = new ProjectDef(".stdcxx_utils", typeGeneric);
|
|
utilsDef.VCProjDir = ProjectsDir + "\\util";
|
|
utilsDef.OutDir = binPath;
|
|
utilsDef.IntDir = utilsDef.OutDir;
|
|
utilsDef.PrjDeps.push(execDef);
|
|
utilsDef.PrjDeps.push(localedefDef);
|
|
utilsDef.PrjDeps.push(localeDef);
|
|
utilsDef.PrjDeps.push(gencatDef);
|
|
|
|
utilsArray.push(utilsDef);
|
|
|
|
projectDefs.push(utilsArray);
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
var exampleArray = new Array();
|
|
|
|
var exampleTplDef = new ProjectDef(null, typeApplication);
|
|
exampleTplDef.VCProjDir = ProjectsDir + "\\examples";
|
|
exampleTplDef.Defines = commonDefines;
|
|
exampleTplDef.Includes = "%SRCDIR%\\examples\\include;" + stdcxxIncludes;
|
|
exampleTplDef.OutDir = "$(SolutionDir)%CONFIG%\\examples";
|
|
exampleTplDef.Libs = LIBS;
|
|
exampleTplDef.PrjRefs.push(stdcxxDef);
|
|
|
|
var exampleDefs = exampleTplDef.createProjectDefsFromFolder(
|
|
"%SRCDIR%\\examples",
|
|
new RegExp("^.+\\.(?:cpp)$", "i"),
|
|
new RegExp("^(?:\\.svn|Release.*|Debug.*|in|out|CVS)$", "i"),
|
|
new RegExp("^(?:rwstdmessages.cpp)$", "i"), false);
|
|
|
|
exampleArray = exampleArray.concat(exampleDefs);
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
var allexamplesDef = new ProjectDef(".stdcxx_examples", typeGeneric);
|
|
allexamplesDef.VCProjDir = ProjectsDir + "\\examples";
|
|
allexamplesDef.OutDir = "$(SolutionDir)%CONFIG%\\examples";
|
|
allexamplesDef.IntDir = allexamplesDef.OutDir;
|
|
allexamplesDef.PrjDeps = exampleDefs;
|
|
|
|
exampleArray.push(allexamplesDef);
|
|
|
|
projectDefs.push(exampleArray);
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
var runexamplesDef = new ProjectDef(".stdcxx_runexamples", typeGeneric);
|
|
runexamplesDef.VCProjDir = ProjectsDir + "\\examples";
|
|
runexamplesDef.FilterDefs.push(
|
|
new FilterDef("Script Files", null, ".js;.wsf", eFileTypeScript, false).
|
|
addFiles("%SRCDIR%\\etc\\config\\windows",
|
|
new Array("runall.wsf", "config.js", "utilities.js",
|
|
"summary.js")));
|
|
runexamplesDef.OutDir = "$(SolutionDir)%CONFIG%\\examples";
|
|
runexamplesDef.IntDir = runexamplesDef.OutDir;
|
|
runexamplesDef.PreBuildCmd =
|
|
"if exist \"$(OutDir)\\summary.htm del\" \"$(OutDir)\\summary.htm\"\r\n" +
|
|
"if exist \"$(OutDir)\\runexamples.log\" del \"$(OutDir)\\runexamples.log\"";
|
|
runexamplesDef.CustomBuildFile = "runall.wsf";
|
|
runexamplesDef.CustomBuildCmd =
|
|
"set PATH=$(SolutionDir)%CONFIG%\\bin;$(SolutionDir)%CONFIG%\\lib;" +
|
|
"%SRCDIR%\\examples\\manual;%PATH%\r\n" +
|
|
"set TZ=MST+7\r\n" +
|
|
"cscript /nologo \"%CUSTOMFILE%\"" +
|
|
" /INOUTDIR:\"%SRCDIR%\\examples\"" +
|
|
" /EXEDIR:\"$(OutDir)\"" +
|
|
" /PRJDIR:\"" + runexamplesDef.VCProjDir + "\"" +
|
|
" /CONFIG:\"%SOLUTION%\"" +
|
|
" /LOGFILE:\"runexamples.log\"" +
|
|
" /RUNFLAGS:\"-t " + EXEC_TIMEOUT + "\"";
|
|
runexamplesDef.CustomBuildOut = "$(OutDir)\\runexamples.log";
|
|
runexamplesDef.CustomBuildDeps = "%FILES%";
|
|
//runexamplesDef.PrjDeps.push(allexamplesDef);
|
|
runexamplesDef.PrjDeps.push(execDef);
|
|
|
|
projectDefs.push(new Array(runexamplesDef));
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
var testArray = new Array();
|
|
|
|
var testTplDef = new ProjectDef(null, typeApplication);
|
|
testTplDef.VCProjDir = ProjectsDir + "\\tests";
|
|
testTplDef.Defines = commonDefines;
|
|
testTplDef.Includes = rwtestIncludes;
|
|
testTplDef.OutDir = "$(SolutionDir)%CONFIG%\\tests";
|
|
testTplDef.Libs = LIBS;
|
|
testTplDef.PrjRefs.push(stdcxxDef);
|
|
testTplDef.PrjRefs.push(rwtestDef);
|
|
|
|
var testDefs = testTplDef.createProjectDefsFromFolder(
|
|
"%SRCDIR%\\tests",
|
|
new RegExp("^.+\\.(?:cpp)$", "i"),
|
|
new RegExp("^(?:\\.svn|Release.*|Debug.*|in|out|CVS|src|include)$","i"),
|
|
new RegExp("^(?:rwstdmessages.cpp)$","i"), false);
|
|
|
|
testArray = testArray.concat(testDefs);
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
var alltestsDef = new ProjectDef(".stdcxx_tests", typeGeneric);
|
|
alltestsDef.VCProjDir = ProjectsDir + "\\tests";
|
|
alltestsDef.OutDir = "$(SolutionDir)%CONFIG%\\tests";
|
|
alltestsDef.IntDir = alltestsDef.OutDir;
|
|
alltestsDef.PrjDeps = testDefs;
|
|
|
|
testArray.push(alltestsDef);
|
|
|
|
projectDefs.push(testArray);
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
var runtestsDef = new ProjectDef(".stdcxx_runtests", typeGeneric);
|
|
runtestsDef.VCProjDir = ProjectsDir + "\\tests";
|
|
runtestsDef.FilterDefs.push(
|
|
new FilterDef("Script Files", null, ".js;.wsf", eFileTypeScript, false).
|
|
addFiles("%SRCDIR%\\etc\\config\\windows",
|
|
new Array("runall.wsf", "config.js", "utilities.js",
|
|
"summary.js")));
|
|
runtestsDef.OutDir = "$(SolutionDir)%CONFIG%\\tests";
|
|
runtestsDef.IntDir = runtestsDef.OutDir;
|
|
runtestsDef.PreBuildCmd =
|
|
"if exist \"$(OutDir)\\summary.htm\" del \"$(OutDir)\\summary.htm\"\r\n" +
|
|
"if exist \"$(OutDir)\\runtests.log\" del \"$(OutDir)\\runtests.log\"";
|
|
runtestsDef.CustomBuildFile = "runall.wsf";
|
|
runtestsDef.CustomBuildCmd =
|
|
"set PATH=$(SolutionDir)%CONFIG%\\bin;$(SolutionDir)%CONFIG%\\lib;%PATH%\r\n" +
|
|
"set TOPDIR=%SRCDIR%\r\n" +
|
|
"set BINDIR=$(SolutionDir)%CONFIG%\\bin\r\n" +
|
|
"cscript /nologo \"%CUSTOMFILE%\"" +
|
|
" /EXEDIR:\"$(OutDir)\"" +
|
|
" /PRJDIR:\"" + runtestsDef.VCProjDir + "\"" +
|
|
" /CONFIG:\"%SOLUTION%\"" +
|
|
" /LOGFILE:\"runtests.log\"" +
|
|
" /RUNFLAGS:\"--compat -x \'--compat -O -\' -t " + EXEC_TIMEOUT + "\"";
|
|
runtestsDef.CustomBuildOut = "$(OutDir)\\runtests.log";
|
|
runtestsDef.CustomBuildDeps = "%FILES%";
|
|
//runtestsDef.PrjDeps.push(alltestsDef);
|
|
runtestsDef.PrjDeps.push(utilsDef);
|
|
|
|
projectDefs.push(new Array(runtestsDef));
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
var localeArray = new Array();
|
|
|
|
if (buildLocales)
|
|
{
|
|
var localeTplDef = new ProjectDef(null, typeGeneric);
|
|
localeTplDef.VCProjDir = ProjectsDir + "\\locales";
|
|
localeTplDef.FilterDefs.push(
|
|
new FilterDef("Script Files", null, "js;wsf", eFileTypeScript, false).
|
|
addFiles("%SRCDIR%\\etc\\config\\windows",
|
|
new Array("run_locale_utils.wsf")));
|
|
localeTplDef.OutDir = "$(SolutionDir)nls";
|
|
localeTplDef.IntDir = localeTplDef.OutDir + "\\Build\\$(ProjectName)";
|
|
localeTplDef.CustomBuildFile = "run_locale_utils.wsf";
|
|
localeTplDef.CustomBuildDeps = "%FILES%";
|
|
localeTplDef.PrjDeps.push(localedefDef);
|
|
|
|
var localeDefs = localeTplDef.createLocaleDefs("%SRCDIR%\\etc\\nls");
|
|
|
|
localeArray = localeArray.concat(localeDefs);
|
|
|
|
var localesDef = new ProjectDef(".stdcxx_locales", typeGeneric);
|
|
localesDef.VCProjDir = ProjectsDir + "\\locales";
|
|
localesDef.OutDir = "$(SolutionDir)nls";
|
|
localesDef.IntDir = localesDef.OutDir;
|
|
localesDef.PrjDeps = localeDefs;
|
|
|
|
localeArray.push(localesDef);
|
|
}
|
|
|
|
projectDefs.push(localeArray);
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
var testlocaleArray = new Array();
|
|
|
|
var testlocaleTplDef = new ProjectDef(".stdcxx_testlocales", typeGeneric);
|
|
testlocaleTplDef.VCProjDir = ProjectsDir + "\\locales";
|
|
testlocaleTplDef.FilterDefs.push(
|
|
new FilterDef("Script Files", null, "js;wsf", eFileTypeScript, false).
|
|
addFiles("%SRCDIR%\\etc\\config\\windows",
|
|
new Array("run_locale_utils.wsf")));
|
|
testlocaleTplDef.OutDir = binPath;
|
|
testlocaleTplDef.IntDir = testlocaleTplDef.OutDir;
|
|
testlocaleTplDef.CustomBuildFile = "run_locale_utils.wsf";
|
|
testlocaleTplDef.CustomBuildDeps = "%FILES%";
|
|
testlocaleTplDef.PrjDeps.push(execDef);
|
|
testlocaleTplDef.PrjDeps.push(localeDef);
|
|
testlocaleTplDef.PrjDeps.push(localedefDef);
|
|
|
|
if (testLocales)
|
|
{
|
|
var testlocaleDefs = testlocaleTplDef.createTestLocaleDefs("%SRCDIR%\\etc\\nls");
|
|
|
|
testlocaleArray = testlocaleArray.concat(testlocaleDefs);
|
|
}
|
|
|
|
testlocaleTplDef.FilterDefs = new Array();
|
|
testlocaleTplDef.FilterDefs.push(
|
|
new FilterDef("Script Files", null, ".js;.wsf", eFileTypeScript, false).
|
|
addFiles("%SRCDIR%\\etc\\config\\windows",
|
|
new Array("runall.wsf", "config.js", "utilities.js",
|
|
"summary.js")));
|
|
testlocaleTplDef.CustomBuildFile = "runall.wsf";
|
|
testlocaleTplDef.CustomBuildCmd =
|
|
"set PATH=$(SolutionDir)%CONFIG%\\bin;$(SolutionDir)%CONFIG%\\lib;%PATH%\r\n" +
|
|
"cscript /nologo \"%CUSTOMFILE%\"" +
|
|
" /EXEDIR:\"$(OutDir)\"" +
|
|
" /CONFIG:\"%SOLUTION%\"" +
|
|
" /LOGFILE:\"runloctests.log\"" +
|
|
" /EXT:bat" +
|
|
" /RUNFLAGS:\"-t " + EXEC_TIMEOUT + "\"";
|
|
testlocaleTplDef.CustomBuildOut = "$(OutDir)\\runloctests.log";
|
|
|
|
var testlocalesDef = testlocaleTplDef.createTestLocalesDef("%SRCDIR%\\etc\\nls");
|
|
testlocaleArray.push(testlocalesDef);
|
|
|
|
projectDefs.push(testlocaleArray);
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
if (copyDll)
|
|
{
|
|
// if project type is application and
|
|
// if it depends on stdcxx project then
|
|
// copy libstdxx.dll to project output directory
|
|
// if it depends on rwtest project then
|
|
// copy rwtest.dll to project output directory
|
|
for (var i = 0; i < projectDefs.length; ++i)
|
|
{
|
|
var projectArray = projectDefs[i];
|
|
|
|
for (var j = 0; j < projectArray.length; ++j)
|
|
{
|
|
var projectDef = projectArray[j];
|
|
|
|
if (projectDef.Type != typeApplication)
|
|
continue;
|
|
|
|
var arrDeps = projectDef.PrjRefs.concat(projectDef.PrjDeps);
|
|
var command = "";
|
|
|
|
var cmdtpl = "set src=_SRC_\r\n" +
|
|
"set dst=_DST_\r\n" +
|
|
"if /I not %src%==%dst% (\r\n" +
|
|
"if exist %src% (\r\n" +
|
|
"del %dst%\r\n" +
|
|
"copy /Y %src% %dst%\r\n" +
|
|
"))";
|
|
|
|
if (0 <= arrayIndexOf(arrDeps, stdcxxDef))
|
|
{
|
|
var libname = "libstd%CONFIG%.dll";
|
|
var src = "\"" + libPath + "\\" + libname + "\"";
|
|
var dst = "\"$(OutDir)\\" + libname + "\"";
|
|
var cmd = cmdtpl.replace("_SRC_", src).replace("_DST_", dst);
|
|
if (0 == command.length)
|
|
command = cmd;
|
|
else
|
|
command += "\r\n" + cmd;
|
|
}
|
|
|
|
if (0 <= arrayIndexOf(arrDeps, rwtestDef))
|
|
{
|
|
var libname = "rwtest.dll";
|
|
var src = "\"$(SolutionDir)%CONFIG%\\tests\\" + libname + "\"";
|
|
var dst = "\"$(OutDir)\\" + libname + "\"";
|
|
var cmd = cmdtpl.replace("_SRC_", src).replace("_DST_", dst);
|
|
if (0 == command.length)
|
|
command = cmd;
|
|
else
|
|
command += "\r\n" + cmd;
|
|
}
|
|
|
|
if (null == projectDef.PostBuildCmd || "" == projectDef.PostBuildCmd)
|
|
projectDef.PostBuildCmd = command;
|
|
else
|
|
projectDef.PostBuildCmd = command + "\r\n" + projectDef.PostBuildCmd;
|
|
}
|
|
}
|
|
}
|
|
|
|
return projectDefs;
|
|
}
|
|
|
|
// create VCProject's using ProjectDed definitions
|
|
// projectDefs - array with project definitions
|
|
// report - callback function to report progress
|
|
function CreateProjects(projectDefs, report)
|
|
{
|
|
for (var i = 0; i < projectDefs.length; ++i)
|
|
{
|
|
var projectArray = projectDefs[i];
|
|
|
|
for (var j = 0; j < projectArray.length; ++j)
|
|
{
|
|
var projectDef = projectArray[j];
|
|
|
|
// turn off RTTI support if project in NonRTTIProjects array
|
|
if (0 <= arrayIndexOf(NonRTTIProjects, projectDef.Name))
|
|
projectDef.RTTI = false;
|
|
|
|
projectDef.createVCProject(VCProjectEngine, report);
|
|
}
|
|
}
|
|
}
|
|
|
|
// configure dependencies between projects
|
|
// (insert <References> section to the .vcproj file)
|
|
// projectDefs - array with project definitions
|
|
function ConfigureDependencies(projectDefs)
|
|
{
|
|
for (var i = 0; i < projectDefs.length; ++i)
|
|
{
|
|
var projectArray = projectDefs[i];
|
|
|
|
for (var j = 0; j < projectArray.length; ++j)
|
|
{
|
|
var projectDef = projectArray[j];
|
|
|
|
var VCProject = projectDef.VSProject;
|
|
|
|
var prjrefs = projectDef.PrjRefs;
|
|
if (0 == prjrefs.length)
|
|
continue;
|
|
|
|
var file = fso.OpenTextFile(VCProject.ProjectFile, 1, false);
|
|
var text = file.ReadAll();
|
|
file.Close();
|
|
var refs = "";
|
|
for (var k = 0; k < prjrefs.length; ++k)
|
|
{
|
|
refs += "\t\t<ProjectReference\n";
|
|
refs += "\t\t\tReferencedProjectIdentifier=\"" +
|
|
prjrefs[k].VSProject.ProjectGUID + "\"\n";
|
|
refs += "\t\t/>\n";
|
|
}
|
|
var pos = text.indexOf("\t</References>");
|
|
if (0 > pos)
|
|
{
|
|
var str = "\t</Configurations>";
|
|
pos = text.indexOf(str);
|
|
if (0 <= pos)
|
|
{
|
|
refs = "\n\t<References>\n" + refs + "\t</References>";
|
|
pos += str.length;
|
|
}
|
|
}
|
|
text = text.substr(0, pos) + refs + text.substr(pos);
|
|
text.replace("\t</References>", refs);
|
|
file = fso.CreateTextFile(VCProject.ProjectFile, true, false);
|
|
file.Write(text);
|
|
file.Close();
|
|
}
|
|
}
|
|
}
|