Commit 925594d1 authored by Vadim Pisarevsky's avatar Vadim Pisarevsky

Merge pull request #7894 from alalek:ocl_program

parents dd81c298 c3e409f9
...@@ -12,14 +12,8 @@ endif() ...@@ -12,14 +12,8 @@ endif()
string(REGEX REPLACE "\\.cpp$" ".hpp" OUTPUT_HPP "${OUTPUT}") string(REGEX REPLACE "\\.cpp$" ".hpp" OUTPUT_HPP "${OUTPUT}")
get_filename_component(OUTPUT_HPP_NAME "${OUTPUT_HPP}" NAME) get_filename_component(OUTPUT_HPP_NAME "${OUTPUT_HPP}" NAME)
if("${MODULE_NAME}" STREQUAL "ocl") set(nested_namespace_start "namespace ${MODULE_NAME}\n{")
set(nested_namespace_start "") set(nested_namespace_end "}")
set(nested_namespace_end "")
else()
set(new_mode ON)
set(nested_namespace_start "namespace ${MODULE_NAME}\n{")
set(nested_namespace_end "}")
endif()
set(STR_CPP "// This file is auto-generated. Do not edit! set(STR_CPP "// This file is auto-generated. Do not edit!
...@@ -35,6 +29,8 @@ namespace ocl ...@@ -35,6 +29,8 @@ namespace ocl
{ {
${nested_namespace_start} ${nested_namespace_start}
static const char* const moduleName = \"${MODULE_NAME}\";
") ")
set(STR_HPP "// This file is auto-generated. Do not edit! set(STR_HPP "// This file is auto-generated. Do not edit!
...@@ -76,19 +72,15 @@ foreach(cl ${cl_list}) ...@@ -76,19 +72,15 @@ foreach(cl ${cl_list})
string(MD5 hash "${lines}") string(MD5 hash "${lines}")
set(STR_CPP_DECL "const struct ProgramEntry ${cl_filename}={\"${cl_filename}\",\n\"${lines}, \"${hash}\"};\n") set(STR_CPP_DECL "struct cv::ocl::internal::ProgramEntry ${cl_filename}_oclsrc={moduleName, \"${cl_filename}\",\n\"${lines}, \"${hash}\", NULL};\n")
set(STR_HPP_DECL "extern const struct ProgramEntry ${cl_filename};\n") set(STR_HPP_DECL "extern struct cv::ocl::internal::ProgramEntry ${cl_filename}_oclsrc;\n")
if(new_mode)
set(STR_CPP_DECL "${STR_CPP_DECL}ProgramSource ${cl_filename}_oclsrc(${cl_filename}.programStr);\n")
set(STR_HPP_DECL "${STR_HPP_DECL}extern ProgramSource ${cl_filename}_oclsrc;\n")
endif()
set(STR_CPP "${STR_CPP}${STR_CPP_DECL}") set(STR_CPP "${STR_CPP}${STR_CPP_DECL}")
set(STR_HPP "${STR_HPP}${STR_HPP_DECL}") set(STR_HPP "${STR_HPP}${STR_HPP_DECL}")
endforeach() endforeach()
set(STR_CPP "${STR_CPP}}\n${nested_namespace_end}}\n#endif\n") set(STR_CPP "${STR_CPP}\n${nested_namespace_end}}}\n#endif\n")
set(STR_HPP "${STR_HPP}}\n${nested_namespace_end}}\n#endif\n") set(STR_HPP "${STR_HPP}\n${nested_namespace_end}}}\n#endif\n")
file(WRITE "${OUTPUT}" "${STR_CPP}") file(WRITE "${OUTPUT}" "${STR_CPP}")
...@@ -96,7 +88,7 @@ if(EXISTS "${OUTPUT_HPP}") ...@@ -96,7 +88,7 @@ if(EXISTS "${OUTPUT_HPP}")
file(READ "${OUTPUT_HPP}" hpp_lines) file(READ "${OUTPUT_HPP}" hpp_lines)
endif() endif()
if("${hpp_lines}" STREQUAL "${STR_HPP}") if("${hpp_lines}" STREQUAL "${STR_HPP}")
message(STATUS "${OUTPUT_HPP} contains same content") message(STATUS "${OUTPUT_HPP} contains the same content")
else() else()
file(WRITE "${OUTPUT_HPP}" "${STR_HPP}") file(WRITE "${OUTPUT_HPP}" "${STR_HPP}")
endif() endif()
...@@ -629,17 +629,18 @@ protected: ...@@ -629,17 +629,18 @@ protected:
class CV_EXPORTS ProgramSource class CV_EXPORTS ProgramSource
{ {
public: public:
typedef uint64 hash_t; typedef uint64 hash_t; // deprecated
ProgramSource(); ProgramSource();
explicit ProgramSource(const String& prog); explicit ProgramSource(const String& module, const String& name, const String& codeStr, const String& codeHash);
explicit ProgramSource(const char* prog); explicit ProgramSource(const String& prog); // deprecated
explicit ProgramSource(const char* prog); // deprecated
~ProgramSource(); ~ProgramSource();
ProgramSource(const ProgramSource& prog); ProgramSource(const ProgramSource& prog);
ProgramSource& operator = (const ProgramSource& prog); ProgramSource& operator = (const ProgramSource& prog);
const String& source() const; const String& source() const;
hash_t hash() const; hash_t hash() const; // deprecated
protected: protected:
struct Impl; struct Impl;
......
...@@ -42,23 +42,28 @@ ...@@ -42,23 +42,28 @@
#ifndef OPENCV_OPENCL_GENBASE_HPP #ifndef OPENCV_OPENCL_GENBASE_HPP
#define OPENCV_OPENCL_GENBASE_HPP #define OPENCV_OPENCL_GENBASE_HPP
namespace cv
{
namespace ocl
{
//! @cond IGNORED //! @cond IGNORED
struct ProgramEntry namespace cv {
namespace ocl {
class ProgramSource;
namespace internal {
struct CV_EXPORTS ProgramEntry
{ {
const char* module;
const char* name; const char* name;
const char* programStr; const char* programCode;
const char* programHash; const char* programHash;
ProgramSource* pProgramSource;
operator ProgramSource& () const;
}; };
//! @endcond } } } // namespace
} //! @endcond
}
#endif #endif
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment