# generates JSONRPC Stub Server && Client # # this script expects # ETH_SOURCE_DIR - main CMAKE_SOURCE_DIR # ETH_SPEC_PATH # ETH_SERVER_DIR # ETH_CLIENT_DIR # ETH_SERVER_NAME # ETH_CLIENT_NAME # ETH_JSON_RPC_STUB # # example usage: # cmake -DETH_SPEC_PATH=spec.json -DETH_SERVER_DIR=libweb3jsonrpc -DETH_CLIENT_DIR=test # -DETH_SERVER_NAME=AbstractWebThreeStubServer -DETH_CLIENT_NAME=WebThreeStubClient -DETH_JSON_RPC_STUB=/usr/local/bin/jsonrpcstub # by default jsonrpcstub produces files in lowercase, we want to stick to this string(TOLOWER ${ETH_SERVER_NAME} ETH_SERVER_NAME_LOWER) string(TOLOWER ${ETH_CLIENT_NAME} ETH_CLIENT_NAME_LOWER) # setup names set(SERVER_TMPFILE "${ETH_SERVER_DIR}/${ETH_SERVER_NAME_LOWER}.h.tmp") set(SERVER_OUTFILE "${ETH_SERVER_DIR}/${ETH_SERVER_NAME_LOWER}.h") set(CLIENT_TMPFILE "${ETH_CLIENT_DIR}/${ETH_CLIENT_NAME_LOWER}.h.tmp") set(CLIENT_OUTFILE "${ETH_CLIENT_DIR}/${ETH_CLIENT_NAME_LOWER}.h") # create tmp files execute_process( COMMAND ${ETH_JSON_RPC_STUB} ${ETH_SPEC_PATH} --cpp-server=${ETH_SERVER_NAME} --cpp-server-file=${SERVER_TMPFILE} --cpp-client=${ETH_CLIENT_NAME} --cpp-client-file=${CLIENT_TMPFILE} OUTPUT_VARIABLE ERR ERROR_QUIET ) # don't throw fatal error on jsonrpcstub error, someone might have old version of jsonrpcstub, # he does not need to upgrade it if he is not working on JSON RPC # show him warning instead if (ERR) message(WARNING "Your version of jsonrcpstub tool is not supported. Please upgrade it.") message(WARNING "${ERR}") else() include("${ETH_SOURCE_DIR}/cmake/EthUtils.cmake") replace_if_different("${SERVER_TMPFILE}" "${SERVER_OUTFILE}") replace_if_different("${CLIENT_TMPFILE}" "${CLIENT_OUTFILE}") endif()