Marek Kotewicz
10 years ago
4 changed files with 69 additions and 19 deletions
@ -0,0 +1,24 @@ |
|||||
|
# |
||||
|
# renames the file if it is different from its destination |
||||
|
include(CMakeParseArguments) |
||||
|
# |
||||
|
macro(replace_if_different SOURCE DST) |
||||
|
set(extra_macro_args ${ARGN}) |
||||
|
set(options CREATE) |
||||
|
set(one_value_args) |
||||
|
set(multi_value_args) |
||||
|
cmake_parse_arguments(REPLACE_IF_DIFFERENT "${options}" "${one_value_args}" "${multi_value_args}" "${extra_macro_args}") |
||||
|
|
||||
|
if (REPLACE_IF_DIFFERENT_CREATE AND (NOT (EXISTS "${DST}"))) |
||||
|
file(WRITE "${DST}" "") |
||||
|
endif() |
||||
|
|
||||
|
execute_process(COMMAND ${CMAKE_COMMAND} -E compare_files "${SOURCE}" "${DST}" RESULT_VARIABLE DIFFERENT) |
||||
|
|
||||
|
if (DIFFERENT) |
||||
|
execute_process(COMMAND ${CMAKE_COMMAND} -E rename "${SOURCE}" "${DST}") |
||||
|
else() |
||||
|
execute_process(COMMAND ${CMAKE_COMMAND} -E remove "${SOURCE}") |
||||
|
endif() |
||||
|
endmacro() |
||||
|
|
@ -0,0 +1,36 @@ |
|||||
|
# 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} |
||||
|
) |
||||
|
|
||||
|
include("${ETH_SOURCE_DIR}/cmake/EthUtils.cmake") |
||||
|
replace_if_different("${SERVER_TMPFILE}" "${SERVER_OUTFILE}") |
||||
|
replace_if_different("${CLIENT_TMPFILE}" "${CLIENT_OUTFILE}") |
||||
|
|
Loading…
Reference in new issue