xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/IspFec/CMakeLists.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyunif(NOT CMAKE_BUILD_TYPE)
2*4882a593Smuzhiyun    set(CMAKE_BUILD_TYPE Release CACHE STRING
3*4882a593Smuzhiyun        "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel."
4*4882a593Smuzhiyun        FORCE)
5*4882a593Smuzhiyunendif()
6*4882a593Smuzhiyun
7*4882a593Smuzhiyuncmake_minimum_required(VERSION 2.8...3.22)
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunPROJECT(IspFec)
10*4882a593Smuzhiyun
11*4882a593Smuzhiyunlist(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
12*4882a593Smuzhiyun
13*4882a593Smuzhiyuninclude(BuildOptions)
14*4882a593Smuzhiyuninclude(CompileOptions)
15*4882a593Smuzhiyuninclude(GNUInstallDirs)
16*4882a593Smuzhiyun
17*4882a593Smuzhiyunset_property(GLOBAL PROPERTY USE_FOLDERS ON)
18*4882a593Smuzhiyunset_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets")
19*4882a593Smuzhiyun
20*4882a593Smuzhiyunset(RK_ISPFEC_SOURCE_DIR ${PROJECT_SOURCE_DIR})
21*4882a593Smuzhiyunmessage("rkIspFec src path" ${RK_ISPFEC_SOURCE_DIR})
22*4882a593Smuzhiyun
23*4882a593Smuzhiyunadd_compile_options(-Os)
24*4882a593Smuzhiyunadd_compile_options(-fstack-protector-strong -D_FORTIFY_SOURCE=2)
25*4882a593Smuzhiyunset(RK_ISPFEC_INSTALLED_DIR "${RK_ISPFEC_SOURCE_DIR}/build/linux/output/${ARCH}/installed" CACHE STRING "ISPFEC library installed dir")
26*4882a593Smuzhiyunset(RK_ISPFEC_LIB_DIR ${RK_ISPFEC_INSTALLED_DIR}/lib)
27*4882a593Smuzhiyunmessage("rkIspFec lib path" ${RK_ISPFEC_LIB_DIR})
28*4882a593Smuzhiyun
29*4882a593Smuzhiyuninclude_directories(
30*4882a593Smuzhiyun    ./
31*4882a593Smuzhiyun    include/
32*4882a593Smuzhiyun    include_prv/
33*4882a593Smuzhiyun    )
34*4882a593Smuzhiyun
35*4882a593Smuzhiyunset (IspFec_SRC
36*4882a593Smuzhiyun	src/rk_ispfec.cpp
37*4882a593Smuzhiyun	src/RkIspFecHw.cpp
38*4882a593Smuzhiyun	src/RkIspFecHwMgr.cpp
39*4882a593Smuzhiyun	)
40*4882a593Smuzhiyun
41*4882a593Smuzhiyunset(ISP_FEC_STATIC_LIB_ARS)
42*4882a593Smuzhiyunset(STATIC_LIB_PREFIX $<TARGET_FILE:)
43*4882a593Smuzhiyunset(STATIC_LIB_SUFFIX >)
44*4882a593Smuzhiyun
45*4882a593Smuzhiyunif(RK_GDC_GEN_MESH_ONLINE)
46*4882a593Smuzhiyun	list(APPEND IspFec_SRC
47*4882a593Smuzhiyun	     src/gen_mesh/genMesh.cpp
48*4882a593Smuzhiyun	     src/RkIspFecGenMesh.cpp
49*4882a593Smuzhiyun	     )
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun    set(GENMESH_LIBS genMeshLib)
52*4882a593Smuzhiyun    if(ARCH STREQUAL "aarch64")
53*4882a593Smuzhiyun        set(GENMESH_LIBS_DIR
54*4882a593Smuzhiyun            ${PROJECT_SOURCE_DIR}/src/gen_mesh/linux/genMesh_static_64bit/
55*4882a593Smuzhiyun            )
56*4882a593Smuzhiyun    else()
57*4882a593Smuzhiyun        set(GENMESH_LIBS_DIR
58*4882a593Smuzhiyun            ${PROJECT_SOURCE_DIR}/src/gen_mesh/linux/genMesh_static_32bit/
59*4882a593Smuzhiyun            )
60*4882a593Smuzhiyun    endif()
61*4882a593Smuzhiyun
62*4882a593Smuzhiyun    list(APPEND ISP_FEC_STATIC_LIB_ARS ${GENMESH_LIBS_DIR}/libgenMeshLib.a)
63*4882a593Smuzhiyun    add_compile_options(-DGENMESH_ONLINE)
64*4882a593Smuzhiyunendif()
65*4882a593Smuzhiyun
66*4882a593Smuzhiyunlist(APPEND DIR_SRCS ${AFDEMO_DIR_SRCS})
67*4882a593Smuzhiyun
68*4882a593SmuzhiyunSET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/all_lib/${CMAKE_BUILD_TYPE})
69*4882a593SmuzhiyunSET(CMAKE_LIBRARY_PATH ${LIBRARY_OUTPUT_PATH})
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun#set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
72*4882a593Smuzhiyun#set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
73*4882a593Smuzhiyunmessage(${CMAKE_LIBRARY_PATH})
74*4882a593Smuzhiyunmessage(${LIBRARY_OUTPUT_PATH})
75*4882a593Smuzhiyun
76*4882a593Smuzhiyunadd_definitions(-D_CRT_SECURE_NO_WARNINGS)
77*4882a593Smuzhiyun
78*4882a593Smuzhiyunlink_directories("${RK_ISPFEC_LIB_DIR}" "${GENMESH_LIBS_DIR}")
79*4882a593Smuzhiyunadd_library(IspFec SHARED ${IspFec_SRC})
80*4882a593Smuzhiyun
81*4882a593Smuzhiyuntarget_link_libraries(IspFec
82*4882a593Smuzhiyun	PRIVATE
83*4882a593Smuzhiyun    ${GENMESH_LIBS})
84*4882a593Smuzhiyun
85*4882a593Smuzhiyunadd_library(IspFec_static STATIC ${IspFec_SRC})
86*4882a593Smuzhiyunset_target_properties(IspFec_static PROPERTIES FOLDER "IspFec")
87*4882a593Smuzhiyunset_target_properties(IspFec_static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
88*4882a593Smuzhiyun
89*4882a593Smuzhiyunlist(APPEND ISP_FEC_STATIC_LIB_ARS
90*4882a593Smuzhiyun    ${STATIC_LIB_PREFIX}IspFec_static${STATIC_LIB_SUFFIX}
91*4882a593Smuzhiyun    )
92*4882a593Smuzhiyun
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun#build static libIspFec_static.a
95*4882a593Smuzhiyunforeach(STATIC_LIB_AR ${ISP_FEC_STATIC_LIB_ARS})
96*4882a593Smuzhiyun        add_custom_command (TARGET IspFec_static POST_BUILD
97*4882a593Smuzhiyun        COMMAND ${CMAKE_AR} x ${STATIC_LIB_AR}
98*4882a593Smuzhiyun        )
99*4882a593Smuzhiyunendforeach()
100*4882a593Smuzhiyun
101*4882a593Smuzhiyunadd_custom_command (TARGET IspFec_static POST_BUILD
102*4882a593Smuzhiyun        COMMAND ${CMAKE_AR} rcs ${CMAKE_LIBRARY_PATH}/libIspFec_static.a *.o
103*4882a593Smuzhiyun        COMMAND ${CMAKE_STRIP} --strip-debug ${CMAKE_LIBRARY_PATH}/libIspFec_static.a
104*4882a593Smuzhiyun        COMMAND rm *.o
105*4882a593Smuzhiyun        )
106*4882a593Smuzhiyun
107*4882a593Smuzhiyuninstall(DIRECTORY include/ DESTINATION include/IspFec FILES_MATCHING PATTERN "*.h")
108*4882a593Smuzhiyuninstall(FILES ${CMAKE_LIBRARY_PATH}/libIspFec.so DESTINATION lib)
109*4882a593Smuzhiyuninstall(FILES ${CMAKE_LIBRARY_PATH}/libIspFec_static.a DESTINATION lib RENAME libIspFec.a)
110