|
| 1 | +set(NAME binding_${LANG}) |
| 2 | +project(${NAME}) |
| 3 | +set(SWIG_TARGET_NAME ccapi_${NAME}) |
| 4 | + |
| 5 | +# Find go cli |
| 6 | +find_program(GO_EXECUTABLE NAMES go REQUIRED) |
| 7 | +if(NOT GO_EXECUTABLE) |
| 8 | + message(FATAL_ERROR "Check for go Program: not found") |
| 9 | +else() |
| 10 | + message(STATUS "Found go Program: ${GO_EXECUTABLE}") |
| 11 | +endif() |
| 12 | + |
| 13 | +execute_process( |
| 14 | + COMMAND ${GO_EXECUTABLE} version |
| 15 | + OUTPUT_VARIABLE GO_EXECUTABLE_VERSION |
| 16 | + OUTPUT_STRIP_TRAILING_WHITESPACE |
| 17 | +) |
| 18 | +message(STATUS "Go version: ${GO_EXECUTABLE_VERSION}") |
| 19 | + |
| 20 | +set(GO_PACKAGE "ccapi") |
| 21 | + |
| 22 | +# set_property(SOURCE ${SWIG_INTERFACE} PROPERTY CPLUSPLUS ON) |
| 23 | +# set_property(SOURCE ${SWIG_INTERFACE} PROPERTY COMPILE_OPTIONS "-package;${GO_PACKAGE};-use-shlib") |
| 24 | +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${SWIG_TARGET_NAME}) |
| 25 | +# set(SWIG_TARGET_NAME ${SWIG_TARGET_NAME}) |
| 26 | +add_custom_target(${SWIG_TARGET_NAME} ALL |
| 27 | + COMMAND ${SWIG_EXECUTABLE} -outcurrentdir -c++ -go -package ${GO_PACKAGE} -I${CCAPI_PROJECT_DIR}/include ${SWIG_INTERFACE} |
| 28 | + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${SWIG_TARGET_NAME} |
| 29 | +) |
| 30 | +add_dependencies(${SWIG_TARGET_NAME} boost rapidjson hffix) |
| 31 | + |
| 32 | + |
| 33 | +# swig_add_library(${SWIG_TARGET_NAME} |
| 34 | +# LANGUAGE ${LANG} |
| 35 | +# OUTPUT_DIR ${CMAKE_BINARY_DIR}/${LANG}/${SWIG_TARGET_NAME} |
| 36 | +# SOURCES ${SWIG_INTERFACE}) |
| 37 | + |
| 38 | +# if(NOT CCAPI_LEGACY_USE_WEBSOCKETPP) |
| 39 | +# add_dependencies(${SWIG_TARGET_NAME} boost rapidjson hffix) |
| 40 | +# endif() |
| 41 | +# set_property(TARGET ${SWIG_TARGET_NAME} PROPERTY SWIG_USE_TARGET_INCLUDE_DIRECTORIES ON) |
| 42 | + |
| 43 | +set(PACKAGING_DIR packaging) |
| 44 | +set(PACKAGING_DIR_FULL ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGING_DIR}/${BUILD_VERSION}) |
| 45 | +file(MAKE_DIRECTORY ${PACKAGING_DIR_FULL}) |
| 46 | +set(GO_PACKAGING_TARGET_NAME ${LANG}_${PACKAGING_DIR}) |
| 47 | + |
| 48 | +set(COMPILER_OPTIONS_FILE_PATH ${PACKAGING_DIR_FULL}/compiler_options.txt) |
| 49 | +file(WRITE ${COMPILER_OPTIONS_FILE_PATH} "") |
| 50 | +set(CGO_CXXFLAGS_LIST "") |
| 51 | +list(APPEND CGO_CXXFLAGS_LIST -std=c++17 -fPIC -Wno-deprecated-declarations) |
| 52 | +if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") |
| 53 | +list(APPEND CGO_CXXFLAGS_LIST -g) |
| 54 | +else() |
| 55 | +list(APPEND CGO_CXXFLAGS_LIST -O3 -DNDEBUG) |
| 56 | +endif() |
| 57 | +list(APPEND CGO_CXXFLAGS_LIST -I${CCAPI_PROJECT_DIR}/include -I${BOOST_INCLUDE_DIR} -I${RAPIDJSON_INCLUDE_DIR} -I${HFFIX_INCLUDE_DIR} -I${OPENSSL_INCLUDE_DIR}) |
| 58 | +list(APPEND CGO_CXXFLAGS_LIST -DCCAPI_ENABLE_SERVICE_MARKET_DATA -DCCAPI_ENABLE_SERVICE_EXECUTION_MANAGEMENT -DCCAPI_ENABLE_SERVICE_FIX -DCCAPI_ENABLE_EXCHANGE_COINBASE -DCCAPI_ENABLE_EXCHANGE_GEMINI -DCCAPI_ENABLE_EXCHANGE_KRAKEN -DCCAPI_ENABLE_EXCHANGE_KRAKEN_FUTURES -DCCAPI_ENABLE_EXCHANGE_BITSTAMP -DCCAPI_ENABLE_EXCHANGE_BITFINEX -DCCAPI_ENABLE_EXCHANGE_BITMEX -DCCAPI_ENABLE_EXCHANGE_BINANCE_US -DCCAPI_ENABLE_EXCHANGE_BINANCE -DCCAPI_ENABLE_EXCHANGE_BINANCE_MARGIN -DCCAPI_ENABLE_EXCHANGE_BINANCE_USDS_FUTURES -DCCAPI_ENABLE_EXCHANGE_BINANCE_COIN_FUTURES -DCCAPI_ENABLE_EXCHANGE_HUOBI -DCCAPI_ENABLE_EXCHANGE_HUOBI_USDT_SWAP -DCCAPI_ENABLE_EXCHANGE_HUOBI_COIN_SWAP -DCCAPI_ENABLE_EXCHANGE_OKX -DCCAPI_ENABLE_EXCHANGE_ERISX -DCCAPI_ENABLE_EXCHANGE_KUCOIN -DCCAPI_ENABLE_EXCHANGE_KUCOIN_FUTURES -DCCAPI_ENABLE_EXCHANGE_DERIBIT -DCCAPI_ENABLE_EXCHANGE_GATEIO -DCCAPI_ENABLE_EXCHANGE_GATEIO_PERPETUAL_FUTURES -DCCAPI_ENABLE_EXCHANGE_CRYPTOCOM -DCCAPI_ENABLE_EXCHANGE_BYBIT -DCCAPI_ENABLE_EXCHANGE_BYBIT_DERIVATIVES -DCCAPI_ENABLE_EXCHANGE_ASCENDEX -DCCAPI_ENABLE_EXCHANGE_BITGET -DCCAPI_ENABLE_EXCHANGE_BITGET_FUTURES -DCCAPI_ENABLE_EXCHANGE_BITMART -DCCAPI_ENABLE_EXCHANGE_MEXC -DCCAPI_ENABLE_EXCHANGE_MEXC_FUTURES -DCCAPI_ENABLE_EXCHANGE_WHITEBIT) |
| 59 | +if(CCAPI_ENABLE_LOG_ERROR) |
| 60 | +list(APPEND CGO_CXXFLAGS_LIST -DCCAPI_ENABLE_LOG_ERROR) |
| 61 | +endif() |
| 62 | +if(CCAPI_ENABLE_LOG_WARN) |
| 63 | +list(APPEND CGO_CXXFLAGS_LIST -DCCAPI_ENABLE_LOG_WARN) |
| 64 | +endif() |
| 65 | +if(CCAPI_ENABLE_LOG_INFO) |
| 66 | +list(APPEND CGO_CXXFLAGS_LIST -DCCAPI_ENABLE_LOG_INFO) |
| 67 | +endif() |
| 68 | +if(CCAPI_ENABLE_LOG_DEBUG) |
| 69 | +list(APPEND CGO_CXXFLAGS_LIST -DCCAPI_ENABLE_LOG_DEBUG) |
| 70 | +endif() |
| 71 | +if(CCAPI_ENABLE_LOG_TRACE) |
| 72 | +list(APPEND CGO_CXXFLAGS_LIST -DCCAPI_ENABLE_LOG_TRACE) |
| 73 | +endif() |
| 74 | +list(JOIN CGO_CXXFLAGS_LIST " " CGO_CXXFLAGS) |
| 75 | +message(STATUS "CGO_CXXFLAGS: ${CGO_CXXFLAGS}") |
| 76 | +file(APPEND ${COMPILER_OPTIONS_FILE_PATH} "export CGO_CXXFLAGS='${CGO_CXXFLAGS}'\n\n") |
| 77 | + |
| 78 | +set(CGO_LDFLAGS_LIST "") |
| 79 | +if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") |
| 80 | +list(APPEND CGO_LDFLAGS_LIST -g) |
| 81 | +endif() |
| 82 | +list(APPEND CGO_LDFLAGS_LIST -L${OPENSSL_CRYPTO_LIBRARY_DIR} -L${OPENSSL_SSL_LIBRARY_DIR} -lcrypto -lssl) |
| 83 | +foreach(ZLIB_LIBRARY IN LISTS ZLIB_LIBRARIES) |
| 84 | + get_filename_component(ZLIB_LIBRARY_DIR ${ZLIB_LIBRARY} DIRECTORY) |
| 85 | + list(APPEND CGO_LDFLAGS_LIST -L${ZLIB_LIBRARY_DIR} -lz) |
| 86 | +endforeach() |
| 87 | +list(JOIN CGO_LDFLAGS_LIST " " CGO_LDFLAGS) |
| 88 | +message(STATUS "CGO_LDFLAGS: ${CGO_LDFLAGS}") |
| 89 | +file(APPEND ${COMPILER_OPTIONS_FILE_PATH} "export CGO_LDFLAGS='${CGO_LDFLAGS}'\n") |
| 90 | + |
| 91 | +add_custom_target(${GO_PACKAGING_TARGET_NAME} ALL |
| 92 | + # COMMAND ${GO_EXECUTABLE} -o ${PACKAGING_DIR_FULL} ${CMAKE_CURRENT_BINARY_DIR}/${SWIG_TARGET_NAME}/*.go |
| 93 | + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_BINARY_DIR}/${SWIG_TARGET_NAME} ${PACKAGING_DIR_FULL} |
| 94 | + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/go.mod ${PACKAGING_DIR_FULL} |
| 95 | + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/ccapi_logger.cpp ${PACKAGING_DIR_FULL} |
| 96 | + WORKING_DIRECTORY ${PACKAGING_DIR_FULL} |
| 97 | +) |
| 98 | +add_dependencies(${GO_PACKAGING_TARGET_NAME} ${SWIG_TARGET_NAME}) |
| 99 | + |
| 100 | +# # Test |
| 101 | +# if(BUILD_TEST) |
| 102 | +# # message(STATUS "BUILD_TEST") |
| 103 | +# set(TEST_DIR ${CMAKE_CURRENT_BINARY_DIR}/test) |
| 104 | +# file(COPY example DESTINATION ${TEST_DIR}) |
| 105 | +# set(SUBDIRECTORY_LIST "enable_library_logging" "execution_management_simple_request" "execution_management_simple_subscription" "fix_simple" "handle_exception" "market_data_multiple_subscription" "market_data_simple_request" "market_data_simple_subscription") |
| 106 | +# foreach(SUBDIRECTORY IN LISTS SUBDIRECTORY_LIST) |
| 107 | +# # message(STATUS "SUBDIRECTORY=${SUBDIRECTORY}") |
| 108 | +# set(GO_TEST_TARGET_NAME go_test_${SUBDIRECTORY}) |
| 109 | +# set(GO_TEST_BUILD_DIRECTORY ${TEST_DIR}/example/${SUBDIRECTORY}/build) |
| 110 | +# file(MAKE_DIRECTORY ${GO_TEST_BUILD_DIRECTORY}) |
| 111 | +# add_custom_target(${GO_TEST_TARGET_NAME} ALL |
| 112 | +# COMMAND ${CMAKE_COMMAND} -E rm -rf * |
| 113 | +# COMMAND ${Go_GOC_EXECUTABLE} -cp ${PACKAGING_DIR_FULL}/ccapi-${BUILD_VERSION}.jar -d . ../Main.go |
| 114 | +# WORKING_DIRECTORY ${GO_TEST_BUILD_DIRECTORY} |
| 115 | +# ) |
| 116 | +# add_dependencies(${GO_TEST_TARGET_NAME} ${GO_PACKAGING_TARGET_NAME}) |
| 117 | +# endforeach() |
| 118 | +# file(COPY test DESTINATION ${TEST_DIR}) |
| 119 | +# set(GO_TEST_TARGET_NAME go_test_test) |
| 120 | +# set(GO_TEST_BUILD_DIRECTORY ${TEST_DIR}/test/build) |
| 121 | +# file(MAKE_DIRECTORY ${GO_TEST_BUILD_DIRECTORY}) |
| 122 | +# add_custom_target(${GO_TEST_TARGET_NAME} ALL |
| 123 | +# COMMAND ${CMAKE_COMMAND} -E rm -rf * |
| 124 | +# COMMAND ${Go_GOC_EXECUTABLE} -cp ${PACKAGING_DIR_FULL}/ccapi-${BUILD_VERSION}.jar -d . ../Main.go |
| 125 | +# WORKING_DIRECTORY ${GO_TEST_BUILD_DIRECTORY} |
| 126 | +# ) |
| 127 | +# add_dependencies(${GO_TEST_TARGET_NAME} ${GO_PACKAGING_TARGET_NAME}) |
| 128 | +# add_test(NAME go_test |
| 129 | +# COMMAND ${Go_GO_EXECUTABLE} -cp ".:${PACKAGING_DIR_FULL}" -Dgo.library.path=${PACKAGING_DIR_FULL} Main |
| 130 | +# WORKING_DIRECTORY ${GO_TEST_BUILD_DIRECTORY}) |
| 131 | +# endif() |
0 commit comments