xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkisp_demo/CMakeLists.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1if(NOT CMAKE_BUILD_TYPE)
2    set(CMAKE_BUILD_TYPE Release CACHE STRING
3        "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel."
4        FORCE)
5endif()
6
7cmake_minimum_required(VERSION 2.8...3.22)
8
9PROJECT(rkisp_demo)
10
11if(POLICY CMP0015)
12    cmake_policy(SET CMP0015 NEW)
13endif()
14
15list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
16
17include(BuildOptions)
18include(CompileOptions)
19include(GNUInstallDirs)
20
21find_package(librga QUIET)
22if (librga_FOUND)
23    add_compile_options(${LIBRGA_CFLAGS})
24    add_compile_options(-DISPDEMO_ENABLE_RGA=1)
25endif()
26
27if (RKAIQ_ENABLE_LIBDRM)
28find_package(libdrm QUIET)
29endif()
30if (libdrm_FOUND)
31    add_compile_options(${LIBDRM_CFLAGS})
32    add_compile_options(-DISPDEMO_ENABLE_DRM=1)
33else()
34    if (TOOLCHAIN_SYSROOT STREQUAL "libc")
35        # use the local drm library in demo dir
36        if (ARCH STREQUAL "aarch64")
37            set(LOCAL_DRM_LIB_DIR ${PROJECT_SOURCE_DIR}/demo/libs/arm64/)
38        elseif (ARCH STREQUAL "arm")
39            set(LOCAL_DRM_LIB_DIR ${PROJECT_SOURCE_DIR}/demo/libs/arm32/)
40        endif()
41
42        SET(LOCAL_DRM_LIB_FOUND true)
43        SET(LOCAL_DRM_LIB drm)
44        add_compile_options(-DISPDEMO_ENABLE_DRM=1)
45    endif()
46endif()
47
48set_property(GLOBAL PROPERTY USE_FOLDERS ON)
49set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets")
50
51set(ADD_RK_AIQ true)
52option(ENABLE_IIO_API "Enable IIO API for EIS algorithm" OFF)
53
54set(RK_AIQ_SOURCE_DIR ${PROJECT_SOURCE_DIR}/../rk_aiq)
55message("rkaiq src path" ${RK_AIQ_SOURCE_DIR})
56
57if(ADD_RK_AIQ)
58    add_compile_options(-Os)
59    add_compile_options(-DADD_RK_AIQ)
60    add_compile_options(-fstack-protector-strong -D_FORTIFY_SOURCE=2)
61    set(RK_AIQ_INSTALLED_DIR "${RK_AIQ_SOURCE_DIR}/build/linux/output/${ARCH}/installed" CACHE STRING "AIQ library installed dir")
62    set(RK_AIQ_LIB_DIR ${RK_AIQ_INSTALLED_DIR}/lib)
63    message("rkaiq lib path" ${RK_AIQ_LIB_DIR})
64    set(RK_AIQ_INCLUDE_DIR
65        ${RK_AIQ_INSTALLED_DIR}/include/
66        ${RK_AIQ_INSTALLED_DIR}/include/rkaiq/
67        ${RK_AIQ_INSTALLED_DIR}/include/rkaiq/uAPI2
68        ${RK_AIQ_INSTALLED_DIR}/include/rkaiq/xcore/
69        ${RK_AIQ_INSTALLED_DIR}/include/rkaiq/algos/
70        ${RK_AIQ_INSTALLED_DIR}/include/rkaiq/common/
71        ${RK_AIQ_INSTALLED_DIR}/include/rkaiq/iq_parser/
72        ${RK_AIQ_INSTALLED_DIR}/include/rkaiq/iq_parser_v2/
73        )
74    set(RK_AIQ_LIB rkaiq)
75endif()
76
77if(RK_AIQ_IS_SUBDIR)
78get_target_property(RK_AIQ_HEADER_DIR rkaiq INTERFACE_INCLUDE_DIRECTORIES)
79message("RK_AIQ_HEADER_DIR ${RK_AIQ_HEADER_DIR}")
80endif()
81
82if (ENABLE_IIO_API)
83    set(IIO_LIB_DIR ${PROJECT_SOURCE_DIR}/demo/iio/lib)
84    set(IIO_LIBS easyiio iio serialport xml2 )
85endif()
86
87#set (ENABLE_SMARTIR_API true)
88if (ENABLE_SMARTIR_API)
89	set(SMARTIR_DIR ${PROJECT_SOURCE_DIR}/../smart_ir)
90	set(SMARTIR_INCLUDE_DIR ${SMARTIR_DIR}/include)
91	set(SMARTIR_INSTALLED_LIB_DIR ${SMARTIR_DIR}/build/linux/output/${ARCH}/installed/lib)
92	set(SMARTIR_LIB smartIr)
93    add_compile_options(-DSAMPLE_SMART_IR)
94endif()
95
96# set(ENABLE_ISPFEC_API true)
97if (ENABLE_ISPFEC_API)
98	set(ISPFEC_INSTALLED_DIR ${PROJECT_SOURCE_DIR}/../IspFec/build/linux/output/${ARCH}/installed/)
99	set(ISPFEC_INCLUDE_DIR ${ISPFEC_INSTALLED_DIR}/include/)
100	set(ISPFEC_LIB_DIR ${ISPFEC_INSTALLED_DIR}/lib/)
101	set(ISPFEC_LIB IspFec)
102	add_compile_options(-DISPFEC_API)
103endif()
104
105include_directories(
106    deps/include
107    demo
108    demo/include
109    demo/include/rga
110    demo/include/libdrm
111    demo/drmDsp
112    demo/iio/include
113    ${RK_AIQ_INCLUDE_DIR}
114    demo/sample/
115	${SMARTIR_INCLUDE_DIR}
116    ${ISPFEC_INCLUDE_DIR}
117    ${RK_AIQ_HEADER_DIR}
118    )
119
120if (libdrm_FOUND)
121    aux_source_directory(demo DIR_SRCS)
122    aux_source_directory(demo/drmDsp DRMDSP_DIR_SRCS)
123    aux_source_directory(demo/sample SAMPLE_DIR_SRCS)
124elseif (LOCAL_DRM_LIB_FOUND)
125    set (DIR_SRCS demo/rkisp_demo.cpp demo/drmDsp.c)
126    aux_source_directory(demo/drmDsp DRMDSP_DIR_SRCS)
127    aux_source_directory(demo/sample SAMPLE_DIR_SRCS)
128else()
129    set (DIR_SRCS demo/rkisp_demo.cpp)
130    aux_source_directory(demo/sample SAMPLE_DIR_SRCS)
131endif()
132
133if (ENABLE_IIO_API)
134    AUX_SOURCE_DIRECTORY(demo/iio/demo IIO_DIR_SRCS)
135endif()
136list(APPEND DIR_SRCS ${DRMDSP_DIR_SRCS} ${IIO_DIR_SRCS} ${SAMPLE_DIR_SRCS})
137
138AUX_SOURCE_DIRECTORY(demo/ae_algo_demo AEDEMO_DIR_SRCS)
139list(APPEND DIR_SRCS ${AEDEMO_DIR_SRCS})
140
141#AUX_SOURCE_DIRECTORY(demo/awb_algo_demo AWBDEMO_DIR_SRCS)
142#list(APPEND DIR_SRCS ${AWBDEMO_DIR_SRCS})
143if (${ISP_HW_VERSION} STREQUAL "-DISP_HW_V32")
144    set(AWBDEMO_DIR_SRCS demo/awb_algo_demo/third_party_awbV32_algo.cpp)
145else()
146    set(AWBDEMO_DIR_SRCS demo/awb_algo_demo/third_party_awb_algo.cpp)
147endif()
148list(APPEND DIR_SRCS ${AWBDEMO_DIR_SRCS})
149
150
151AUX_SOURCE_DIRECTORY(demo/af_algo_demo AFDEMO_DIR_SRCS)
152list(APPEND DIR_SRCS ${AFDEMO_DIR_SRCS})
153
154if(WIN32)
155    SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/exe)
156    SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/all_lib/)
157    SET(CMAKE_LIBRARY_PATH ${LIBRARY_OUTPUT_PATH}/${CMAKE_BUILD_TYPE})
158else()
159    SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/exe/${CMAKE_BUILD_TYPE})
160    SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/all_lib/${CMAKE_BUILD_TYPE})
161    SET(CMAKE_LIBRARY_PATH ${LIBRARY_OUTPUT_PATH})
162endif()
163
164#set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
165#set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
166message(${CMAKE_LIBRARY_PATH})
167message(${LIBRARY_OUTPUT_PATH})
168
169add_definitions(-D_CRT_SECURE_NO_WARNINGS)
170
171if (libdrm_FOUND)
172    link_directories("${LIBRARY_OUTPUT_PATH}" "${RK_AIQ_LIB_DIR}" "${IIO_LIB_DIR}"
173        "${PROJECT_SOURCE_DIR}/deps/lib" "${SMARTIR_INSTALLED_LIB_DIR}" "${ISPFEC_LIB_DIR}")
174else()
175    link_directories("${LIBRARY_OUTPUT_PATH}" "${RK_AIQ_LIB_DIR}" "${IIO_LIB_DIR}"
176        "${SMARTIR_INSTALLED_LIB_DIR}" "${LOCAL_DRM_LIB_DIR}"  "${ISPFEC_LIB_DIR}")
177endif()
178add_executable(rkisp_demo ${DIR_SRCS})
179if (libdrm_FOUND)
180    target_link_libraries(rkisp_demo rga drm ${RK_AIQ_LIB} ${IIO_LIBS}
181        ${SMARTIR_LIB} ${ISPFEC_LIB} pthread)
182else()
183    target_link_libraries(rkisp_demo ${RK_AIQ_LIB} ${IIO_LIBS} ${SMARTIR_LIB} ${LOCAL_DRM_LIB} ${ISPFEC_LIB} pthread)
184endif()
185
186if (libdrm_FOUND)
187    target_link_libraries(rkisp_demo
188        libdrm::libdrm
189        )
190endif()
191
192if (librga_FOUND)
193    target_link_libraries(rkisp_demo
194        librga::librga
195        )
196endif()
197