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