提交 b8ed00bd 编写于 作者: A Andrey Kamaev 提交者: Andrey Pavlenko

Compile OpenCV with GCC visibility set to hidden

上级 8130d926
...@@ -23,7 +23,9 @@ if(WIN32 AND NOT MINGW) ...@@ -23,7 +23,9 @@ if(WIN32 AND NOT MINGW)
add_definitions(-DJAS_WIN_MSVC_BUILD) add_definitions(-DJAS_WIN_MSVC_BUILD)
endif(WIN32 AND NOT MINGW) endif(WIN32 AND NOT MINGW)
ocv_warnings_disable(CMAKE_C_FLAGS -Wno-implicit-function-declaration -Wno-uninitialized -Wmissing-prototypes -Wmissing-declarations -Wunused -Wshadow -Wsign-compare) ocv_warnings_disable(CMAKE_C_FLAGS -Wno-implicit-function-declaration -Wno-uninitialized
-Wmissing-prototypes -Wmissing-declarations -Wunused -Wshadow
-Wsign-compare -Wstrict-overflow)
ocv_warnings_disable(CMAKE_C_FLAGS -Wunused-parameter) # clang ocv_warnings_disable(CMAKE_C_FLAGS -Wunused-parameter) # clang
ocv_warnings_disable(CMAKE_C_FLAGS /wd4013 /wd4018 /wd4101 /wd4244 /wd4267 /wd4715) # vs2005 ocv_warnings_disable(CMAKE_C_FLAGS /wd4013 /wd4018 /wd4101 /wd4244 /wd4267 /wd4715) # vs2005
......
...@@ -285,7 +285,6 @@ endif() ...@@ -285,7 +285,6 @@ endif()
# Path for build/platform -specific headers # Path for build/platform -specific headers
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
set(OPENCV_CONFIG_FILE_INCLUDE_DIR "${CMAKE_BINARY_DIR}/" CACHE PATH "Where to create the platform-dependant cvconfig.h") set(OPENCV_CONFIG_FILE_INCLUDE_DIR "${CMAKE_BINARY_DIR}/" CACHE PATH "Where to create the platform-dependant cvconfig.h")
add_definitions(-DHAVE_CVCONFIG_H)
ocv_include_directories(${OPENCV_CONFIG_FILE_INCLUDE_DIR}) ocv_include_directories(${OPENCV_CONFIG_FILE_INCLUDE_DIR})
......
...@@ -39,9 +39,7 @@ ...@@ -39,9 +39,7 @@
// //
//M*/ //M*/
#ifdef HAVE_CVCONFIG_H #include "cvconfig.h"
#include "cvconfig.h"
#endif
#ifdef HAVE_MALLOC_H #ifdef HAVE_MALLOC_H
#include <malloc.h> #include <malloc.h>
......
...@@ -250,6 +250,12 @@ set(OPENCV_EXTRA_EXE_LINKER_FLAGS "${OPENCV_EXTRA_EXE_LINKER_FLAGS}" ...@@ -250,6 +250,12 @@ set(OPENCV_EXTRA_EXE_LINKER_FLAGS "${OPENCV_EXTRA_EXE_LINKER_FLAGS}"
set(OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE "${OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE}" CACHE INTERNAL "Extra linker flags for Release build") set(OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE "${OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE}" CACHE INTERNAL "Extra linker flags for Release build")
set(OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG "${OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG}" CACHE INTERNAL "Extra linker flags for Debug build") set(OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG "${OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG}" CACHE INTERNAL "Extra linker flags for Debug build")
# set default visibility to hidden
if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_OPENCV_GCC_VERSION_NUM GREATER 399)
add_extra_compiler_option(-fvisibility=hidden)
add_extra_compiler_option(-fvisibility-inlines-hidden)
endif()
#combine all "extra" options #combine all "extra" options
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OPENCV_EXTRA_FLAGS} ${OPENCV_EXTRA_C_FLAGS}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OPENCV_EXTRA_FLAGS} ${OPENCV_EXTRA_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OPENCV_EXTRA_FLAGS} ${OPENCV_EXTRA_CXX_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OPENCV_EXTRA_FLAGS} ${OPENCV_EXTRA_CXX_FLAGS}")
......
#pragma once #pragma once
#if defined(__linux__) || defined(LINUX) || defined(__APPLE__) || defined(ANDROID) #if defined(__linux__) || defined(LINUX) || defined(__APPLE__) || defined(__ANDROID__)
#include <opencv2/core.hpp> #include <opencv2/core.hpp>
#include <opencv2/objdetect.hpp> #include <opencv2/objdetect.hpp>
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
namespace cv namespace cv
{ {
class DetectionBasedTracker class CV_EXPORTS DetectionBasedTracker
{ {
public: public:
struct Parameters struct Parameters
......
...@@ -73,8 +73,10 @@ ...@@ -73,8 +73,10 @@
# define CV_ENABLE_UNROLLED 1 # define CV_ENABLE_UNROLLED 1
#endif #endif
#if (defined WIN32 || defined _WIN32 || defined WINCE) && defined CVAPI_EXPORTS #if (defined WIN32 || defined _WIN32 || defined WINCE || defined __CYGWIN__) && defined CVAPI_EXPORTS
# define CV_EXPORTS __declspec(dllexport) # define CV_EXPORTS __declspec(dllexport)
#elif defined __GNUC__ && __GNUC__ >= 4
# define CV_EXPORTS __attribute__ ((visibility ("default")))
#else #else
# define CV_EXPORTS # define CV_EXPORTS
#endif #endif
......
...@@ -174,7 +174,7 @@ public: ...@@ -174,7 +174,7 @@ public:
To make it all work, you need to specialize Ptr<>::delete_obj(), like: To make it all work, you need to specialize Ptr<>::delete_obj(), like:
\code \code
template<> void Ptr<MyObjectType>::delete_obj() { call_destructor_func(obj); } template<> CV_EXPORTS void Ptr<MyObjectType>::delete_obj() { call_destructor_func(obj); }
\endcode \endcode
\note{if MyObjectType is a C++ class with a destructor, you do not need to specialize delete_obj(), \note{if MyObjectType is a C++ class with a destructor, you do not need to specialize delete_obj(),
......
...@@ -272,7 +272,11 @@ CV_INLINE double cvRandReal( CvRNG* rng ) ...@@ -272,7 +272,11 @@ CV_INLINE double cvRandReal( CvRNG* rng )
#define IPL_BORDER_REFLECT 2 #define IPL_BORDER_REFLECT 2
#define IPL_BORDER_WRAP 3 #define IPL_BORDER_WRAP 3
typedef struct CV_EXPORTS _IplImage typedef struct
#ifdef __cplusplus
CV_EXPORTS
#endif
_IplImage
{ {
int nSize; /* sizeof(IplImage) */ int nSize; /* sizeof(IplImage) */
int ID; /* version (=0)*/ int ID; /* version (=0)*/
...@@ -563,7 +567,11 @@ CV_INLINE int cvIplDepth( int type ) ...@@ -563,7 +567,11 @@ CV_INLINE int cvIplDepth( int type )
#define CV_MAX_DIM 32 #define CV_MAX_DIM 32
#define CV_MAX_DIM_HEAP 1024 #define CV_MAX_DIM_HEAP 1024
typedef struct CV_EXPORTS CvMatND typedef struct
#ifdef __cplusplus
CV_EXPORTS
#endif
CvMatND
{ {
int type; int type;
int dims; int dims;
...@@ -610,7 +618,11 @@ CvMatND; ...@@ -610,7 +618,11 @@ CvMatND;
struct CvSet; struct CvSet;
typedef struct CV_EXPORTS CvSparseMat typedef struct
#ifdef __cplusplus
CV_EXPORTS
#endif
CvSparseMat
{ {
int type; int type;
int dims; int dims;
......
...@@ -42,9 +42,7 @@ ...@@ -42,9 +42,7 @@
#include <cstdio> #include <cstdio>
#ifdef HAVE_CVCONFIG_H
#include "cvconfig.h" #include "cvconfig.h"
#endif
#include "opencv2/core.hpp" #include "opencv2/core.hpp"
#include "opencv2/gpu.hpp" #include "opencv2/gpu.hpp"
#include "opencv2/highgui.hpp" #include "opencv2/highgui.hpp"
......
...@@ -542,8 +542,8 @@ protected: ...@@ -542,8 +542,8 @@ protected:
Ptr<CvVideoWriter> writer; Ptr<CvVideoWriter> writer;
}; };
template<> void Ptr<CvCapture>::delete_obj(); template<> CV_EXPORTS void Ptr<CvCapture>::delete_obj();
template<> void Ptr<CvVideoWriter>::delete_obj(); template<> CV_EXPORTS void Ptr<CvVideoWriter>::delete_obj();
} // cv } // cv
......
...@@ -1205,11 +1205,7 @@ static int to_ok(PyTypeObject *to) ...@@ -1205,11 +1205,7 @@ static int to_ok(PyTypeObject *to)
return (PyType_Ready(to) == 0); return (PyType_Ready(to) == 0);
} }
extern "C" extern "C" CV_EXPORTS void initcv2();
#if defined WIN32 || defined _WIN32
__declspec(dllexport)
#endif
void initcv2();
void initcv2() void initcv2()
{ {
......
#ifndef __OPENCV_GTESTCV_HPP__ #ifndef __OPENCV_GTESTCV_HPP__
#define __OPENCV_GTESTCV_HPP__ #define __OPENCV_GTESTCV_HPP__
#ifdef HAVE_CVCONFIG_H #include "opencv2/core/cvdef.h"
# include "cvconfig.h"
#endif
#ifndef GTEST_CREATE_SHARED_LIBRARY
#ifdef BUILD_SHARED_LIBS
#define GTEST_LINKED_AS_SHARED_LIBRARY 1
#endif
#endif
#include <stdarg.h> // for va_list #include <stdarg.h> // for va_list
#ifdef _MSC_VER #ifdef _MSC_VER
......
...@@ -1912,19 +1912,7 @@ using ::std::tuple_size; ...@@ -1912,19 +1912,7 @@ using ::std::tuple_size;
#endif // GTEST_HAS_SEH #endif // GTEST_HAS_SEH
#ifdef _MSC_VER #define GTEST_API_ CV_EXPORTS
# if GTEST_LINKED_AS_SHARED_LIBRARY
# define GTEST_API_ __declspec(dllimport)
# elif GTEST_CREATE_SHARED_LIBRARY
# define GTEST_API_ __declspec(dllexport)
# endif
#endif // _MSC_VER
#ifndef GTEST_API_
# define GTEST_API_
#endif
#ifdef __GNUC__ #ifdef __GNUC__
// Ask the compiler to never inline a given function. // Ask the compiler to never inline a given function.
......
#ifndef __OPENCV_TS_PERF_HPP__ #ifndef __OPENCV_TS_PERF_HPP__
#define __OPENCV_TS_PERF_HPP__ #define __OPENCV_TS_PERF_HPP__
#ifdef HAVE_CVCONFIG_H
# include "cvconfig.h"
#endif
#ifndef GTEST_CREATE_SHARED_LIBRARY
# ifdef BUILD_SHARED_LIBS
# define GTEST_LINKED_AS_SHARED_LIBRARY 1
# endif
#endif
#include "opencv2/core.hpp" #include "opencv2/core.hpp"
#include "ts_gtest.h" #include "ts_gtest.h"
......
#include "opencv2/objdetect/objdetect_c.h" #include "opencv2/objdetect/objdetect_c.h"
#include "opencv2/highgui/highgui_c.h" #include "opencv2/highgui/highgui_c.h"
#include "opencv2/core/utility.hpp"
#include <stdio.h> #include <stdio.h>
#ifdef HAVE_CVCONFIG_H
#include <cvconfig.h>
#endif
#ifdef HAVE_TBB
#include "tbb/task_scheduler_init.h"
#endif
using namespace cv; using namespace cv;
static void help() static void help()
...@@ -31,28 +25,17 @@ static void detect_and_draw_objects( IplImage* image, CvLatentSvmDetector* detec ...@@ -31,28 +25,17 @@ static void detect_and_draw_objects( IplImage* image, CvLatentSvmDetector* detec
CvSeq* detections = 0; CvSeq* detections = 0;
int i = 0; int i = 0;
int64 start = 0, finish = 0; int64 start = 0, finish = 0;
#ifdef HAVE_TBB
tbb::task_scheduler_init init(tbb::task_scheduler_init::deferred); setNumThreads(numThreads);
if (numThreads > 0) numThreads = getNumThreads();
{
init.initialize(numThreads);
printf("Number of threads %i\n", numThreads); printf("Number of threads %i\n", numThreads);
}
else
{
printf("Number of threads is not correct for TBB version");
return;
}
#endif
start = cvGetTickCount(); start = cvGetTickCount();
detections = cvLatentSvmDetectObjects(image, detector, storage, 0.5f, numThreads); detections = cvLatentSvmDetectObjects(image, detector, storage, 0.5f, numThreads);
finish = cvGetTickCount(); finish = cvGetTickCount();
printf("detection time = %.3f\n", (float)(finish - start) / (float)(cvGetTickFrequency() * 1000000.0)); printf("detection time = %.3f\n", (float)(finish - start) / (float)(cvGetTickFrequency() * 1000000.0));
setNumThreads(-1);
#ifdef HAVE_TBB
init.terminate();
#endif
for( i = 0; i < detections->total; i++ ) for( i = 0; i < detections->total; i++ )
{ {
CvObjectDetection detection = *(CvObjectDetection*)cvGetSeqElem( detections, i ); CvObjectDetection detection = *(CvObjectDetection*)cvGetSeqElem( detections, i );
......
...@@ -9,14 +9,6 @@ ...@@ -9,14 +9,6 @@
#include <dirent.h> #include <dirent.h>
#endif #endif
#ifdef HAVE_CVCONFIG_H
#include <cvconfig.h>
#endif
#ifdef HAVE_TBB
#include "tbb/task_scheduler_init.h"
#endif
using namespace std; using namespace std;
using namespace cv; using namespace cv;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册