Add customised cpu optimization build options
[platform/upstream/opencv.git] / 3rdparty / carotene / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8.11 FATAL_ERROR)
2
3 project(Carotene)
4
5 set(CAROTENE_NS "carotene" CACHE STRING "Namespace for Carotene definitions")
6
7 set(CAROTENE_INCLUDE_DIR include)
8 set(CAROTENE_SOURCE_DIR src)
9
10 file(GLOB_RECURSE carotene_headers RELATIVE "${CMAKE_CURRENT_LIST_DIR}" "${CAROTENE_INCLUDE_DIR}/*.hpp")
11 file(GLOB_RECURSE carotene_sources RELATIVE "${CMAKE_CURRENT_LIST_DIR}" "${CAROTENE_SOURCE_DIR}/*.cpp"
12                                                                         "${CAROTENE_SOURCE_DIR}/*.hpp")
13
14 include_directories(${CAROTENE_INCLUDE_DIR})
15
16 if(CMAKE_COMPILER_IS_GNUCC)
17     set(CMAKE_CXX_FLAGS "-fvisibility=hidden ${CMAKE_CXX_FLAGS}")
18
19     # allow more inlines - these parameters improve performance for:
20     # - matchTemplate about 5-10%
21     # - goodFeaturesToTrack 10-20%
22     # - cornerHarris 30% for some cases
23
24     set_source_files_properties(${carotene_sources} COMPILE_FLAGS "--param ipcp-unit-growth=100000 --param inline-unit-growth=100000 --param large-stack-frame-growth=5000")
25 endif()
26
27 add_library(carotene_objs OBJECT
28   ${carotene_headers}
29   ${carotene_sources}
30 )
31
32 if(NOT CAROTENE_NS STREQUAL "carotene")
33     target_compile_definitions(carotene_objs PUBLIC "-DCAROTENE_NS=${CAROTENE_NS}")
34 endif()
35
36 if(WITH_NEON)
37     target_compile_definitions(carotene_objs PRIVATE "-DWITH_NEON")
38 endif()
39
40 add_library(carotene STATIC EXCLUDE_FROM_ALL "$<TARGET_OBJECTS:carotene_objs>")