# For more information about using CMake with Android Studio, read the # documentation: https://d.android.com/studio/projects/add-native-code.html # Sets the minimum version of CMake required to build the native library. cmake_minimum_required(VERSION 3.22.1) # enable_language(ASM) set(CMAKE_CXX_STANDARD 17) # set(CMAKE_ANDROID_ARM_MODE ON) # breakpad set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffunction-sections -fdata-sections -Wformat-security ") set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}") # SET_TARGET_PROPERTIES(microphoto PROPERTIES LINK_FLAGS "-Wl,-s,--gc-sections") add_definitions(-DUSING_ETHERNET) if(ANDROID_ABI STREQUAL "armeabi-v7a") add_definitions(-DUSING_N938) elseif(ANDROID_ABI STREQUAL "arm64-v8a") # add_definitions(-DUSING_N938) add_definitions(-DUSING_PTZ) endif() # OUTPUT_DBG_INFO: 输出调试相关信息 add_definitions(-DOUTPUT_DBG_INFO) # OUTPUT_SOCKET_DBG_INFO Depends ON OUTPUT_DBG_INFO # TerminalService.cpp # add_definitions(-DOUTPUT_SOCKET_DBG_INFO) # OUTPUT_DB_DBG_INFO Depends ON OUTPUT_DBG_INFO # Database.cpp # add_definitions(-DOUTPUT_DB_DBG_INFO) add_definitions(-DUSING_FFMPEG) IF (CMAKE_BUILD_TYPE STREQUAL Debug) ADD_DEFINITIONS(-D_DEBUG) ELSE() ADD_DEFINITIONS(-DNDEBUG) ENDIF() # add_definitions(-DBOOST_EXCEPTION_DISABLE) # add_definitions(-DBOOST_NO_EXCEPTIONS) add_definitions(-DTERMINAL_CLIENT) add_definitions(-DKEEP_FRAME_TYPE_ON_REVERSE) add_definitions(-DBOOST_ALL_NO_LIB) add_definitions(-DASIO_STANDALONE) add_definitions(-DUSING_XY_EXTENSION) # add_definitions(-DUSING_BREAK_PAD) add_definitions(-DSQLITE_THREADSAFE=1) add_definitions(-DLIBRAW_NO_MEMPOOL_CHECK=1) # add_definitions(-DHDRPLUS_NO_DETAILED_OUTPUT=1) add_definitions(-DHAVE_STRING_H) # for memcpy in md5.c # add_definitions(-DUSING_NRSEC) # add_definitions(-DUSING_NRSEC_VPN) # add_definitions(-DUSING_CERT) # add_definitions(-DUSING_DOWSE) add_definitions(-DALIGN_HB_TIMER_TO_PHOTO) add_definitions(-DENABLE_3V3_ALWAYS) add_definitions(-DCURL_STATICLIB) add_definitions(-DUSING_HDRPLUS) add_definitions(-DUSING_EXEC_HDRP=1) set(USING_EXEC_HDRP 1) # include_directories(${OpenCV_DIR}/include) # add_library( lib_opencv SHARED IMPORTED ) # set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION ${OpenCV_DIR}/../libs/${ANDROID_ABI}/libopencv_java4.so) # Declares and names the project. project("microphoto") find_package(OpenCV REQUIRED core imgproc highgui photo) # find_package(OpenCV REQUIRED core imgproc) if(OpenCV_FOUND) include_directories(${OpenCV_INCLUDE_DIRS}) message(WARNING "OpenCV library status:") message(WARNING " version: ${OpenCV_VERSION}") message(WARNING " libraries: ${OpenCV_LIBS}") message(WARNING " include path: ${OpenCV_INCLUDE_DIRS}") else(OpenCV_FOUND) message(FATAL_ERROR "OpenCV library not found") endif(OpenCV_FOUND) # libzip # set(libzip_DIR ${LIBZIP_ROOT}/${ANDROID_ABI}/lib/cmake/libzip) # find_package(libzip REQUIRED) # ncnn set(ncnn_DIR ${NCNN_ROOT}/${ANDROID_ABI}/lib/cmake/ncnn) find_package(ncnn REQUIRED) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/breakpad) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libcutils/include) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libutils/include) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/img_utils/include) SET( IMG_UTILS_SRCS "img_utils/src/EndianUtils.cpp" #"img_utils/src/FileInput.cpp" #"img_utils/src/FileOutput.cpp" #"img_utils/src/SortedEntryVector.cpp" "img_utils/src/Input.cpp" "img_utils/src/Output.cpp" "img_utils/src/Orderable.cpp" "img_utils/src/TiffIfd.cpp" "img_utils/src/TiffWritable.cpp" "img_utils/src/TiffWriter.cpp" "img_utils/src/TiffEntry.cpp" "img_utils/src/TiffEntryImpl.cpp" "img_utils/src/ByteArrayOutput.cpp" "img_utils/src/DngUtils.cpp" "img_utils/src/StripSource.cpp" libutils/SharedBuffer.cpp libutils/StrongPointer.cpp DngCreator.cpp ) message(WARNING "include_directories ${HDRPLUS_ROOT}/${ANDROID_ABI}/include") include_directories(${HDRPLUS_ROOT}/${ANDROID_ABI}/include) link_directories(${HDRPLUS_ROOT}/${ANDROID_ABI}/lib) # message(WARNING "exiv2_DIR=${HDRPLUS_ROOT}/${ANDROID_ABI}/lib/cmake/exiv2") # SET(exiv2_DIR ${HDRPLUS_ROOT}/${ANDROID_ABI}/lib/cmake/exiv2) # list(APPEND CMAKE_PREFIX_PATH ${HDRPLUS_ROOT}/${ANDROID_ABI}/lib/cmake/exiv2) # find_package(exiv2 REQUIRED CONFIG NAMES exiv2) # message(STATUS "Found Exiv2 and linked") # OpenMP find_package(OpenMP REQUIRED) # library include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/hdrplus/include ) # include_directories(${HDRPLUS_ROOT}/${ANDROID_ABI}/include) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/hdrplus2) include_directories(hdrplus2/${ANDROID_ABI}) include_directories(${HALIDE_ROOT}/${ANDROID_ABI}/include) SET(ZLMEDIAKIT_LIBS "") SET(STREAMING_SRCS "") add_definitions(-DDISABLE_RTTI) # include_directories( ${HDRPLUS_ROOT}/${ANDROID_ABI}/include/ZLMediaKit ) # include_directories( ${HDRPLUS_ROOT}/${ANDROID_ABI}/include/ZLToolKit/src/ ) # SET(ZLMEDIAKIT_LIBS ${ZLMEDIAKIT_LIBS} zlmediakit zltoolkit) SET(STREAMING_SRCS media/RTSPToMP4.cpp media/RTSPRecorder.cpp media/Streaming.cpp ) SET(HDRPLUS_LIBS raw exiv2 exiv2-xmp expat lcms2 OpenMP::OpenMP_CXX) SET(HDRPLUS2_LIBS raw raw_r lcms2 tiff tiffxx jpeg hdrplus_pipeline) SET(HDRPLUS_SOURCES hdrplus/src/align.cpp hdrplus/src/bayer_image.cpp hdrplus/src/burst.cpp hdrplus/src/finish.cpp hdrplus/src/hdrplus_pipeline.cpp hdrplus/src/merge.cpp hdrplus/src/params.cpp ) SET(HDRPLUS2_SOURCES hdrplus2/src/HDRPlus.cpp hdrplus2/src/Burst.cpp hdrplus2/src/InputSource.cpp hdrplus2/src/LibRaw2DngConverter.cpp hdrplus2/${ANDROID_ABI}/hdrplus_pipeline.registration.cpp) SET(YAMC_INC_DIR ${CMAKE_SOURCE_DIR}) # SET(TERM_CORE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../xymp/Core) #SET(TERM_CORE_ROOT D:/shxy/xymp/Core) SET(JSONCPP_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/jsoncpp) SET(JSONCPP_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/jsoncpp/include) SET(CAMERA2_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/camera2) SET(FREETYPE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/freetype) # SET(EVPP_SRC_DIR ${EVPP_ROOT}/evpp) include_directories(${YAMC_INC_DIR}) include_directories(${ASIO_ROOT}/include) # SET(SQLITE_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/sqlite) # SET(SQLITE_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/sqlite) # add_library(sqlite3 STATIC ${SQLITE_SRC_DIR}/sqlite3.c ) # INCLUDE_DIRECTORIES(${SQLITE_INCLUDE_DIR}) INCLUDE_DIRECTORIES(${JSONCPP_INCLUDE_DIR}) SET(PUBLIC_HEADERS ${JSONCPP_INCLUDE_DIR}/json/config.h ${JSONCPP_INCLUDE_DIR}/json/forwards.h ${JSONCPP_INCLUDE_DIR}/json/features.h ${JSONCPP_INCLUDE_DIR}/json/value.h ${JSONCPP_INCLUDE_DIR}/json/reader.h ${JSONCPP_INCLUDE_DIR}/json/writer.h ${JSONCPP_INCLUDE_DIR}/json/assertions.h ${JSONCPP_INCLUDE_DIR}/json/version.h ) SET(JSONCPP_SOURCES ${JSONCPP_SRC_DIR}/src/lib_json/json_tool.h ${JSONCPP_SRC_DIR}/src/lib_json/json_reader.cpp ${JSONCPP_SRC_DIR}/src/lib_json/json_valueiterator.inl ${JSONCPP_SRC_DIR}/src/lib_json/json_value.cpp ${JSONCPP_SRC_DIR}/src/lib_json/json_writer.cpp ${JSONCPP_SRC_DIR}/version.in) SET(CAMERA2_SOURCES # ${CAMERA2_ROOT_DIR}/android_main.cpp # ${CAMERA2_ROOT_DIR}/camera_engine.cpp # ${CAMERA2_ROOT_DIR}/camera_manager.cpp # ${CAMERA2_ROOT_DIR}/camera_listeners.cpp # ${CAMERA2_ROOT_DIR}/image_reader.cpp # ${CAMERA2_ROOT_DIR}/camera_ui.cpp # ${CAMERA2_ROOT_DIR}/utils/camera_utils.cpp ${CAMERA2_ROOT_DIR}/ndkcamera.cpp) add_definitions(-DFT2_BUILD_LIBRARY=1) SET(FREETYPE_SRC_FILES ${FREETYPE_ROOT}/src/autofit/autofit.c ${FREETYPE_ROOT}/src/base/ftbase.c ${FREETYPE_ROOT}/src/base/ftbbox.c ${FREETYPE_ROOT}/src/base/ftbdf.c ${FREETYPE_ROOT}/src/base/ftbitmap.c ${FREETYPE_ROOT}/src/base/ftcid.c ${FREETYPE_ROOT}/src/base/ftdebug.c ${FREETYPE_ROOT}/src/base/ftfstype.c ${FREETYPE_ROOT}/src/base/ftgasp.c ${FREETYPE_ROOT}/src/base/ftglyph.c ${FREETYPE_ROOT}/src/base/ftgxval.c ${FREETYPE_ROOT}/src/base/ftinit.c ${FREETYPE_ROOT}/src/base/ftlcdfil.c ${FREETYPE_ROOT}/src/base/ftmm.c ${FREETYPE_ROOT}/src/base/ftotval.c ${FREETYPE_ROOT}/src/base/ftpatent.c ${FREETYPE_ROOT}/src/base/ftpfr.c ${FREETYPE_ROOT}/src/base/ftstroke.c ${FREETYPE_ROOT}/src/base/ftsynth.c ${FREETYPE_ROOT}/src/base/ftsystem.c ${FREETYPE_ROOT}/src/base/fttype1.c ${FREETYPE_ROOT}/src/base/ftwinfnt.c ${FREETYPE_ROOT}/src/bdf/bdf.c ${FREETYPE_ROOT}/src/bzip2/ftbzip2.c ${FREETYPE_ROOT}/src/cache/ftcache.c ${FREETYPE_ROOT}/src/cff/cff.c ${FREETYPE_ROOT}/src/cid/type1cid.c ${FREETYPE_ROOT}/src/gzip/ftgzip.c ${FREETYPE_ROOT}/src/lzw/ftlzw.c ${FREETYPE_ROOT}/src/pcf/pcf.c ${FREETYPE_ROOT}/src/pfr/pfr.c ${FREETYPE_ROOT}/src/psaux/psaux.c ${FREETYPE_ROOT}/src/pshinter/pshinter.c ${FREETYPE_ROOT}/src/psnames/psmodule.c ${FREETYPE_ROOT}/src/raster/raster.c ${FREETYPE_ROOT}/src/sfnt/sfnt.c ${FREETYPE_ROOT}/src/smooth/smooth.c ${FREETYPE_ROOT}/src/tools/apinames.c ${FREETYPE_ROOT}/src/truetype/truetype.c ${FREETYPE_ROOT}/src/type1/type1.c ${FREETYPE_ROOT}/src/type42/type42.c ${FREETYPE_ROOT}/src/winfonts/winfnt.c ${FREETYPE_ROOT}/src/svg/svg.c ${FREETYPE_ROOT}/src/sdf/sdf.c ) include_directories(${FREETYPE_ROOT}/include) include_directories(${TERM_CORE_ROOT}) # include_directories(${PROJECT_SOURCE_DIR}/../../../../../libs/inc/) # Creates and names a library, sets it as either STATIC # or SHARED, and provides the relative paths to its source code. # You can define multiple libraries, and CMake builds them for you. # Gradle automatically packages shared libraries with your APK. add_library( # Sets the name of the library. jsoncpp # Sets the library as a shared library. STATIC # Provides a relative path to your source file(s). ${JSONCPP_SOURCES} ) add_definitions(-DDARWIN_NO_CARBON) add_definitions(-DFT2_BUILD_LIBRARY) add_library( freetype STATIC ${FREETYPE_SRC_FILES} ) if(USING_EXEC_HDRP) message(WARNING "HDRP Compiled") add_executable( libhdrp.so ${HDRPLUS_SOURCES} hdrplus/bin/hdrplus.cpp ) target_link_libraries( libhdrp.so PUBLIC -fopenmp -static-openmp android z ${OpenCV_LIBS} # ${LIBRAW_LIBRARY} ${HDRPLUS_LIBS} ) else(USING_EXEC_HDRP) endif() SET(HDRPLUS_SOURCES_EMBED ${HDRPLUS2_SOURCES} ) SET(HDRPLUS_LIBS_EMBED ${HDRPLUS2_LIBS} ) add_library( # Sets the name of the library. microphoto # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). GPIOControl.cpp MicroPhoto.cpp PhoneDevice.cpp PtzController.cpp # PhoneDevice2.cpp Camera.cpp Camera2Reader.cpp # TextPaint.cpp CvText.cpp SerialPort.cpp #WeatherComm.cpp SensorsProtocol.cpp SerialComm.cpp ncnn/yolov5ncnn.cpp netcamera/httpclient.cpp netcamera/VendorCtrl.cpp netcamera/YuShiCtrl.cpp netcamera/HangYuCtrl.cpp ${STREAMING_SRCS} #serial/WeatherComm.cpp # camera2/OpenCVFont.cpp ${HDRPLUS_SOURCES_EMBED} ${CAMERA2_SOURCES} ${IMG_UTILS_SRCS} ${TERM_CORE_ROOT}/Factory.cpp ${TERM_CORE_ROOT}/FilePoster.cpp ${TERM_CORE_ROOT}/LogThread.cpp ${TERM_CORE_ROOT}/SpecData.cpp ${TERM_CORE_ROOT}/SpecData_I1.cpp ${TERM_CORE_ROOT}/SpecData_I1_AH.cpp ${TERM_CORE_ROOT}/SpecData_I1_JS.cpp ${TERM_CORE_ROOT}/SpecData_I1_HN.cpp ${TERM_CORE_ROOT}/SpecData_I1_HEN.cpp ${TERM_CORE_ROOT}/SpecData_I1_HENZZ.cpp ${TERM_CORE_ROOT}/SpecData_I1_SHX.cpp ${TERM_CORE_ROOT}/SpecData_I1_NX.cpp ${TERM_CORE_ROOT}/SpecData_XY.cpp ${TERM_CORE_ROOT}/SpecData_ZJ.cpp ${TERM_CORE_ROOT}/SpecData_NW.cpp ${TERM_CORE_ROOT}/SpecData_Nrsec.cpp ${TERM_CORE_ROOT}/Timer.cpp ${TERM_CORE_ROOT}/TimerThread.cpp ${TERM_CORE_ROOT}/Template.cpp ${TERM_CORE_ROOT}/Utils.cpp ${TERM_CORE_ROOT}/md5.c ${TERM_CORE_ROOT}/Client/SpiPort.cpp ${TERM_CORE_ROOT}/Client/NrsecPort.cpp ${TERM_CORE_ROOT}/Client/TerminalService.cpp ${TERM_CORE_ROOT}/Client/Terminal.cpp ${TERM_CORE_ROOT}/Client/Terminal_HN.cpp ${TERM_CORE_ROOT}/Client/Terminal_AH.cpp ${TERM_CORE_ROOT}/Client/Terminal_HEN_ZZ.cpp ${TERM_CORE_ROOT}/Client/Terminal_HEN.cpp ${TERM_CORE_ROOT}/Client/Terminal_SHX.cpp ${TERM_CORE_ROOT}/Client/Terminal_JS.cpp ${TERM_CORE_ROOT}/Client/Terminal_NX.cpp ${TERM_CORE_ROOT}/Client/Terminal_ZJ.cpp ${TERM_CORE_ROOT}/Client/Terminal_NW.cpp ${TERM_CORE_ROOT}/Client/DataController.cpp ${TERM_CORE_ROOT}/Client/UpgradeReceiver.cpp ${TERM_CORE_ROOT}/Client/Database.cpp ${TERM_CORE_ROOT}/Client/SimulatorDevice.cpp ${TERM_CORE_ROOT}/Client/DataController.cpp ) # Searches for a specified prebuilt library and stores the path as a # variable. Because CMake includes system libraries in the search path by # default, you only need to specify the name of the public NDK library # you want to add. CMake verifies that the library exists before # completing its build. find_library( # Sets the name of the path variable. log-lib # Specifies the name of the NDK library that # you want CMake to locate. log) # Specifies libraries CMake should link to your target library. You # can link multiple libraries, such as libraries you define in this # build script, prebuilt third-party libraries, or system libraries. target_link_libraries( # Specifies the target library. ${PROJECT_NAME} jsoncpp freetype breakpad # Links the target library to the log library # included in the NDK. avcodec avfilter avformat avutil swresample swscale x264 ${log-lib} android camera2ndk mediandk z curl ncnn ${OpenCV_LIBS} sqlite3 ${HDRPLUS_LIBS_EMBED} ${ZLMEDIAKIT_LIBS} ) # set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "-strip-all")