xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/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
7if(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
8    add_definitions(-DBUILD_TYPE_DEBUG)
9endif()
10
11cmake_minimum_required(VERSION 2.8...3.22)
12
13PROJECT(rk_aiq)
14
15list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
16
17set(C_LIBRARY_NAME "glibc" CACHE INTERNAL "")
18include(CheckGlibc)
19CHECK_GLIBC_VERSION()
20
21include(BuildOptions)
22include(CompileOptions)
23include(GNUInstallDirs)
24
25configure_file(
26    "${PROJECT_SOURCE_DIR}/cmake/rkaiq_config.h.in"
27    "${PROJECT_BINARY_DIR}/config.h"
28    )
29
30find_package(libdl QUIET)
31if (libdl_FOUND)
32    add_compile_options(${LIBDL_CFLAGS})
33endif()
34
35if (RKAIQ_USE_RAWSTREAM_LIB)
36    message("USE_RAWSTREAM_LIB")
37    add_compile_options(-DUSE_RAWSTREAM_LIB)
38endif()
39
40find_package(librga QUIET)
41if (librga_FOUND)
42    add_compile_options(${LIBRGA_CFLAGS})
43endif()
44
45if (RKAIQ_ENABLE_LIBDRM)
46find_package(libdrm QUIET)
47endif()
48if (libdrm_FOUND)
49    add_compile_options(${LIBDRM_CFLAGS})
50endif()
51
52add_compile_options(${ISP_HW_VERSION})
53
54set_property(GLOBAL PROPERTY USE_FOLDERS ON)
55set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets")
56
57if(NOT RKAIQ_ENABLE_SIMULATOR)
58    set(GENMESH_ONLINE true)
59    if("${ARCH}" STREQUAL "arm")
60        set(MOTION_DETECT true)
61    endif()
62endif()
63
64include_directories(
65    xcore
66    xcore/base
67    aiq_core
68    algos
69    algos_camgroup
70    common
71    common/linux
72    hwi
73    hwi/isp20
74    ipc
75    iq_parser
76    iq_parser_v2
77    uAPI
78    uAPI/include
79    uAPI2
80    ipc_server
81    ./
82    ./common/
83    include
84    include/common
85    include/common/mediactl
86    include/iq_parser
87    include/iq_parser_v2
88    include/uAPI
89    include/uAPI2
90    include/xcore
91    include/xcore/base
92    include/algos
93    include/algos/a3dlut
94    include/algos/ablc
95    include/algos/accm
96    include/algos/acgc
97    include/algos/acp
98    include/algos/adebayer
99    include/algos/adehaze
100    include/algos/adpcc
101    include/algos/ae
102    include/algos/afd
103    include/algos/af
104    include/algos/afec
105    include/algos/agamma
106    include/algos/adegamma
107    include/algos/agic
108    include/algos/amerge
109    include/algos/atmo
110    include/algos/adrc
111    include/algos/aie
112    include/algos/aldch
113    include/algos/alsc
114    include/algos/anr
115    include/algos/anr/tnr_md
116    include/algos/aorb
117	include/algos/acsm
118    include/algos/asd
119    include/algos/asharp
120    include/algos/awb
121    include/algos/awdr
122    include/algos/asharp3
123    include/algos/aynr2
124    include/algos/acnr
125    include/algos/aeis
126    include/common/gen_mesh
127    include/ipc_server
128    include/amd
129    include/algos/arawnr
130    include/algos/aynr
131    include/algos/auvnr
132    include/algos/amfnr
133    include/algos/again
134    include/algos/aynr3
135    include/algos/acnr2
136    include/algos/asharp4
137    include/algos/abayer2dnr2
138    include/algos/abayertnr2
139    include/algos/again2
140    include/algos/acac
141    include/algos_camgroup/ae
142    include/algos_camgroup/awb
143    include/algos/abayer2dnrV23
144    include/algos/abayertnrV23
145    include/algos/aynrV22
146    include/algos/acnrV30
147    include/algos/asharpV33
148    include/algos/ablcV32
149    ${PROJECT_BINARY_DIR}
150    )
151
152set(ALGO_HANDLE_SRC
153    aiq_core/algo_handlers/RkAiqAwbHandle.cpp
154    )
155
156if (RKAIQ_HAVE_YNR_V2)
157    add_compile_options(-DRKAIQ_HAVE_YNR_V2=1)
158    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAynrV2Handle.cpp)
159endif()
160
161if (RKAIQ_HAVE_AWB_V20)
162    add_compile_options(-DRKAIQ_HAVE_AWB_V20=1)
163    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAwbHandle.cpp)
164    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqCustomAwbHandle.cpp)
165endif()
166
167if (RKAIQ_HAVE_AWB_V21)
168    add_compile_options(-DRKAIQ_HAVE_AWB_V21=1)
169    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAwbV21Handle.cpp)
170    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqCustomAwbHandle.cpp)
171endif()
172
173if (RKAIQ_HAVE_AWB_V32)
174    add_compile_options(-DRKAIQ_HAVE_AWB_V32=1)
175    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAwbV32Handle.cpp)
176    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqCustomAwbHandle.cpp)
177    if (RKAIQ_HAVE_AWB_V32LT)
178        add_compile_options(-DRKAIQ_HAVE_AWB_V32LT=1)
179    endif()
180endif()
181
182if (RKAIQ_HAVE_GIC_V1 OR RKAIQ_HAVE_GIC_V2)
183    if (RKAIQ_HAVE_GIC_V1)
184        add_compile_options(-DRKAIQ_HAVE_GIC_V1=1)
185    endif()
186    if (RKAIQ_HAVE_GIC_V2)
187        add_compile_options(-DRKAIQ_HAVE_GIC_V2=1)
188    endif()
189    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAgicHandle.cpp)
190endif()
191
192if (RKAIQ_HAVE_ORB_V1)
193    add_compile_options(-DRKAIQ_HAVE_ORB_V1=1)
194    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAorbHandle.cpp)
195endif()
196
197if (RKAIQ_HAVE_EIS_V1)
198    add_compile_options(-DRKAIQ_HAVE_EIS_V1=1)
199    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAeisHandle.cpp)
200endif()
201
202if (RKAIQ_HAVE_CAC_V03)
203    add_compile_options(-DRKAIQ_HAVE_CAC_V03=1)
204    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAcacV3Handle.cpp)
205endif()
206
207if (RKAIQ_HAVE_CAC_V10)
208    add_compile_options(-DRKAIQ_HAVE_CAC_V10=1)
209    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAcacHandle.cpp)
210endif()
211
212if (RKAIQ_HAVE_CAC_V11)
213    add_compile_options(-DRKAIQ_HAVE_CAC_V11=1)
214    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAcacV11Handle.cpp)
215endif()
216
217if (RKAIQ_HAVE_YNR_V1)
218    add_compile_options(-DRKAIQ_HAVE_YNR_V1=1)
219    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAynrHandle.cpp)
220endif()
221
222if (RKAIQ_HAVE_YNR_V3)
223    add_compile_options(-DRKAIQ_HAVE_YNR_V3=1)
224    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAynrV3Handle.cpp)
225endif()
226
227if (RKAIQ_HAVE_YNR_V22)
228    add_compile_options(-DRKAIQ_HAVE_YNR_V22=1)
229    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAynrV22Handle.cpp)
230endif()
231
232if (RKAIQ_HAVE_UVNR_V1)
233    add_compile_options(-DRKAIQ_HAVE_UVNR_V1=1)
234    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAcnrHandle.cpp)
235endif()
236
237if (RKAIQ_HAVE_CNR_V1)
238    add_compile_options(-DRKAIQ_HAVE_CNR_V1=1)
239    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAcnrV1Handle.cpp)
240endif()
241
242if (RKAIQ_HAVE_CNR_V2)
243    add_compile_options(-DRKAIQ_HAVE_CNR_V2=1)
244    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAcnrV2Handle.cpp)
245endif()
246
247if (RKAIQ_HAVE_CNR_V30)
248    add_compile_options(-DRKAIQ_HAVE_CNR_V30=1)
249    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAcnrV30Handle.cpp)
250endif()
251
252if (RKAIQ_HAVE_CNR_V30_LITE)
253    add_compile_options(-DRKAIQ_HAVE_CNR_V30_LITE=1)
254    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAcnrV30Handle.cpp)
255endif()
256
257if (RKAIQ_HAVE_SHARP_V1)
258    add_compile_options(-DRKAIQ_HAVE_SHARP_V1=1)
259    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAsharpHandle.cpp)
260endif()
261
262if (RKAIQ_HAVE_SHARP_V3)
263    add_compile_options(-DRKAIQ_HAVE_SHARP_V3=1)
264    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAsharpV3Handle.cpp)
265endif()
266
267if (RKAIQ_HAVE_SHARP_V4)
268    add_compile_options(-DRKAIQ_HAVE_SHARP_V4=1)
269    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAsharpV4Handle.cpp)
270endif()
271
272if (RKAIQ_HAVE_SHARP_V33)
273    add_compile_options(-DRKAIQ_HAVE_SHARP_V33=1)
274    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAsharpV33Handle.cpp)
275endif()
276
277if (RKAIQ_HAVE_SHARP_V33_LITE)
278    add_compile_options(-DRKAIQ_HAVE_SHARP_V33_LITE=1)
279    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAsharpV33Handle.cpp)
280endif()
281
282if (RKAIQ_HAVE_MFNR_V1)
283    add_compile_options(-DRKAIQ_HAVE_MFNR_V1=1)
284    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAmfnrHandle.cpp)
285endif()
286
287if (RKAIQ_HAVE_BAYERNR_V1)
288    add_compile_options(-DRKAIQ_HAVE_BAYERNR_V1=1)
289    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqArawnrHandle.cpp)
290endif()
291
292if (RKAIQ_HAVE_BAYERNR_V2)
293    add_compile_options(-DRKAIQ_HAVE_BAYERNR_V2=1)
294    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqArawnrV2Handle.cpp)
295endif()
296
297if (RKAIQ_HAVE_BAYER2DNR_V2)
298    add_compile_options(-DRKAIQ_HAVE_BAYER2DNR_V2=1)
299    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAbayer2dnrV2Handle.cpp)
300endif()
301
302if (RKAIQ_HAVE_BAYER2DNR_V23)
303    add_compile_options(-DRKAIQ_HAVE_BAYER2DNR_V23=1)
304    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAbayer2dnrV23Handle.cpp)
305endif()
306
307if (RKAIQ_HAVE_BAYERTNR_V2)
308    add_compile_options(-DRKAIQ_HAVE_BAYERTNR_V2=1)
309    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAbayertnrV2Handle.cpp)
310endif()
311
312if (RKAIQ_HAVE_BAYERTNR_V23)
313    add_compile_options(-DRKAIQ_HAVE_BAYERTNR_V23=1)
314    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAbayertnrV23Handle.cpp)
315endif()
316
317if (RKAIQ_HAVE_BAYERTNR_V23_LITE)
318    add_compile_options(-DRKAIQ_HAVE_BAYERTNR_V23_LITE=1)
319    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAbayertnrV23Handle.cpp)
320endif()
321
322if (RKAIQ_HAVE_GAIN_V1)
323    add_compile_options(-DRKAIQ_HAVE_GAIN_V1=1)
324    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAgainHandle.cpp)
325endif()
326
327if (RKAIQ_HAVE_GAIN_V2)
328    add_compile_options(-DRKAIQ_HAVE_GAIN_V2=1)
329    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAgainV2Handle.cpp)
330endif()
331
332if (RKAIQ_HAVE_BLC_V1)
333    add_compile_options(-DRKAIQ_HAVE_BLC_V1=1)
334    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAblcHandle.cpp)
335endif()
336
337if (RKAIQ_HAVE_BLC_V32)
338    add_compile_options(-DRKAIQ_HAVE_BLC_V32=1)
339    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAblcV32Handle.cpp)
340endif()
341
342if (RKAIQ_HAVE_ANR_V1)
343    add_compile_options(-DRKAIQ_HAVE_ANR_V1=1)
344    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAnrHandle.cpp)
345endif()
346
347if (RKAIQ_HAVE_AMD_V1)
348    add_compile_options(-DRKAIQ_HAVE_AMD_V1=1)
349    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAmdHandle.cpp)
350endif()
351
352if (RKAIQ_HAVE_AF_V20 OR RKAIQ_HAVE_AF_V30 OR RKAIQ_HAVE_AF_V31 OR RKAIQ_HAVE_AF_V32_LITE)
353    add_compile_options(-DRKAIQ_HAVE_AF=1)
354    if (RKAIQ_HAVE_AF_V20)
355        add_compile_options(-DRKAIQ_HAVE_AF_V20=1)
356    endif()
357    if (RKAIQ_HAVE_AF_V30)
358        add_compile_options(-DRKAIQ_HAVE_AF_V30=1)
359    endif()
360    if (RKAIQ_HAVE_AF_V31)
361        add_compile_options(-DRKAIQ_HAVE_AF_V31=1)
362    endif()
363    if (RKAIQ_HAVE_AF_V32_LITE)
364        add_compile_options(-DRKAIQ_HAVE_AF_V32_LITE=1)
365    endif()
366    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAfHandle.cpp)
367endif()
368
369if (RKAIQ_ONLY_AF_STATS_V20 OR RKAIQ_ONLY_AF_STATS_V30 OR RKAIQ_ONLY_AF_STATS_V31 OR RKAIQ_ONLY_AF_STATS_V32_LITE)
370    add_compile_options(-DRKAIQ_HAVE_AF=1)
371    if (RKAIQ_ONLY_AF_STATS_V20)
372        add_compile_options(-DRKAIQ_ONLY_AF_STATS_V20=1)
373    endif()
374    if (RKAIQ_ONLY_AF_STATS_V30)
375        add_compile_options(-DRKAIQ_ONLY_AF_STATS_V30=1)
376    endif()
377    if (RKAIQ_ONLY_AF_STATS_V31)
378        add_compile_options(-DRKAIQ_ONLY_AF_STATS_V31=1)
379    endif()
380    if (RKAIQ_ONLY_AF_STATS_V32_LITE)
381        add_compile_options(-DRKAIQ_ONLY_AF_STATS_V32_LITE=1)
382    endif()
383    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAfHandle.cpp)
384endif()
385
386if (RKAIQ_HAVE_3DLUT_V1)
387    add_compile_options(-DRKAIQ_HAVE_3DLUT_V1=1)
388    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqA3dlutHandle.cpp)
389endif()
390
391if (RKAIQ_HAVE_CCM_V1 OR RKAIQ_HAVE_CCM_V2)
392    if (RKAIQ_HAVE_CCM_V1)
393        add_compile_options(-DRKAIQ_HAVE_CCM_V1=1)
394    endif()
395    if (RKAIQ_HAVE_CCM_V2)
396        add_compile_options(-DRKAIQ_HAVE_CCM_V2=1)
397    endif()
398    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAccmHandle.cpp)
399endif()
400
401if (RKAIQ_HAVE_GAMMA_V10 OR RKAIQ_HAVE_GAMMA_V11)
402    if (RKAIQ_HAVE_GAMMA_V10)
403        add_compile_options(-DRKAIQ_HAVE_GAMMA_V10=1)
404    endif()
405    if (RKAIQ_HAVE_GAMMA_V11)
406        add_compile_options(-DRKAIQ_HAVE_GAMMA_V11=1)
407    endif()
408    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAgammaHandle.cpp)
409endif()
410
411if (RKAIQ_HAVE_MERGE_V10 OR RKAIQ_HAVE_MERGE_V11 OR RKAIQ_HAVE_MERGE_V12)
412    if (RKAIQ_HAVE_MERGE_V10)
413        add_compile_options(-DRKAIQ_HAVE_MERGE_V10=1)
414    endif()
415    if (RKAIQ_HAVE_MERGE_V11)
416        add_compile_options(-DRKAIQ_HAVE_MERGE_V11=1)
417    endif()
418    if (RKAIQ_HAVE_MERGE_V12)
419        add_compile_options(-DRKAIQ_HAVE_MERGE_V12=1)
420    endif()
421    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAmergeHandle.cpp)
422endif()
423
424if (RKAIQ_HAVE_DRC_V10 OR RKAIQ_HAVE_DRC_V11 OR RKAIQ_HAVE_DRC_V12 OR RKAIQ_HAVE_DRC_V12_LITE)
425    if (RKAIQ_HAVE_DRC_V10)
426        add_compile_options(-DRKAIQ_HAVE_DRC_V10=1)
427    endif()
428    if (RKAIQ_HAVE_DRC_V11)
429        add_compile_options(-DRKAIQ_HAVE_DRC_V11=1)
430    endif()
431    if (RKAIQ_HAVE_DRC_V12)
432        add_compile_options(-DRKAIQ_HAVE_DRC_V12=1)
433    endif()
434    if (RKAIQ_HAVE_DRC_V12_LITE)
435        add_compile_options(-DRKAIQ_HAVE_DRC_V12_LITE=1)
436    endif()
437    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAdrcHandle.cpp)
438endif()
439
440if (RKAIQ_HAVE_DEHAZE_V10 OR RKAIQ_HAVE_DEHAZE_V11 OR RKAIQ_HAVE_DEHAZE_V11_DUO OR RKAIQ_HAVE_DEHAZE_V12)
441    if (RKAIQ_HAVE_DEHAZE_V10)
442        add_compile_options(-DRKAIQ_HAVE_DEHAZE_V10=1)
443    endif()
444    if (RKAIQ_HAVE_DEHAZE_V11)
445        add_compile_options(-DRKAIQ_HAVE_DEHAZE_V11=1)
446    endif()
447    if (RKAIQ_HAVE_DEHAZE_V11_DUO)
448        add_compile_options(-DRKAIQ_HAVE_DEHAZE_V11_DUO=1)
449    endif()
450    if (RKAIQ_HAVE_DEHAZE_V12)
451        add_compile_options(-DRKAIQ_HAVE_DEHAZE_V12=1)
452    endif()
453    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAdehazeHandle.cpp)
454endif()
455
456if (RKAIQ_HAVE_DEGAMMA_V1)
457    add_compile_options(-DRKAIQ_HAVE_DEGAMMA_V1=1)
458    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAdegammaHandle.cpp)
459endif()
460
461if (RKAIQ_HAVE_TMO_V1)
462    add_compile_options(-DRKAIQ_HAVE_TMO_V1=1)
463    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAtmoHandle.cpp)
464endif()
465
466if (RKAIQ_HAVE_WDR_V1)
467    add_compile_options(-DRKAIQ_HAVE_WDR_V1=1)
468    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAwdrHandle.cpp)
469endif()
470
471if (RKAIQ_HAVE_LDCH_V10)
472    add_compile_options(-DRKAIQ_HAVE_LDCH_V10=1)
473    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAldchHandle.cpp)
474endif()
475
476if (RKAIQ_HAVE_LDCH_V21)
477    add_compile_options(-DRKAIQ_HAVE_LDCH_V21=1)
478    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAldchHandle.cpp)
479endif()
480
481if (RKAIQ_HAVE_FEC_V10)
482    add_compile_options(-DRKAIQ_HAVE_FEC_V10=1)
483    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAfecHandle.cpp)
484endif()
485
486if (RKAIQ_HAVE_CSM_V1)
487    add_compile_options(-DRKAIQ_HAVE_CSM_V1=1)
488    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAcsmHandle.cpp)
489endif()
490
491if (RKAIQ_HAVE_CGC_V1)
492    add_compile_options(-DRKAIQ_HAVE_CGC_V1=1)
493    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAcgcHandle.cpp)
494endif()
495
496if (RKAIQ_HAVE_AE_V1)
497    add_compile_options(-DRKAIQ_HAVE_AE_V1=1)
498    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAeHandle.cpp)
499    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqCustomAeHandle.cpp)
500endif()
501
502if (RKAIQ_HAVE_AFD_V1 OR RKAIQ_HAVE_AFD_V2)
503    if (RKAIQ_HAVE_AFD_V1)
504        add_compile_options(-DRKAIQ_HAVE_AFD_V1=1)
505    endif()
506    if (RKAIQ_HAVE_AFD_V2)
507        add_compile_options(-DRKAIQ_HAVE_AFD_V2=1)
508    endif()
509    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAfdHandle.cpp)
510endif()
511
512if (RKAIQ_HAVE_DEBAYER_V1 OR RKAIQ_HAVE_DEBAYER_V2 OR RKAIQ_HAVE_DEBAYER_V2_LITE)
513    if (RKAIQ_HAVE_DEBAYER_V1)
514        add_compile_options(-DRKAIQ_HAVE_DEBAYER_V1=1)
515    endif()
516    if (RKAIQ_HAVE_DEBAYER_V2)
517        add_compile_options(-DRKAIQ_HAVE_DEBAYER_V2=1)
518    endif()
519    if (RKAIQ_HAVE_DEBAYER_V2_LITE)
520        add_compile_options(-DRKAIQ_HAVE_DEBAYER_V2_LITE=1)
521    endif()
522    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAdebayerHandle.cpp)
523endif()
524
525if (RKAIQ_HAVE_LSC_V1 OR RKAIQ_HAVE_LSC_V2 OR RKAIQ_HAVE_LSC_V3)
526    if (RKAIQ_HAVE_LSC_V1)
527        add_compile_options(-DRKAIQ_HAVE_LSC_V1=1)
528    endif()
529    if (RKAIQ_HAVE_LSC_V2)
530        add_compile_options(-DRKAIQ_HAVE_LSC_V2=1)
531    endif()
532    if (RKAIQ_HAVE_LSC_V3)
533        add_compile_options(-DRKAIQ_HAVE_LSC_V3=1)
534    endif()
535    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAlscHandle.cpp)
536endif()
537
538if (RKAIQ_HAVE_DPCC_V1)
539    add_compile_options(-DRKAIQ_HAVE_DPCC_V1=1)
540    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAdpccHandle.cpp)
541endif()
542
543if (RKAIQ_HAVE_ACP_V10)
544    add_compile_options(-DRKAIQ_HAVE_ACP_V10=1)
545    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAcpHandle.cpp)
546endif()
547
548if (RKAIQ_HAVE_AIE_V10)
549    add_compile_options(-DRKAIQ_HAVE_AIE_V10=1)
550    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAieHandle.cpp)
551endif()
552
553if (RKAIQ_HAVE_ASD_V10)
554    add_compile_options(-DRKAIQ_HAVE_ASD_V10=1)
555    list(APPEND ALGO_HANDLE_SRC aiq_core/algo_handlers/RkAiqAsdHandle.cpp)
556endif()
557
558set(AIQ_CORE_SRC
559    ${ALGO_HANDLE_SRC}
560    aiq_core/RkAiqHandle.cpp
561    aiq_core/RkAiqCore.cpp
562    aiq_core/MessageBus.cpp
563    aiq_core/RkAiqAnalyzeGroupManager.cpp
564    aiq_core/RkAiqResourceTranslator.cpp
565    aiq_core/RkAiqResourceTranslatorV21.cpp
566    aiq_core/RkAiqResourceTranslatorV3x.cpp
567    aiq_core/RkAiqResourceTranslatorV32.cpp
568    RkAiqCamProfiles.cpp
569    )
570
571if (RKAIQ_ISP_VERSION STREQUAL "20")
572    list(APPEND AIQ_CORE_SRC aiq_core/RkLumaCore.cpp)
573endif()
574
575if (RKAIQ_HAVE_THUMBNAILS)
576    add_compile_options(-DRKAIQ_HAVE_THUMBNAILS)
577    set(AIQ_CORE_SRC
578        ${AIQ_CORE_SRC}
579        aiq_core/thumbnails.cpp
580        )
581endif()
582
583set(ALGO_COMMON_SRC
584    algos/interpolation.cpp
585    )
586
587if(GENMESH_ONLINE)
588    set(COMMON_SRC
589        common/mediactl/mediactl.c
590        common/gen_mesh/genMesh.cpp
591        common/code_to_pixel_format.cpp
592        common/media_buffer/media_buffer.c
593        common/media_buffer/media_buffer_pool.c
594        )
595else()
596    set(COMMON_SRC
597        common/mediactl/mediactl.c
598        )
599endif()
600
601if(RKAIQ_ENABLE_SIMULATOR)
602    set(HWI_SRC
603        hwi/CamHwBase.cpp
604        hwi/simulator/CamHwSimulator.cpp
605        )
606else()
607    set(HWI_SRC
608        hwi/CamHwBase.cpp
609        hwi/isp20/CamHwIsp20.cpp
610        hwi/isp20/Isp20Params.cpp
611        hwi/isp20/Isp20StatsBuffer.cpp
612        hwi/isp20/Isp20_module_dbg.cpp
613        hwi/isp20/Stream.cpp
614        hwi/isp20/RawStreamCapUnit.cpp
615        hwi/isp20/RawStreamProcUnit.cpp
616        hwi/isp20/PdafStreamProcUnit.cpp
617        hwi/isp20/CaptureRawData.cpp
618        hwi/isp20/CifScaleStream.cpp
619        hwi/isp21/CamHwIsp21.cpp
620        hwi/isp3x/CamHwIsp3x.cpp
621        hwi/isp32/CamHwIsp32.cpp
622        hwi/SensorHw.cpp
623        hwi/LensHw.cpp
624        hwi/FlashLight.cpp
625        hwi/image_processor.cpp
626        hwi/isp20/Isp20Evts.cpp
627        )
628endif()
629
630if (RKAIQ_HAVE_MULTIISP)
631    add_compile_options(-DRKAIQ_HAVE_MULTIISP)
632    set(HWI_SRC
633        ${HWI_SRC}
634        hwi/IspParamsSplitter.cpp
635        )
636endif()
637
638if (RKAIQ_ISP_VERSION STREQUAL "20")
639    list(APPEND HWI_SRC
640        hwi/isp20/NrStatsStream.cpp
641        hwi/isp20/TnrStatsStream.cpp
642        hwi/isp20/NrStreamProcUnit.cpp
643        hwi/isp20/FecParamStream.cpp
644        hwi/isp20/TnrStreamProcUnit.cpp
645        )
646endif()
647
648if (RKAIQ_HAVE_FAKECAM)
649    add_compile_options(-DRKAIQ_ENABLE_FAKECAM)
650    list(APPEND HWI_SRC
651        hwi/fakecamera/FakeCamHwIsp20.cpp
652        hwi/fakecamera/FakeSensorHw.cpp
653        )
654endif()
655
656if (RKAIQ_HAVE_SPSTREAM)
657    add_compile_options(-DRKAIQ_ENABLE_SPSTREAM)
658    list(APPEND HWI_SRC
659        hwi/isp20/SPStreamProcUnit.cpp
660        )
661endif()
662
663if(RKAIQ_ENABLE_PARSER_V1)
664    add_compile_options(-DRKAIQ_ENABLE_PARSER_V1)
665    set(IQ_PARSER_SRC
666        iq_parser/RkAiqCalibParser.cpp
667        iq_parser/RkAiqCalibDb.cpp
668        iq_parser/RkAiqCalibTag.cpp
669        iq_parser/tinyxml2.cpp
670        iq_parser/xmltags.cpp
671        iq_parser/RkAiqCalibApi.cpp
672        )
673    set(IQ_PARSER_V2_SRC
674        iq_parser_v2/awb_xml2json.cpp
675        iq_parser_v2/bayernr_xml2json_v1.cpp
676        iq_parser_v2/mfnr_xml2json_v1.cpp
677        iq_parser_v2/ynr_xml2json_v1.cpp
678        iq_parser_v2/uvnr_xml2json_v1.cpp
679        iq_parser_v2/sharp_xml2json_v1.cpp
680        iq_parser_v2/edgefilter_xml2json_v1.cpp
681        )
682endif()
683
684set(UAPI_SRC
685	#uAPI/rk_aiq_user_api_sysctl.cpp
686    uAPI2/rk_aiq_user_api2_sysctl.cpp
687    uAPI2/rk_aiq_user_api2_debug.cpp
688    uAPI2/rk_aiq_user_api2_helper.cpp
689    uAPI2/rk_aiq_user_api2_wrapper.cpp
690    )
691
692set(XCORE_SRC
693    xcore/xcam_common.cpp
694    xcore/xcam_log.cpp
695    xcore/xcam_thread.cpp
696    xcore/xcam_buffer.cpp
697    xcore/video_buffer.cpp
698    xcore/v4l2_buffer_proxy.cpp
699    xcore/v4l2_device.cpp
700    xcore/fake_v4l2_device.cpp
701    xcore/buffer_pool.cpp
702    xcore/poll_thread.cpp
703    xcore/smart_buffer_priv.cpp
704    )
705
706if (libdrm_FOUND)
707    set(XCORE_SRC
708        ${XCORE_SRC}
709        xcore/drm_device.cpp
710        xcore/drm_buffer.cpp
711        xcore/dma_buffer.cpp
712        xcore/dma_video_buffer.cpp
713        )
714endif()
715
716set (IPC_SERVER_SRC
717    ipc_server/socket_server.cpp
718    ipc_server/rkaiq_tool_ae.cpp
719    ipc_server/rkaiq_tool_anr.cpp
720    ipc_server/rkaiq_tool_imgproc.cpp
721    ipc_server/rkaiq_tool_sharp.cpp
722    ipc_server/rkaiq_tool_sysctl.cpp
723    ipc_server/command_process.cpp
724    ipc_server/MessageParser.cpp
725    )
726
727set (INI_READER_SRC
728    common/rkaiq_ini.c
729    )
730
731set (RK_AIQ_SRC
732    ${ALGO_COMMON_SRC}
733    ${COMMON_SRC}
734    ${HWI_SRC}
735    ${IPC_SRC}
736    ${IQ_PARSER_SRC}
737    ${IQ_PARSER_V2_SRC}
738    ${UAPI_SRC}
739    ${XCORE_SRC}
740    ${AIQ_CORE_SRC}
741    ${IPC_SERVER_SRC}
742    ${INI_READER_SRC}
743    RkAiqManager.cpp
744    )
745
746if (RKAIQ_ENABLE_CAMGROUP)
747    aux_source_directory(aiq_core/algo_camgroup_handlers ALGO_CAMGROUP_HANDLE_SRC)
748    add_compile_options(-DRKAIQ_ENABLE_CAMGROUP)
749    set (RK_AIQ_SRC
750        ${RK_AIQ_SRC}
751        RkAiqCamGroupManager.cpp
752	    aiq_core/RkAiqCamgroupHandle.cpp
753        ${ALGO_CAMGROUP_HANDLE_SRC}
754        )
755endif()
756
757set(RK_AIQ_STATIC_LIB_ARS)
758set(STATIC_LIB_PREFIX $<TARGET_FILE:)
759set(STATIC_LIB_SUFFIX >)
760
761if(GENMESH_ONLINE AND (RKAIQ_HAVE_LDCH_V10 OR RKAIQ_HAVE_LDCH_V21 OR RKAIQ_HAVE_FEC_V10))
762    set(GENMESH_LIBS genMeshLib)
763    if(ARCH STREQUAL "aarch64")
764        set(GENMESH_LIBS_DIR
765            ${PROJECT_SOURCE_DIR}/common/gen_mesh/linux/genMesh_static_64bit/
766            )
767    else()
768        set(GENMESH_LIBS_DIR
769            ${PROJECT_SOURCE_DIR}/common/gen_mesh/linux/genMesh_static_32bit/
770            )
771    endif()
772    list(APPEND RK_AIQ_STATIC_LIB_ARS ${GENMESH_LIBS_DIR}/libgenMeshLib.a)
773    add_compile_options(-DGENMESH_ONLINE)
774endif()
775
776if (RKAIQ_HAVE_AMD_V1)
777if(MOTION_DETECT)
778    set(MOTION_DETECT_LIBS rkaiq_tnr_md)
779endif()
780endif()
781
782if (RKAIQ_HAVE_PDAF)
783    add_compile_options(-DRKAIQ_HAVE_PDAF=1)
784endif()
785if (RKAIQ_HAVE_PDAF)
786    set (PDAF_LIBS rkaiq_pdaf)
787	list(APPEND RK_AIQ_STATIC_LIB_ARS
788		${STATIC_LIB_PREFIX}rkaiq_pdaf${STATIC_LIB_SUFFIX})
789endif()
790
791# set output binary path
792if(WIN32)
793    SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/exe)
794    SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/all_lib/)
795    SET(CMAKE_LIBRARY_PATH ${LIBRARY_OUTPUT_PATH}/${CMAKE_BUILD_TYPE})
796else()
797    SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/exe/${CMAKE_BUILD_TYPE})
798    SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/all_lib/${CMAKE_BUILD_TYPE})
799    SET(CMAKE_LIBRARY_PATH ${LIBRARY_OUTPUT_PATH})
800endif()
801
802#set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
803#set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
804message(${CMAKE_LIBRARY_PATH})
805message(${LIBRARY_OUTPUT_PATH})
806
807
808add_subdirectory(iq_parser_v2)
809include_directories(include/iq_parser_v2)
810include_directories(include/iq_parser_v2/j2s)
811
812add_subdirectory(algos)
813if (RKAIQ_ENABLE_CAMGROUP)
814    add_subdirectory(algos_camgroup)
815endif()
816
817cmake_policy(SET CMP0015 NEW)
818
819link_directories("${LIBRARY_OUTPUT_PATH}" "${OPENCV_LIBS_DIR}" "${GENMESH_LIBS_DIR}")
820
821add_library(rkaiq_tmp STATIC ${RK_AIQ_SRC})
822set_target_properties(rkaiq_tmp PROPERTIES FOLDER "rk_aiq")
823set_target_properties(rkaiq_tmp PROPERTIES CLEAN_DIRECT_OUTPUT 1)
824add_dependencies(rkaiq_tmp j2s_parser)
825
826if (RKAIQ_BUILD_BINARY_IQ)
827    add_dependencies(rkaiq_tmp j2s4b)
828endif()
829
830add_library(rkaiq SHARED ${RK_AIQ_SRC})
831set_target_properties(rkaiq PROPERTIES FOLDER "rk_aiq")
832set_target_properties(rkaiq PROPERTIES CLEAN_DIRECT_OUTPUT 1)
833set_target_properties(rkaiq PROPERTIES C_VISIBILITY_PRESET default)
834set_target_properties(rkaiq PROPERTIES CXX_VISIBILITY_PRESET default)
835
836target_link_libraries(rkaiq
837	PRIVATE
838    rkaiq_tmp
839    rkaiq_ae
840    rkaiq_awb
841    ${OPENCV_LIBS}
842    ${OPENCV_3RDPARTY_LIBS}
843    ${GENMESH_LIBS}
844    ${MOTION_DETECT_LIBS}
845    pthread)
846
847list(APPEND RK_AIQ_STATIC_LIB_ARS
848    ${STATIC_LIB_PREFIX}rkaiq_tmp${STATIC_LIB_SUFFIX}
849    ${STATIC_LIB_PREFIX}rkaiq_ae${STATIC_LIB_SUFFIX}
850    ${STATIC_LIB_PREFIX}rkaiq_awb${STATIC_LIB_SUFFIX}
851    )
852
853if (RKAIQ_HAVE_YNR_V2)
854target_link_libraries(rkaiq
855    PRIVATE
856    rkaiq_aynr_v2
857    )
858list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_aynr_v2${STATIC_LIB_SUFFIX})
859endif()
860
861if (RKAIQ_HAVE_GIC_V1 OR RKAIQ_HAVE_GIC_V2)
862target_link_libraries(rkaiq
863    PRIVATE
864    rkaiq_agic
865    )
866list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_agic${STATIC_LIB_SUFFIX})
867endif()
868
869if (RKAIQ_HAVE_ORB_V1)
870target_link_libraries(rkaiq
871    PRIVATE
872    rkaiq_aorb
873    )
874list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_aorb${STATIC_LIB_SUFFIX})
875endif()
876
877if (RKAIQ_HAVE_EIS_V1)
878target_link_libraries(rkaiq
879    PRIVATE
880    rkaiq_aeis
881    )
882list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_aeis${STATIC_LIB_SUFFIX})
883endif()
884
885if (RKAIQ_HAVE_CAC_V03 OR RKAIQ_HAVE_CAC_V10 OR RKAIQ_HAVE_CAC_V11)
886target_link_libraries(rkaiq
887    PRIVATE
888    rkaiq_acac
889    )
890list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_acac${STATIC_LIB_SUFFIX})
891endif()
892
893if (RKAIQ_HAVE_YNR_V1)
894target_link_libraries(rkaiq
895    PRIVATE
896    rkaiq_aynr_v1
897    )
898list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_aynr_v1${STATIC_LIB_SUFFIX})
899endif()
900
901if (RKAIQ_HAVE_YNR_V3)
902target_link_libraries(rkaiq
903    PRIVATE
904    rkaiq_aynr_v3
905    )
906list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_aynr_v3${STATIC_LIB_SUFFIX})
907endif()
908
909if (RKAIQ_HAVE_YNR_V22)
910target_link_libraries(rkaiq
911    PRIVATE
912    rkaiq_aynr_v22
913    )
914list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_aynr_v22${STATIC_LIB_SUFFIX})
915endif()
916
917if (RKAIQ_HAVE_UVNR_V1)
918target_link_libraries(rkaiq
919    PRIVATE
920    rkaiq_auvnr_v1
921    )
922list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_auvnr_v1${STATIC_LIB_SUFFIX})
923endif()
924
925if (RKAIQ_HAVE_CNR_V1)
926target_link_libraries(rkaiq
927    PRIVATE
928    rkaiq_acnr_v1
929    )
930list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_acnr_v1${STATIC_LIB_SUFFIX})
931endif()
932
933if (RKAIQ_HAVE_CNR_V2)
934target_link_libraries(rkaiq
935    PRIVATE
936    rkaiq_acnr_v2
937    )
938list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_acnr_v2${STATIC_LIB_SUFFIX})
939endif()
940
941if (RKAIQ_HAVE_CNR_V30 OR RKAIQ_HAVE_CNR_V30_LITE)
942target_link_libraries(rkaiq
943    PRIVATE
944    rkaiq_acnr_v30
945    )
946list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_acnr_v30${STATIC_LIB_SUFFIX})
947endif()
948
949if (RKAIQ_HAVE_SHARP_V1)
950target_link_libraries(rkaiq
951    PRIVATE
952    rkaiq_asharp
953    )
954list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_asharp${STATIC_LIB_SUFFIX})
955endif()
956
957if (RKAIQ_HAVE_SHARP_V3)
958target_link_libraries(rkaiq
959    PRIVATE
960    rkaiq_asharp_v3
961    )
962list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_asharp_v3${STATIC_LIB_SUFFIX})
963endif()
964
965if (RKAIQ_HAVE_SHARP_V4)
966target_link_libraries(rkaiq
967    PRIVATE
968    rkaiq_asharp_v4
969    )
970list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_asharp_v4${STATIC_LIB_SUFFIX})
971endif()
972
973if (RKAIQ_HAVE_SHARP_V33 OR RKAIQ_HAVE_SHARP_V33_LITE)
974target_link_libraries(rkaiq
975    PRIVATE
976    rkaiq_asharp_v33
977    )
978list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_asharp_v33${STATIC_LIB_SUFFIX})
979endif()
980
981if (RKAIQ_HAVE_MFNR_V1)
982target_link_libraries(rkaiq
983    PRIVATE
984    rkaiq_amfnr_v1
985    )
986list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_amfnr_v1${STATIC_LIB_SUFFIX})
987endif()
988
989if (RKAIQ_HAVE_BAYERNR_V1)
990target_link_libraries(rkaiq
991    PRIVATE
992    rkaiq_arawnr_v1
993    )
994list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_arawnr_v1${STATIC_LIB_SUFFIX})
995endif()
996
997if (RKAIQ_HAVE_BAYERNR_V2)
998target_link_libraries(rkaiq
999    PRIVATE
1000    rkaiq_arawnr_v2
1001    )
1002list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_arawnr_v2${STATIC_LIB_SUFFIX})
1003endif()
1004
1005if (RKAIQ_HAVE_BAYER2DNR_V2)
1006target_link_libraries(rkaiq
1007    PRIVATE
1008    rkaiq_abayer2dnr_v2
1009    )
1010list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_abayer2dnr_v2${STATIC_LIB_SUFFIX})
1011endif()
1012
1013if (RKAIQ_HAVE_BAYER2DNR_V23)
1014target_link_libraries(rkaiq
1015    PRIVATE
1016    rkaiq_abayer2dnr_v23
1017    )
1018list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_abayer2dnr_v23${STATIC_LIB_SUFFIX})
1019endif()
1020
1021if (RKAIQ_HAVE_BAYERTNR_V2)
1022target_link_libraries(rkaiq
1023    PRIVATE
1024    rkaiq_abayertnr_v2
1025    )
1026list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_abayertnr_v2${STATIC_LIB_SUFFIX})
1027endif()
1028
1029if (RKAIQ_HAVE_BAYERTNR_V23 OR RKAIQ_HAVE_BAYERTNR_V23_LITE)
1030target_link_libraries(rkaiq
1031    PRIVATE
1032    rkaiq_abayertnr_v23
1033    )
1034list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_abayertnr_v23${STATIC_LIB_SUFFIX})
1035endif()
1036
1037if (RKAIQ_HAVE_GAIN_V1)
1038target_link_libraries(rkaiq
1039    PRIVATE
1040    rkaiq_again_v1
1041    )
1042list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_again_v1${STATIC_LIB_SUFFIX})
1043endif()
1044
1045if (RKAIQ_HAVE_GAIN_V2)
1046target_link_libraries(rkaiq
1047    PRIVATE
1048    rkaiq_again_v2
1049    )
1050list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_again_v2${STATIC_LIB_SUFFIX})
1051endif()
1052
1053if (RKAIQ_HAVE_BLC_V1)
1054target_link_libraries(rkaiq
1055    PRIVATE
1056    rkaiq_ablc
1057    )
1058list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_ablc${STATIC_LIB_SUFFIX})
1059endif()
1060
1061if (RKAIQ_HAVE_BLC_V32)
1062target_link_libraries(rkaiq
1063    PRIVATE
1064    rkaiq_ablc_v32
1065    )
1066list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_ablc_v32${STATIC_LIB_SUFFIX})
1067endif()
1068
1069if (RKAIQ_HAVE_ANR_V1)
1070target_link_libraries(rkaiq
1071    PRIVATE
1072    rkaiq_anr
1073    )
1074list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_anr${STATIC_LIB_SUFFIX})
1075endif()
1076
1077
1078if (RKAIQ_HAVE_AMD_V1)
1079target_link_libraries(rkaiq
1080    PRIVATE
1081    rkaiq_amd
1082    )
1083list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_amd${STATIC_LIB_SUFFIX})
1084endif()
1085
1086if (RKAIQ_HAVE_AF_V20 OR RKAIQ_HAVE_AF_V30 OR RKAIQ_HAVE_AF_V31 OR RKAIQ_HAVE_AF_V32_LITE)
1087target_link_libraries(rkaiq
1088    PRIVATE
1089    rkaiq_af
1090    ${PDAF_LIBS}
1091    )
1092list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_af${STATIC_LIB_SUFFIX})
1093elseif (RKAIQ_ONLY_AF_STATS_V20 OR RKAIQ_ONLY_AF_STATS_V30 OR RKAIQ_ONLY_AF_STATS_V31 OR RKAIQ_ONLY_AF_STATS_V32_LITE)
1094target_link_libraries(rkaiq
1095    PRIVATE
1096    rkaiq_thirdaf
1097    )
1098list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_thirdaf${STATIC_LIB_SUFFIX})
1099endif()
1100
1101if (RKAIQ_HAVE_3DLUT_V1)
1102target_link_libraries(rkaiq
1103    PRIVATE
1104    rkaiq_a3dlut
1105    )
1106list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_a3dlut${STATIC_LIB_SUFFIX})
1107endif()
1108if (RKAIQ_HAVE_CCM_V1 OR RKAIQ_HAVE_CCM_V2)
1109target_link_libraries(rkaiq
1110    PRIVATE
1111    rkaiq_accm
1112    )
1113list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_accm${STATIC_LIB_SUFFIX})
1114endif()
1115
1116if (RKAIQ_HAVE_GAMMA_V10 OR RKAIQ_HAVE_GAMMA_V11)
1117target_link_libraries(rkaiq
1118    PRIVATE
1119    rkaiq_agamma
1120    )
1121list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_agamma${STATIC_LIB_SUFFIX})
1122endif()
1123
1124if (RKAIQ_HAVE_MERGE_V10 OR RKAIQ_HAVE_MERGE_V11 OR RKAIQ_HAVE_MERGE_V12)
1125target_link_libraries(rkaiq
1126    PRIVATE
1127    rkaiq_amerge
1128    )
1129list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_amerge${STATIC_LIB_SUFFIX})
1130endif()
1131
1132if (RKAIQ_HAVE_DRC_V10 OR RKAIQ_HAVE_DRC_V11 OR RKAIQ_HAVE_DRC_V12 OR RKAIQ_HAVE_DRC_V12_LITE)
1133target_link_libraries(rkaiq
1134    PRIVATE
1135    rkaiq_adrc
1136    )
1137list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_adrc${STATIC_LIB_SUFFIX})
1138endif()
1139
1140if (RKAIQ_HAVE_DEHAZE_V10 OR RKAIQ_HAVE_DEHAZE_V11 OR RKAIQ_HAVE_DEHAZE_V11_DUO OR RKAIQ_HAVE_DEHAZE_V12)
1141target_link_libraries(rkaiq
1142    PRIVATE
1143    rkaiq_adehaze
1144    )
1145list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_adehaze${STATIC_LIB_SUFFIX})
1146endif()
1147
1148if (RKAIQ_HAVE_DEGAMMA_V1)
1149target_link_libraries(rkaiq
1150    PRIVATE
1151    rkaiq_adegamma
1152    )
1153list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_adegamma${STATIC_LIB_SUFFIX})
1154endif()
1155
1156if (RKAIQ_HAVE_TMO_V1)
1157target_link_libraries(rkaiq
1158    PRIVATE
1159    rkaiq_atmo
1160    )
1161list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_atmo${STATIC_LIB_SUFFIX})
1162endif()
1163
1164if (RKAIQ_HAVE_WDR_V1)
1165target_link_libraries(rkaiq
1166    PRIVATE
1167    rkaiq_awdr
1168    )
1169list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_awdr${STATIC_LIB_SUFFIX})
1170endif()
1171
1172if (RKAIQ_HAVE_LDCH_V10 OR RKAIQ_HAVE_LDCH_V21)
1173target_link_libraries(rkaiq
1174    PRIVATE
1175    rkaiq_aldch
1176    )
1177list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_aldch${STATIC_LIB_SUFFIX})
1178endif()
1179
1180if (RKAIQ_HAVE_FEC_V10)
1181target_link_libraries(rkaiq
1182    PRIVATE
1183    rkaiq_afec
1184    )
1185list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_afec${STATIC_LIB_SUFFIX})
1186endif()
1187
1188if (RKAIQ_HAVE_CSM_V1)
1189target_link_libraries(rkaiq
1190    PRIVATE
1191    rkaiq_acsm
1192    )
1193list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_acsm${STATIC_LIB_SUFFIX})
1194endif()
1195
1196if (RKAIQ_HAVE_CGC_V1)
1197target_link_libraries(rkaiq
1198    PRIVATE
1199    rkaiq_acgc
1200    )
1201list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_acgc${STATIC_LIB_SUFFIX})
1202endif()
1203
1204if (RKAIQ_ENABLE_CAMGROUP)
1205target_link_libraries(rkaiq
1206    PRIVATE
1207    rkaiq_camgroup_ae
1208    rkaiq_camgroup_awb
1209    rkaiq_camgroup_misc
1210    )
1211list(APPEND RK_AIQ_STATIC_LIB_ARS
1212    ${STATIC_LIB_PREFIX}rkaiq_camgroup_ae${STATIC_LIB_SUFFIX}
1213    ${STATIC_LIB_PREFIX}rkaiq_camgroup_awb${STATIC_LIB_SUFFIX}
1214    ${STATIC_LIB_PREFIX}rkaiq_camgroup_misc${STATIC_LIB_SUFFIX}
1215    )
1216endif()
1217
1218if (RKAIQ_HAVE_DEBAYER_V1 OR RKAIQ_HAVE_DEBAYER_V2 OR RKAIQ_HAVE_DEBAYER_V2_LITE)
1219target_link_libraries(rkaiq
1220    PRIVATE
1221    rkaiq_adebayer
1222    )
1223list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_adebayer${STATIC_LIB_SUFFIX})
1224endif()
1225
1226if (RKAIQ_HAVE_AFD_V1 OR RKAIQ_HAVE_AFD_V2)
1227target_link_libraries(rkaiq
1228    PRIVATE
1229    rkaiq_afd
1230    )
1231list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_afd${STATIC_LIB_SUFFIX})
1232endif()
1233
1234if (RKAIQ_HAVE_LSC_V1 OR RKAIQ_HAVE_LSC_V2 OR RKAIQ_HAVE_LSC_V3)
1235target_link_libraries(rkaiq
1236    PRIVATE
1237    rkaiq_alsc
1238    )
1239list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_alsc${STATIC_LIB_SUFFIX})
1240endif()
1241
1242if (RKAIQ_HAVE_DPCC_V1)
1243target_link_libraries(rkaiq
1244    PRIVATE
1245    rkaiq_adpcc
1246    )
1247list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_adpcc${STATIC_LIB_SUFFIX})
1248endif()
1249
1250if (RKAIQ_HAVE_AIE_V10)
1251target_link_libraries(rkaiq
1252    PRIVATE
1253    rkaiq_aie
1254    )
1255list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_aie${STATIC_LIB_SUFFIX})
1256endif()
1257
1258if (RKAIQ_HAVE_ACP_V10)
1259target_link_libraries(rkaiq
1260    PRIVATE
1261    rkaiq_acp
1262    )
1263list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_acp${STATIC_LIB_SUFFIX})
1264endif()
1265
1266if (RKAIQ_HAVE_ASD_V10)
1267target_link_libraries(rkaiq
1268    PRIVATE
1269    rkaiq_asd
1270    )
1271list(APPEND RK_AIQ_STATIC_LIB_ARS ${STATIC_LIB_PREFIX}rkaiq_asd${STATIC_LIB_SUFFIX})
1272endif()
1273
1274if (libdl_FOUND)
1275    target_link_libraries(rkaiq
1276        PRIVATE
1277        libdl::libdl
1278        )
1279endif()
1280
1281if (libdrm_FOUND)
1282    target_link_libraries(rkaiq
1283        PRIVATE
1284        libdrm::libdrm
1285        )
1286endif()
1287
1288#build static librkaiq.a
1289
1290foreach(STATIC_LIB_AR ${RK_AIQ_STATIC_LIB_ARS})
1291	add_custom_command (TARGET rkaiq_tmp POST_BUILD
1292	COMMAND ${CMAKE_AR} x ${STATIC_LIB_AR}
1293	)
1294endforeach()
1295
1296add_custom_command (TARGET rkaiq_tmp POST_BUILD
1297	COMMAND ${CMAKE_AR} rcs ${CMAKE_LIBRARY_PATH}/librkaiq.a *.o
1298	COMMAND ${CMAKE_STRIP} --strip-debug ${CMAKE_LIBRARY_PATH}/librkaiq.a
1299	COMMAND rm *.o
1300	)
1301
1302set(RKAIQ_HEAD_DEPENDENCE
1303    include/
1304    include/algos/
1305    include/uAPI2/
1306    include/xcore/
1307    include/common/
1308    include/iq_parser/
1309    include/iq_parser_v2/)
1310target_include_directories(rkaiq PUBLIC ${RKAIQ_HEAD_DEPENDENCE})
1311
1312
1313install(DIRECTORY include/
1314    DESTINATION include/rkaiq
1315    FILES_MATCHING PATTERN "*.h")
1316install(FILES ${PROJECT_BINARY_DIR}/config.h
1317    DESTINATION include/rkaiq)
1318install(TARGETS rkaiq
1319    LIBRARY DESTINATION lib)
1320install(FILES ${CMAKE_LIBRARY_PATH}/librkaiq.a DESTINATION lib)
1321