From 429cd85b46f85418a3fea5a6e2d70e9ccfba9639 Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Wed, 20 Mar 2013 12:12:58 -0700 Subject: [PATCH] More accurate guards for WinRT features in CMake. --- 3rdparty/tbb/CMakeLists.txt | 4 ++-- CMakeLists.txt | 7 +------ cmake/OpenCVDetectCXXCompiler.cmake | 2 ++ modules/highgui/CMakeLists.txt | 12 ++++++++---- platforms/winrt/arm.winrt.toolchain.cmake | 5 +++++ platforms/winrt/scripts/cmake_winrt.cmd | 4 +--- 6 files changed, 19 insertions(+), 15 deletions(-) create mode 100644 platforms/winrt/arm.winrt.toolchain.cmake diff --git a/3rdparty/tbb/CMakeLists.txt b/3rdparty/tbb/CMakeLists.txt index 6a5d2a8..af15813 100644 --- a/3rdparty/tbb/CMakeLists.txt +++ b/3rdparty/tbb/CMakeLists.txt @@ -123,7 +123,7 @@ file(GLOB lib_hdrs "${tbb_src_dir}/src/tbb/*.h") list(APPEND lib_srcs "${tbb_src_dir}/src/rml/client/rml_tbb.cpp") if (WIN32) -add_definitions(-D__TBB_DYNAMIC_LOAD_ENABLED=0 + add_definitions(-D__TBB_DYNAMIC_LOAD_ENABLED=0 -D__TBB_BUILD=1 -D_UNICODE -DUNICODE @@ -162,7 +162,7 @@ endif() set(TBB_SOURCE_FILES ${lib_srcs} ${lib_hdrs}) -if ((${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") AND NOT WIN32) +if (ARM AND NOT WIN32) if (NOT ANDROID) set(TBB_SOURCE_FILES ${TBB_SOURCE_FILES} "${CMAKE_CURRENT_SOURCE_DIR}/arm_linux_stub.cpp") endif() diff --git a/CMakeLists.txt b/CMakeLists.txt index 1f997ba..22ee7fe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,11 +60,6 @@ endif() project(OpenCV CXX C) -if ((${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") AND WIN32) - set(CMAKE_REQUIRED_DEFINITIONS -D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE) - add_definitions(-D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE) -endif() - include(cmake/OpenCVUtils.cmake) # ---------------------------------------------------------------------------- @@ -613,7 +608,7 @@ else() status(" QT 4.x:" NO) endif() if(WIN32) - status(" Win32 UI:" NO) + status(" Win32 UI:" ARM THEN NO ELSE YES) else() if(APPLE) if(WITH_CARBON) diff --git a/cmake/OpenCVDetectCXXCompiler.cmake b/cmake/OpenCVDetectCXXCompiler.cmake index 6e02780..504004b 100644 --- a/cmake/OpenCVDetectCXXCompiler.cmake +++ b/cmake/OpenCVDetectCXXCompiler.cmake @@ -103,4 +103,6 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*" OR CMAKE_GENERATOR set(X86_64 1) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*|amd64.*|AMD64.*") set(X86 1) +elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "arm.*|ARM.*") + set(ARM 1) endif() diff --git a/modules/highgui/CMakeLists.txt b/modules/highgui/CMakeLists.txt index b8600e9..6d92455 100644 --- a/modules/highgui/CMakeLists.txt +++ b/modules/highgui/CMakeLists.txt @@ -90,7 +90,9 @@ if(HAVE_QT) set_source_files_properties(${_RCC_OUTFILES} PROPERTIES COMPILE_FLAGS -Wno-missing-declarations) endif() elseif(WIN32) - #list(APPEND highgui_srcs src/window_w32.cpp) + if (NOT ARM) + list(APPEND highgui_srcs src/window_w32.cpp) + endif() elseif(HAVE_GTK) list(APPEND highgui_srcs src/window_gtk.cpp) elseif(APPLE) @@ -105,10 +107,12 @@ elseif(APPLE) endif() endif() -#if(WIN32) +if(WIN32) list(APPEND highgui_srcs src/cap_dshow.cpp) - #list(APPEND highgui_srcs src/cap_vfw.cpp src/cap_cmu.cpp) -#endif(WIN32) + if (NOT ARM) + list(APPEND highgui_srcs src/cap_vfw.cpp src/cap_cmu.cpp) + endif() +endif(WIN32) if(HAVE_XINE) list(APPEND highgui_srcs src/cap_xine.cpp) diff --git a/platforms/winrt/arm.winrt.toolchain.cmake b/platforms/winrt/arm.winrt.toolchain.cmake new file mode 100644 index 0000000..01854b5 --- /dev/null +++ b/platforms/winrt/arm.winrt.toolchain.cmake @@ -0,0 +1,5 @@ +set(CMAKE_SYSTEM_NAME Windows) # WindowsRT breaks cmake 2.8.10.2 and earler +set(CMAKE_SYSTEM_PROCESSOR "arm") + +set(CMAKE_REQUIRED_DEFINITIONS -D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE) +add_definitions(-D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE) \ No newline at end of file diff --git a/platforms/winrt/scripts/cmake_winrt.cmd b/platforms/winrt/scripts/cmake_winrt.cmd index 18aafef..3dd20e4 100644 --- a/platforms/winrt/scripts/cmake_winrt.cmd +++ b/platforms/winrt/scripts/cmake_winrt.cmd @@ -3,6 +3,4 @@ cd build rem call "C:\Program Files\Microsoft Visual Studio 11.0\VC\bin\x86_arm\vcvarsx86_arm.bat" -SET PATH=C:\Program Files\Ninja;%PATH% - -"C:\Program Files\CMake 2.8\bin\cmake.exe" -GNinja -DCMAKE_BUILD_TYPE=Release -DWITH_TIFF=OFF -DWITH_FFMPEG=OFF -DBUILD_opencv_gpu=OFF -DENABLE_SSE=OFF -DENABLE_SSE2=OFF ..\..\.. \ No newline at end of file +cmake.exe -GNinja -DWITH_FFMPEG=OFF -DBUILD_opencv_gpu=OFF -DBUILD_opencv_python=OFF -DCMAKE_TOOLCHAIN_FILE=..\..\winrt\arm.winrt.toolchain.cmake ..\..\.. -- 2.7.4