# 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) add_definitions(-DTERMINAL_CLIENT) add_definitions(-DKEEP_FRAME_TYPE_ON_REVERSE) add_definitions(-DBOOST_ALL_NO_LIB) # Declares and names the project. project("microphoto") set(TERM_CORE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../xymp/Core) set(BREAKPAD_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/breakpad) include_directories(${BREAKPAD_ROOT} ${BREAKPAD_ROOT}/common/android/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_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} ) SET(JSONCPP_INCLUDE_DIR jsoncpp/include) 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/lib_json/json_tool.h jsoncpp/src/lib_json/json_reader.cpp jsoncpp/src/lib_json/json_valueiterator.inl jsoncpp/src/lib_json/json_value.cpp jsoncpp/src/lib_json/json_writer.cpp jsoncpp/version.in) include_directories(${TERM_CORE_ROOT}) # include_directories(${PROJECT_SOURCE_DIR}/../../../../../libs/inc/) 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_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). MicroPhoto.cpp TerminalDevice.cpp ${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_HN.cpp ${TERM_CORE_ROOT}/SpecData_XY.cpp ${TERM_CORE_ROOT}/SpecData_ZJ.cpp ${TERM_CORE_ROOT}/TermClient.cpp ${TERM_CORE_ROOT}/Timer.cpp ${TERM_CORE_ROOT}/TimerThread.cpp ${TERM_CORE_ROOT}/Utils.cpp ${TERM_CORE_ROOT}/Client/Terminal.cpp ${TERM_CORE_ROOT}/Client/Terminal_HN.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 #breakpad # Links the target library to the log library # included in the NDK. ${log-lib} )