diff --git a/3rdparty/tbb/CMakeLists.txt b/3rdparty/tbb/CMakeLists.txt index 35747dfb10..b147c121ee 100644 --- a/3rdparty/tbb/CMakeLists.txt +++ b/3rdparty/tbb/CMakeLists.txt @@ -1,4 +1,4 @@ -#build TBB for Android from source +#Cross compile TBB from source project(tbb) # 4.1 update 1 - works fine @@ -117,12 +117,12 @@ list(APPEND lib_srcs "${tbb_src_dir}/src/rml/client/rml_tbb.cpp") add_definitions(-D__TBB_DYNAMIC_LOAD_ENABLED=0 #required -D__TBB_BUILD=1 #required - -D__TBB_SURVIVE_THREAD_SWITCH=0 #no cilk on Android? - -DUSE_PTHREAD #required - -DTBB_USE_GCC_BUILTINS=1 #required + -D__TBB_SURVIVE_THREAD_SWITCH=0 #no cilk support + -DUSE_PTHREAD #required for Unix + -DTBB_USE_GCC_BUILTINS=1 #required for ARM GCC -DTBB_USE_DEBUG=0 #just to be sure -DTBB_NO_LEGACY=1 #don't need backward compatibility - -DDO_ITT_NOTIFY=0 #it seems that we don't need these notifications on Android + -DDO_ITT_NOTIFY=0 #it seems that we don't need these notifications ) if(ANDROID_COMPILER_IS_CLANG) @@ -143,6 +143,7 @@ if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") set(TBB_SOURCE_FILES ${TBB_SOURCE_FILES} "${CMAKE_CURRENT_SOURCE_DIR}/arm_linux_stub.cpp") endif() set(TBB_SOURCE_FILES ${TBB_SOURCE_FILES} "${CMAKE_CURRENT_SOURCE_DIR}/android_additional.h") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include \"${CMAKE_CURRENT_SOURCE_DIR}/android_additional.h\"") endif() set(TBB_SOURCE_FILES ${TBB_SOURCE_FILES} "${CMAKE_CURRENT_SOURCE_DIR}/${tbb_version_file}") @@ -153,10 +154,6 @@ target_link_libraries(tbb c m dl) ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef -Wmissing-declarations) string(REPLACE "-Werror=non-virtual-dtor" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -if(UNIX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include \"${CMAKE_CURRENT_SOURCE_DIR}/android_additional.h\"") -endif() - set_target_properties(tbb PROPERTIES OUTPUT_NAME tbb DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}" diff --git a/3rdparty/tbb/arm_linux_stub.cpp b/3rdparty/tbb/arm_linux_stub.cpp index 6026bbe11e..39451d8cbb 100644 --- a/3rdparty/tbb/arm_linux_stub.cpp +++ b/3rdparty/tbb/arm_linux_stub.cpp @@ -7,4 +7,4 @@ void affinity_helper::protect_affinity_mask() {} affinity_helper::~affinity_helper() {} } -} \ No newline at end of file +} diff --git a/modules/highgui/perf/perf_input.cpp b/modules/highgui/perf/perf_input.cpp index 2c077e847d..0c1e8e0a73 100644 --- a/modules/highgui/perf/perf_input.cpp +++ b/modules/highgui/perf/perf_input.cpp @@ -8,6 +8,7 @@ using namespace perf; using std::tr1::make_tuple; using std::tr1::get; + typedef perf::TestBaseWithParam VideoCapture_Reading; PERF_TEST_P(VideoCapture_Reading, ReadFile, testing::Values( "highgui/video/big_buck_bunny.avi", @@ -26,4 +27,4 @@ PERF_TEST_P(VideoCapture_Reading, ReadFile, testing::Values( "highgui/video/big_ SANITY_CHECK(dummy); } -#endif // BUILD_WITH_VIDEO_INPUT_SUPPORT +#endif // BUILD_WITH_VIDEO_INPUT_SUPPORT \ No newline at end of file diff --git a/modules/highgui/perf/perf_output.cpp b/modules/highgui/perf/perf_output.cpp index bf17cd4fef..6428bb4f03 100644 --- a/modules/highgui/perf/perf_output.cpp +++ b/modules/highgui/perf/perf_output.cpp @@ -31,5 +31,4 @@ PERF_TEST_P(VideoWriter_Writing, WriteFrame, SANITY_CHECK(dummy); } -#endif // BUILD_WITH_VIDEO_OUTPUT_SUPPORT - +#endif // BUILD_WITH_VIDEO_OUTPUT_SUPPORT \ No newline at end of file diff --git a/platforms/linux/arm-gnueabi-softfp.toolchain.cmake b/platforms/linux/arm-gnueabi-softfp.toolchain.cmake deleted file mode 100644 index 93738bedfa..0000000000 --- a/platforms/linux/arm-gnueabi-softfp.toolchain.cmake +++ /dev/null @@ -1,53 +0,0 @@ -set(CMAKE_SYSTEM_NAME Linux) -set(CMAKE_SYSTEM_VERSION 1) -set(CMAKE_SYSTEM_PROCESSOR arm) - -if (CARMA) - set(GCC_COMPILER_VERSION "4.5" CACHE STRING "GCC Compiler version") -else() - set(GCC_COMPILER_VERSION "4.6" CACHE STRING "GCC Compiler version") -endif() - -set(CMAKE_C_COMPILER arm-linux-gnueabi-gcc-${GCC_COMPILER_VERSION}) -set(CMAKE_CXX_COMPILER arm-linux-gnueabi-g++-${GCC_COMPILER_VERSION}) - -set(CMAKE_CXX_FLAGS "" CACHE STRING "c++ flags") -set(CMAKE_C_FLAGS "" CACHE STRING "c flags") -set(CMAKE_SHARED_LINKER_FLAGS "" CACHE STRING "shared linker flags") -set(CMAKE_MODULE_LINKER_FLAGS "" CACHE STRING "module linker flags") -set(CMAKE_EXE_LINKER_FLAGS "-Wl,-z,nocopyreloc" CACHE STRING "executable linker flags") - -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mthumb -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mthumb -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi") - -set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now ${CMAKE_SHARED_LINKER_FLAGS}") -set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now ${CMAKE_MODULE_LINKER_FLAGS}") -set(CMAKE_EXE_LINKER_FLAGS "-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now ${CMAKE_EXE_LINKER_FLAGS}") - -if(USE_NEON) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=neon") -elseif(USE_VFPV3) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=vfpv3") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=vfpv3") -else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=vfpv3-d16") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=vfpv3-d16") -endif() - -# can be any other plases -set(ARM_LINUX_SYSROOT /usr/arm-linux-gnueabi CACHE PATH "ARM cross compilation system root") - -set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${ARM_LINUX_SYSROOT}) - -if(EXISTS ${CUDA_TOOLKIT_ROOT_DIR}) - set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${CUDA_TOOLKIT_ROOT_DIR}) -endif() - -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) - -if (CARMA) - add_definitions(-DCARMA) -endif() diff --git a/platforms/linux/arm-gnueabi-hardfp.toolchain.cmake b/platforms/linux/arm-gnueabi.toolchain.cmake similarity index 57% rename from platforms/linux/arm-gnueabi-hardfp.toolchain.cmake rename to platforms/linux/arm-gnueabi.toolchain.cmake index 823ab3f503..caa81456db 100644 --- a/platforms/linux/arm-gnueabi-hardfp.toolchain.cmake +++ b/platforms/linux/arm-gnueabi.toolchain.cmake @@ -8,8 +8,15 @@ else() set(GCC_COMPILER_VERSION "4.6" CACHE STRING "GCC Compiler version") endif() -set(CMAKE_C_COMPILER arm-linux-gnueabi-gcc-${GCC_COMPILER_VERSION}) -set(CMAKE_CXX_COMPILER arm-linux-gnueabi-g++-${GCC_COMPILER_VERSION}) +set(FLOAT_ABI_SUFFIX "") + +if (NOT SOFTFP) + set(FLOAT_ABI_SUFFIX "hf") +endif() + +set(CMAKE_C_COMPILER arm-linux-gnueabi${FLOAT_ABI_SUFFIX}-gcc-${GCC_COMPILER_VERSION}) +set(CMAKE_CXX_COMPILER arm-linux-gnueabi${FLOAT_ABI_SUFFIX}-g++-${GCC_COMPILER_VERSION}) +set(ARM_LINUX_SYSROOT /usr/arm-linux-gnueabi${FLOAT_ABI_SUFFIX} CACHE PATH "ARM cross compilation system root") set(CMAKE_CXX_FLAGS "" CACHE STRING "c++ flags") set(CMAKE_C_FLAGS "" CACHE STRING "c flags") @@ -35,15 +42,13 @@ else() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=vfpv3-d16") endif() -# can be any other plases -set(ARM_LINUX_SYSROOT /usr/arm-linux-gnueabihf CACHE PATH "ARM cross compilation system root") - set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${ARM_LINUX_SYSROOT}) if(EXISTS ${CUDA_TOOLKIT_ROOT_DIR}) set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${CUDA_TOOLKIT_ROOT_DIR}) endif() +set( CMAKE_SKIP_RPATH TRUE CACHE BOOL "If set, runtime paths are not added when using shared libraries." ) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) @@ -51,3 +56,45 @@ set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) if (CARMA) add_definitions(-DCARMA) endif() + +# macro to find programs on the host OS +macro( find_host_program ) + set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER ) + set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER ) + set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER ) + if( CMAKE_HOST_WIN32 ) + SET( WIN32 1 ) + SET( UNIX ) + elseif( CMAKE_HOST_APPLE ) + SET( APPLE 1 ) + SET( UNIX ) + endif() + find_program( ${ARGN} ) + SET( WIN32 ) + SET( APPLE ) + SET( UNIX 1 ) + set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY ) + set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) + set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) +endmacro() + +# macro to find packages on the host OS +macro( find_host_package ) + set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER ) + set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER ) + set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER ) + if( CMAKE_HOST_WIN32 ) + SET( WIN32 1 ) + SET( UNIX ) + elseif( CMAKE_HOST_APPLE ) + SET( APPLE 1 ) + SET( UNIX ) + endif() + find_package( ${ARGN} ) + SET( WIN32 ) + SET( APPLE ) + SET( UNIX 1 ) + set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY ) + set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) + set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) +endmacro() diff --git a/platforms/linux/scripts/cmake_arm_gnueabi_hardfp.sh b/platforms/linux/scripts/cmake_arm_gnueabi_hardfp.sh index 9d2732852b..f8df7859c3 100755 --- a/platforms/linux/scripts/cmake_arm_gnueabi_hardfp.sh +++ b/platforms/linux/scripts/cmake_arm_gnueabi_hardfp.sh @@ -4,5 +4,5 @@ cd `dirname $0`/.. mkdir -p build_hardfp cd build_hardfp -cmake -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -DCMAKE_TOOLCHAIN_FILE=../arm-gnueabi-hardfp.toolchain.cmake $@ ../../.. +cmake -DCMAKE_TOOLCHAIN_FILE=../arm-gnueabi.toolchain.cmake $@ ../../.. diff --git a/platforms/linux/scripts/cmake_arm_gnueabi_softfp.sh b/platforms/linux/scripts/cmake_arm_gnueabi_softfp.sh index 52ff6d22cf..f4210fa829 100755 --- a/platforms/linux/scripts/cmake_arm_gnueabi_softfp.sh +++ b/platforms/linux/scripts/cmake_arm_gnueabi_softfp.sh @@ -4,5 +4,5 @@ cd `dirname $0`/.. mkdir -p build_softfp cd build_softfp -cmake -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -DCMAKE_TOOLCHAIN_FILE=../arm-gnueabi-softfp.toolchain.cmake $@ ../../.. +cmake -DSOFTFP=ON -DCMAKE_TOOLCHAIN_FILE=../arm-gnueabi.toolchain.cmake $@ ../../.. diff --git a/platforms/linux/scripts/cmake_carma.sh b/platforms/linux/scripts/cmake_carma.sh index e1fba960ea..1c8db98046 100755 --- a/platforms/linux/scripts/cmake_carma.sh +++ b/platforms/linux/scripts/cmake_carma.sh @@ -1,17 +1,8 @@ #!/bin/sh -# -# Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. -# -# NVIDIA Corporation and its licensors retain all intellectual property -# and proprietary rights in and to this software, related documentation -# and any modifications thereto. Any use, reproduction, disclosure or -# distribution of this software and related documentation without an express -# license agreement from NVIDIA Corporation is strictly prohibited. -# mkdir -p build_carma cd build_carma -cmake -DCARMA=ON -DWITH_TBB=ON -DBUILD_TBB=ON -DUSE_NEON=ON -DCUDA_TOOLKIT_ROOT_DIR=/usr/arm-linux-gnueabi/cuda/ \ +cmake -DSOFTFP=ON -DCARMA=ON -DWITH_TBB=ON -DBUILD_TBB=ON -DUSE_NEON=ON -DCUDA_TOOLKIT_ROOT_DIR=/usr/arm-linux-gnueabi/cuda/ \ -DCUDA_ARCH_BIN="2.1(2.0)" -DCUDA_ARCH_PTX="" -DCMAKE_SKIP_RPATH=ON -DWITH_CUDA=ON -DWITH_CUBLAS=ON \ --DCMAKE_TOOLCHAIN_FILE=../arm-gnueabi-softfp.toolchain.cmake $@ ../../.. +-DCMAKE_TOOLCHAIN_FILE=../arm-gnueabi.toolchain.cmake $@ ../../..