endif()\r
\r
if(ENABLE_OPENMP)\r
- set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /openmp")\r
+ set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /openmp")\r
endif()\r
\r
# Remove unreferenced functions: function level linking\r
# Parallel mode\r
if(ENABLE_OPENMP)\r
set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -D_GLIBCXX_PARALLEL -fopenmp")\r
+ set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} gomp)\r
endif()\r
\r
set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -DNDEBUG")\r
\r
# Add user supplied extra options (optimization, etc...)\r
# ==========================================================\r
-set(OPENCV_EXTRA_C_FLAGS ${EXTRA_C_FLAGS} CACHE STRING "Extra compiler options")\r
-set(OPENCV_EXTRA_C_FLAGS_RELEASE ${EXTRA_C_FLAGS_RELEASE} CACHE STRING "Extra compiler options for Release build")\r
-set(OPENCV_EXTRA_C_FLAGS_DEBUG ${EXTRA_C_FLAGS_DEBUG} CACHE STRING "Extra compiler options for Debug build")\r
-set(OPENCV_EXTRA_EXE_LINKER_FLAGS ${EXTRA_EXE_LINKER_FLAGS} CACHE STRING "Extra linker flags" FORCE)\r
-set(OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE ${EXTRA_EXE_LINKER_FLAGS_RELEASE} CACHE STRING "Extra linker flags for Release build" FORCE)\r
-set(OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG ${EXTRA_EXE_LINKER_FLAGS_DEBUG} CACHE STRING "Extra linker flags for Debug build" FORCE)\r
-\r
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OPENCV_EXTRA_C_FLAGS}")\r
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OPENCV_EXTRA_C_FLAGS}")\r
-set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${OPENCV_EXTRA_C_FLAGS_RELEASE}")\r
-set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${OPENCV_EXTRA_C_FLAGS_RELEASE}")\r
-set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${OPENCV_EXTRA_C_FLAGS_DEBUG}")\r
-set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${OPENCV_EXTRA_C_FLAGS_DEBUG}")\r
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OPENCV_EXTRA_EXE_LINKER_FLAGS}")\r
-set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE}")\r
-set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG}")\r
+set(OPENCV_EXTRA_C_FLAGS "" CACHE STRING "Extra compiler options")\r
+set(OPENCV_EXTRA_C_FLAGS_RELEASE "" CACHE STRING "Extra compiler options for Release build")\r
+set(OPENCV_EXTRA_C_FLAGS_DEBUG "" CACHE STRING "Extra compiler options for Debug build")\r
+set(OPENCV_EXTRA_EXE_LINKER_FLAGS "" CACHE STRING "Extra linker flags" FORCE)\r
+set(OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE "" CACHE STRING "Extra linker flags for Release build" FORCE)\r
+set(OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG "" CACHE STRING "Extra linker flags for Debug build" FORCE)\r
+\r
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} ${OPENCV_EXTRA_C_FLAGS}")\r
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_C_FLAGS} ${OPENCV_EXTRA_C_FLAGS}")\r
+set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${EXTRA_C_FLAGS_RELEASE} ${OPENCV_EXTRA_C_FLAGS_RELEASE}")\r
+set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${EXTRA_C_FLAGS_RELEASE} ${OPENCV_EXTRA_C_FLAGS_RELEASE}")\r
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${EXTRA_C_FLAGS_DEBUG} ${OPENCV_EXTRA_C_FLAGS_DEBUG}")\r
+set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${EXTRA_C_FLAGS_DEBUG} ${OPENCV_EXTRA_C_FLAGS_DEBUG}")\r
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_EXE_LINKER_FLAGS} ${OPENCV_EXTRA_EXE_LINKER_FLAGS}")\r
+set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${EXTRA_EXE_LINKER_FLAGS_RELEASE} ${OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE}")\r
+set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${EXTRA_EXE_LINKER_FLAGS_DEBUG} ${OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG}")\r
\r
# In case of Makefiles if the user does not setup CMAKE_BUILD_TYPE, assume it's Release:\r
if (${CMAKE_GENERATOR} MATCHES ".*Makefiles")\r
#endif /* CV_VERBOSE */
+#if defined CV_OPENMP && (defined _MSC_VER || defined CV_ICC)
+#define CV_OPENMP 1
+#else
+#undef CV_OPENMP
+#endif
+
typedef struct CvBackgroundData
{
int count;
*/
CvBackgroundReader* cvbgreader = NULL;
-#if defined _OPENMP
+#if defined CV_OPENMP
#pragma omp threadprivate(cvbgreader)
#endif
CvUserdata userdata;
/* private variables */
- #ifdef _OPENMP
+ #ifdef CV_OPENMP
CvMat t_data;
CvMat t_idx;
int first;
int t_portion;
int portion = CV_STUMP_TRAIN_PORTION;
- #endif /* _OPENMP */
+ #endif /* CV_OPENMP */
m = data->sum.rows;
userdata = cvUserdata( data, haarFeatures );
- #ifdef _OPENMP
+ #ifdef CV_OPENMP
#pragma omp parallel for private(t_data, t_idx, first, t_portion)
for( first = 0; first < numprecalculated; first += portion )
{
#else
cvGetSortedIndices( data->valcache, data->idxcache, 1 );
#endif
- #endif /* _OPENMP */
+ #endif /* CV_OPENMP */
}
__END__;
reader->img.data.ptr = NULL;
}
- #ifdef _OPENMP
+ #ifdef CV_OPENMP
#pragma omp critical(c_background_data)
- #endif /* _OPENMP */
+ #endif /* CV_OPENMP */
{
for( i = 0; i < data->count; i++ )
{
if( cvbgdata )
{
- #ifdef _OPENMP
+ #ifdef CV_OPENMP
#pragma omp parallel
- #endif /* _OPENMP */
+ #endif /* CV_OPENMP */
{
- #ifdef _OPENMP
+ #ifdef CV_OPENMP
#pragma omp critical(c_create_bg_data)
- #endif /* _OPENMP */
+ #endif /* CV_OPENMP */
{
if( cvbgreader == NULL )
{
void icvDestroyBackgroundReaders()
{
/* release background reader in each thread */
- #ifdef _OPENMP
+ #ifdef CV_OPENMP
#pragma omp parallel
- #endif /* _OPENMP */
+ #endif /* CV_OPENMP */
{
- #ifdef _OPENMP
+ #ifdef CV_OPENMP
#pragma omp critical(c_release_bg_data)
- #endif /* _OPENMP */
+ #endif /* CV_OPENMP */
{
if( cvbgreader != NULL )
{
CCOUNTER_SET_ZERO(consumed_count);
CCOUNTER_SET_ZERO(thread_consumed_count);
- #ifdef _OPENMP
+ #ifdef CV_OPENMP
#pragma omp parallel private(img, sum, tilted, sqsum, sumdata, tilteddata, \
normfactor, thread_consumed_count, thread_getcount)
- #endif /* _OPENMP */
+ #endif /* CV_OPENMP */
{
sumdata = NULL;
tilteddata = NULL;
cvAlloc( sizeof( sqsum_type ) * (data->winsize.height + 1)
* (data->winsize.width + 1) ) );
- #ifdef _OPENMP
+ #ifdef CV_OPENMP
#pragma omp for schedule(static, 1)
- #endif /* _OPENMP */
+ #endif /* CV_OPENMP */
for( i = first; (i < first + count); i++ )
{
if( !ok )
cvFree( &(img.data.ptr) );
cvFree( &(sqsum.data.ptr) );
- #ifdef _OPENMP
+ #ifdef CV_OPENMP
#pragma omp critical (c_consumed_count)
- #endif /* _OPENMP */
+ #endif /* CV_OPENMP */
{
/* consumed_count += thread_consumed_count; */
CCOUNTER_ADD(getcount, thread_getcount);
// CCOUNTER_SET_ZERO(consumed_count);
// CCOUNTER_SET_ZERO(thread_consumed_count);
//
-// #ifdef _OPENMP
+// #ifdef CV_OPENMP
// #pragma omp parallel private(img, sum, tilted, sqsum, sumdata, tilteddata,
// normfactor, thread_consumed_count)
-// #endif /* _OPENMP */
+// #endif /* CV_OPENMP */
// {
// sumdata = NULL;
// tilteddata = NULL;
// cvAlloc( sizeof( sqsum_type ) * (data->winsize.height + 1)
// * (data->winsize.width + 1) ) );
//
-// #ifdef _OPENMP
+// #ifdef CV_OPENMP
// #pragma omp for schedule(static, 1)
-// #endif /* _OPENMP */
+// #endif /* CV_OPENMP */
// for( i = first; i < first + count; i++ )
// {
// for( ; ; )
// cvFree( &(img.data.ptr) );
// cvFree( &(sqsum.data.ptr) );
//
-// #ifdef _OPENMP
+// #ifdef CV_OPENMP
// #pragma omp critical (c_consumed_count)
-// #endif /* _OPENMP */
+// #endif /* CV_OPENMP */
// {
// /* consumed_count += thread_consumed_count; */
// CCOUNTER_ADD(consumed_count, thread_consumed_count);
return 0;
// just in case icvGetBackgroundImage is not thread-safe ...
- #ifdef _OPENMP
+ #ifdef CV_OPENMP
#pragma omp critical (get_background_image_callback)
- #endif /* _OPENMP */
+ #endif /* CV_OPENMP */
{
icvGetBackgroundImage( cvbgdata, cvbgreader, img );
}
CV_CALL( ptr = cvCreateMat( num, total, CV_32FC1 ) );
- #ifdef _OPENMP
+ #ifdef CV_OPENMP
#pragma omp parallel for
#endif
for( r = start; r < start + num; r++ )