# 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") 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) # set(OpenCV_DIR D:/Workspace/deps/OpenCV-android-sdk/sdk/native/jni/) set(OPENCV_EXTRA_MODULES_PATH D:/Workspace/Github/opencv_contrib/modules) # 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") # message(FATAL_ERROR "OpenCV ${OpenCV_DIR}") find_package(OpenCV REQUIRED core imgproc highgui) 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) # ncnn set(ncnn_DIR ${NCNN_ROOT}/${ANDROID_ABI}/lib/cmake/ncnn) find_package(ncnn REQUIRED) # include(mars/src/CMakeUtils.txt) SET(YAMC_INC_DIR ${CMAKE_SOURCE_DIR}) # SET(TERM_CORE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../xymp/Core) #SET(TERM_CORE_ROOT D:/Workspace/xymp/Core) SET(JSONCPP_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/jsoncpp) SET(JSONCPP_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/jsoncpp/include) SET(BREAKPAD_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/breakpad) 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(${BREAKPAD_ROOT} ${BREAKPAD_ROOT}/common/android/include) include_directories(${ASIO_ROOT}/include) file(GLOB BREAKPAD_SOURCES_COMMON native-lib.cpp ${BREAKPAD_ROOT}/client/linux/crash_generation/crash_generation_client.cc ${BREAKPAD_ROOT}/client/linux/dump_writer_common/thread_info.cc ${BREAKPAD_ROOT}/client/linux/dump_writer_common/ucontext_reader.cc ${BREAKPAD_ROOT}/client/linux/handler/exception_handler.cc ${BREAKPAD_ROOT}/client/linux/handler/minidump_descriptor.cc ${BREAKPAD_ROOT}/client/linux/log/log.cc ${BREAKPAD_ROOT}/client/linux/microdump_writer/microdump_writer.cc ${BREAKPAD_ROOT}/client/linux/minidump_writer/linux_dumper.cc ${BREAKPAD_ROOT}/client/linux/minidump_writer/linux_ptrace_dumper.cc ${BREAKPAD_ROOT}/client/linux/minidump_writer/minidump_writer.cc ${BREAKPAD_ROOT}/client/linux/minidump_writer/pe_file.cc ${BREAKPAD_ROOT}/client/minidump_file_writer.cc ${BREAKPAD_ROOT}/common/convert_UTF.cc ${BREAKPAD_ROOT}/common/md5.cc ${BREAKPAD_ROOT}/common/string_conversion.cc ${BREAKPAD_ROOT}/common/linux/elfutils.cc ${BREAKPAD_ROOT}/common/linux/file_id.cc ${BREAKPAD_ROOT}/common/linux/guid_creator.cc ${BREAKPAD_ROOT}/common/linux/linux_libc_support.cc ${BREAKPAD_ROOT}/common/linux/memory_mapped_file.cc ${BREAKPAD_ROOT}/common/linux/safe_readlink.cc ) file(GLOB BREAKPAD_ASM_SOURCE ${BREAKPAD_ROOT}/common/linux/breakpad_getcontext.S) set_property(SOURCE ${BREAKPAD_ROOT}/common/linux/breakpad_getcontext.S PROPERTY LANGUAGE C) # set_source_files_properties(${BREAKPAD_ASM_SOURCE} PROPERTIES LANGUAGE C) # 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. breakpad # Sets the library as a shared library. STATIC # Provides a relative path to your source file(s). ${BREAKPAD_SOURCES_COMMON} ${BREAKPAD_ASM_SOURCE} ) 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/) #[[ add_library( # Sets the name of the library. evpp_lite # Sets the library as a shared library. STATIC # Provides a relative path to your source file(s). ${EVPP_SOURCES} ) ]] IF (CMAKE_HOST_SYSTEM_NAME MATCHES "Windows") # set(BOOST_ROOT C:/ProgramData/boost_1_82_0/) # set(BOOST_INCLUDEDIR C:/ProgramData/boost_1_82_0/) include_directories(C:/ProgramData/boost_1_82_0/) ELSE() # find_package(Boost 1.58.0 COMPONENTS) find_package(Boost 1.58.0) if(Boost_FOUND) include_directories(${Boost_INCLUDE_DIRS}) else() message(FATAL_ERROR "Boost Not Found") endif() endif() # 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} ) 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 TerminalDevice.cpp PhoneDevice.cpp PhoneDevice2.cpp Camera.cpp Camera2Reader.cpp ncnn/yolov5ncnn.cpp camera2/OpenCVFont.cpp ${CAMERA2_SOURCES} ${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_XY.cpp ${TERM_CORE_ROOT}/SpecData_ZJ.cpp ${TERM_CORE_ROOT}/SpecData_NW.cpp ${TERM_CORE_ROOT}/Timer.cpp ${TERM_CORE_ROOT}/TimerThread.cpp ${TERM_CORE_ROOT}/Template.cpp ${TERM_CORE_ROOT}/Utils.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_ZJ.cpp ${TERM_CORE_ROOT}/Client/Terminal_NW.cpp ${TERM_CORE_ROOT}/Client/UpgradeReceiver.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. microphoto jsoncpp freetype # breakpad # Links the target library to the log library # included in the NDK. ${log-lib} android camera2ndk mediandk z ncnn ${OpenCV_LIBS} )