libtugraph-sys 0.1.2+3.5.0

Native bindings to liblgraph
Documentation
# brpc
set(BRPC_LIB libbrpc.a)

# boost
set(Boost_USE_STATIC_LIBS ON)
find_package(Boost 1.68 REQUIRED COMPONENTS system filesystem)

if (ENABLE_FULLTEXT_INDEX)
    # jni
    find_package(JNI REQUIRED)
endif ()

# protbuf
include(cmake/GenerateProtobuf.cmake)
GenerateProtobufCpp(${CMAKE_CURRENT_LIST_DIR}/protobuf
        PROTO_SRCS PROTO_HEADERS
        ${CMAKE_CURRENT_LIST_DIR}/protobuf/ha.proto)

# leveldb
find_path(LEVELDB_INCLUDE_PATH NAMES leveldb/db.h)
find_library(LEVELDB_LIB NAMES leveldb)
if ((NOT LEVELDB_INCLUDE_PATH) OR (NOT LEVELDB_LIB))
    message(FATAL_ERROR "Fail to find leveldb")
endif ()

find_library(SNAPPY NAMES snappy)

find_package(PythonLibs 3 REQUIRED)

############### liblgraph_client_cpp_rpc ######################

set(TARGET_CPP_CLIENT_RPC lgraph_client_cpp_rpc)

add_library(${TARGET_CPP_CLIENT_RPC} SHARED
        client/cpp/rpc/lgraph_rpc_client.cpp
        ${PROTO_SRCS})

target_include_directories(${TARGET_CPP_CLIENT_RPC} PRIVATE
        ${DEPS_INCLUDE_DIR}
        ${CMAKE_CURRENT_LIST_DIR}
        ${CMAKE_CURRENT_LIST_DIR}/cypher    # for FieldDataConvert
        ${LGRAPH_INCLUDE_DIR}
        ${JNI_INCLUDE_DIRS})

if (NOT (CMAKE_SYSTEM_NAME STREQUAL "Darwin"))
    target_link_libraries(${TARGET_CPP_CLIENT_RPC}
            PUBLIC
            # begin static linking
            -Wl,-Bstatic
            ${BRPC_LIB}
            ${GFLAGS_LIBRARY}
            ${LEVELDB_LIB}
            -Wl,--whole-archive
            ${PROTOBUF_LIBRARY}
            -Wl,--no-whole-archive
            gflags
            snappy
            -Wl,-Bstatic
            ${Boost_LIBRARIES}
            -static-libstdc++
            -static-libgcc
            libstdc++fs.a
            -Wl,-Bdynamic
            ssl
            crypto
            rt
            dl
            z
            )
else ()
    target_link_libraries(${TARGET_CPP_CLIENT_RPC}
            PUBLIC
            lgraph
            lgraph_cypher_lib
            ${BRPC_LIB}
            ${LEVELDB_LIB}
            ${PROTOBUF_LIBRARY}
            "-framework CoreFoundation"
            "-framework CoreGraphics"
            "-framework CoreData"
            "-framework CoreText"
            "-framework Security"
            "-framework Foundation"
            -Wl,-U,_MallocExtension_ReleaseFreeMemory
            -Wl,-U,_ProfilerStart
            -Wl,-U,_ProfilerStop
            gflags
            cpprest
            boost_thread
            boost_chrono
            profiler
            snappy
            pthread
            ssl
            z
            )
endif ()

############### liblgraph_client_cpp_rest ######################

set(TARGET_CPP_CLIENT_REST lgraph_client_cpp_rest)

add_library(${TARGET_CPP_CLIENT_REST} SHARED
        client/cpp/restful/rest_client.cpp
        ${PROTO_SRCS})

if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
target_link_libraries(${TARGET_CPP_CLIENT_REST} PUBLIC
        lgraph_server_lib
        ${BRPC_LIB}
        boost_system
        boost_filesystem
        ${JAVA_JVM_LIBRARY})
endif()

target_include_directories(${TARGET_CPP_CLIENT_REST} PRIVATE
        ${DEPS_INCLUDE_DIR}
        ${CMAKE_CURRENT_LIST_DIR}
        ${CMAKE_CURRENT_LIST_DIR}/cypher
        ${LGRAPH_INCLUDE_DIR}
        ${JNI_INCLUDE_DIRS})

############### liblgraph_client_python ######################

set(TARGET_PYTHON_CLIENT lgraph_client_python)

add_library(${TARGET_PYTHON_CLIENT} SHARED
        client/python/rpc/client.cpp)

target_include_directories(${TARGET_PYTHON_CLIENT} PRIVATE
        ${PYTHON_INCLUDE_DIRS}
        ${LGRAPH_INCLUDE_DIR})

if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
    target_link_libraries(${TARGET_PYTHON_CLIENT} PUBLIC
            ${PYTHON_LIBRARIES}
            lgraph_client_cpp_rpc)
else ()
    target_link_libraries(${TARGET_PYTHON_CLIENT} PUBLIC
            lgraph_client_cpp_rpc
            rt
            lgraph)
endif ()