replaced python build script with WSH one for windows platforms

This commit is contained in:
KOLANICH 2012-10-12 19:43:45 +04:00 committed by Anatoly Baksheev
parent cfe28e3b73
commit c1f2b1fcc4
2 changed files with 49 additions and 1 deletions

View File

@ -11,11 +11,19 @@ ocv_module_include_directories()
file(GLOB CL_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/kernels/*.cl")
set(kernels_cpp "${CMAKE_CURRENT_BINARY_DIR}/kernels.cpp")
set(cl2cpp_script "${CMAKE_CURRENT_SOURCE_DIR}/cl2cpp.py")
set(cl2cpp_script_W32 "${CMAKE_CURRENT_SOURCE_DIR}/cl2cpp.js")
add_custom_command(
IF(WIN32)
add_custom_command(
OUTPUT ${kernels_cpp}
COMMAND wscript.exe ${cl2cpp_script_W32} "${CMAKE_CURRENT_SOURCE_DIR}/src/kernels" ${kernels_cpp}
DEPENDS ${CL_FILES} ${cl2cpp_script_W32})
else()
add_custom_command(
OUTPUT ${kernels_cpp}
COMMAND ${PYTHON_EXECUTABLE} ${cl2cpp_script} "${CMAKE_CURRENT_SOURCE_DIR}/src/kernels" ${kernels_cpp}
DEPENDS ${CL_FILES} ${cl2cpp_script})
ENDIF()
file(GLOB lib_hdrs "include/opencv2/${name}/*.hpp" "include/opencv2/${name}/*.h")
file(GLOB lib_srcs "src/*.cpp")

40
modules/ocl/cl2cpp.js Normal file
View File

@ -0,0 +1,40 @@
var fso = new ActiveXObject("Scripting.FileSystemObject"), shell = new ActiveXObject("WScript.Shell"), args = WScript.Arguments, indir = args[0], outname = args[1], outDir, scriptFullPath = WScript.ScriptFullName;
function getDir(a) {
return a.substring(0, a.lastIndexOf("\\") || a.lastIndexOf("/"))
}
if (!indir || !outname) {
var scriptPath = getDir(WScript.ScriptFullName.toString()),
indir = indir || scriptPath + "/src/kernels";
outname || (outname = scriptPath + "/kernels.cpp", outDir = scriptPath)
} else {
outDir = getDir(outname);
try {
fso.CreateFolder(outDir)
} catch (err) {}
}
var infldr = fso.GetFolder(indir), clrx = /([\w-]+)\.cl$/i, stripBeginningRx = /^(\s)+/i, stripSinglelineMstyle = /\/\*.*?\*\//ig, outStream = fso.OpenTextFile(outname, 2, !0, -2);
outStream.write("// This file is auto-generated. Do not edit!\n\nnamespace cv{\n\tnamespace ocl{\n");
for (var res, cl_file, l, state, countFiles = 0, codeRows = 0, removedRows = 0, filei = new Enumerator(infldr.Files); !filei.atEnd(); filei.moveNext())
if (cl_file = filei.item(), res = cl_file.Name.match(clrx)) {
var cl_filename = res[1],
inStream = cl_file.OpenAsTextStream(1);
outStream.writeLine("\t\tconst char* " + cl_filename + "=");
state = 0;
for (countFiles++; !inStream.AtEndOfStream; ) {
l = inStream.readLine();
stripSinglelineMstyle.lastIndex = 0;
l = l.replace(stripSinglelineMstyle, "");
var mline = l.indexOf("/*");
0 <= mline ? (l = l.substr(0, mline),
state = 1) : (mline = l.indexOf("*/"), 0 <= mline && (l = l.substr(mline + 2), state = 0));
var slineBegin = l.indexOf("//");
0 <= slineBegin && (l = l.substr(0, slineBegin));
1 == state || !l ? removedRows++ : (l = l.replace(stripBeginningRx, "$1"), l = l.replace("\\", "\\\\"), l = l.replace("\r", ""), l = l.replace('"', '\\"'), l = l.replace("\t", " "), codeRows++, outStream.writeLine('\t\t\t"' + l + '\\n"'))
}
outStream.writeLine("\t\t;");
inStream.close()
}
outStream.writeLine("\t\t}\n\t}");
outStream.close();
shell.Popup("Merging OpenCL Kernels into cpp file has been FINISHED!\nFiles : " + countFiles + "\nCode rows : " + codeRows + "\nRemoved rows : " + removedRows, 1, "OpenCL Kernels to cpp file", 64);