Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
684d084
Compile successfully on Windows
sunhantao Jul 10, 2020
4aad1d2
Fix compile error on Linux
sunhantao Jul 10, 2020
3f9e72d
Update RPC client
sunhantao Jul 10, 2020
dccb434
Update macro
sunhantao Jul 15, 2020
7cdf71c
update
sunhantao Jul 17, 2020
a182f93
Replace uint128_ by uint64_ on MSVC
sunhantao Jul 22, 2020
3179145
Update INSTALL.bat
sunhantao Jul 23, 2020
25560f6
Fix signature bug and add "sendtodata" option (#570)
sunhantao Jul 3, 2020
4d74244
Enhance verification of CERT (#571)
sunhantao Jul 3, 2020
d737c71
fix crash when failing to inspect wallet tx (#577)
ouyun Jul 10, 2020
80bfea9
Fix consensus bug: not check repeated publish (#578)
sunhantao Jul 10, 2020
e01af1f
Update Version 2.0.4 (#581)
AlexiaChen Jul 16, 2020
ece5aba
Update INSTALL.bat
sunhantao Jul 23, 2020
94d64ea
Update
sunhantao Jul 23, 2020
b149ab9
Update rpc client
sunhantao Jul 24, 2020
a764d7b
Merge branch 'windows' of https://github.com/bigbangcore/BigBang into…
sunhantao Jul 24, 2020
121d5d8
Merge branch 'master' into windows
sunhantao Jul 24, 2020
a31c8f1
Remove some debug code
sunhantao Jul 24, 2020
269618d
Fix warning
sunhantao Jul 24, 2020
a6cdf29
Update CMakeLists.txt
ouyun Jul 24, 2020
8b5ae78
Add include directories
sunhantao Jul 24, 2020
c77f069
Merge branch 'windows' of https://github.com/bigbangcore/BigBang into…
sunhantao Jul 24, 2020
014159d
Add -DBOOST_ALL_DYN_LINK on MSVC
sunhantao Jul 28, 2020
91892e0
Merge branch 'master' into windows
sunhantao Aug 13, 2020
0b36273
Update INSTALL.bat
sunhantao Aug 13, 2020
0d4e714
Fix complication for boost v1.58
Aug 13, 2020
df512f7
Remove boost placeholders warning
sunhantao Aug 23, 2020
323542f
Merge branch 'master' into windows
sunhantao Oct 26, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,7 @@ bigbang.exe
bigbang-*
CMakeSettings.json

G*
G*

.vs/
out/
64 changes: 54 additions & 10 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,17 @@
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
#------------------------------------------------------------------------------

cmake_minimum_required(VERSION 3.5.1)
cmake_minimum_required(VERSION 3.10.2)

# vcpkg
if(DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "")
endif()

# CMP0074: If version >= 3.12, find_package(<PackageName>) will use <PackageName>_ROOT environment variables
if(${CMAKE_VERSION} VERSION_GREATER "3.12.0")
cmake_policy(SET CMP0074 NEW)
endif()

project(Bigbang LANGUAGES C CXX)

Expand Down Expand Up @@ -36,21 +46,23 @@ elseif(UNIX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED OFF)
set(CMAKE_CXX_EXTENSIONS OFF)

elseif(MSVC)
set(CMAKE_CXX_STANDARD 11)
else()
message(FATAL_ERROR "Unsupported plantform")
message(FATAL_ERROR "Unsupported platform")
endif()

# build type
if(CMAKE_BUILD_TYPE STREQUAL Debug)
if(UNIX)
string(APPEND CMAKE_CXX_FLAGS_DEBUG " -O0")
string(APPEND CMAKE_CXX_FLAGS_RELEASE " -O2 -DNDEBUG")
if(APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -rdynamic")
string(APPEND CMAKE_CXX_FLAGS_DEBUG " -rdynamic")
endif()
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
string(APPEND CMAKE_CXX_FLAGS_DEBUG " /Od")
string(APPEND CMAKE_CXX_FLAGS_RELEASE " /O2")
endif()

# warnings
Expand All @@ -59,6 +71,18 @@ if(UNIX AND NOT CYGWIN)
if (APPLE)
string(APPEND CMAKE_CXX_FLAGS " -fvisibility-inlines-hidden -fvisibility=hidden")
endif()
elseif(MSVC)
# C4018: 'expression' : signed/unsigned mismatch
# C4101: 'identifier' : unreferenced local variable
# C4244: 'argument' : conversion from 'type1' to 'type2', possible loss of data
# C4250: 'class1' : inherits 'class2::member' via dominance
# C4267: 'var' : conversion from 'size_t' to 'type', possible loss of data
# C4700: uninitialized local variable 'name' used (for va_list)
# C4804: 'operation' : unsafe use of type 'bool' in operation
# C4805: 'operation' : unsafe mix of type 'type' and type 'type' in operation
string(APPEND CMAKE_CXX_FLAGS " /WX /wd4018 /wd4101 /wd4244 /wd4250 /wd4267 /wd4700 /wd4804 /wd4805")
string(APPEND CMAKE_C_FLAGS " /WX /wd4244 /wd4267")
add_definitions("-D_CRT_SECURE_NO_WARNINGS")
endif()

# libs & linkings
Expand All @@ -74,9 +98,16 @@ if(UNIX AND NOT CYGWIN)
set(Boost_USE_STATIC_LIBS ON)
set(OPENSSL_USE_STATIC_LIBS ON)
set(sodium_USE_STATIC_LIBS ON)
set(Readline_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
set(Protobuf_USE_STATIC_LIBS ON)
set(Readline_USE_STATIC_LIBS ON)
else()
set(Boost_USE_STATIC_LIBS OFF)
set(OPENSSL_USE_STATIC_LIBS OFF)
set(sodium_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED OFF)
set(Protobuf_USE_STATIC_LIBS OFF)
set(Readline_USE_STATIC_LIBS OFF)
endif()

set(Boost_NO_BOOST_CMAKE ON)
Expand All @@ -96,8 +127,8 @@ find_package(Boost 1.58.0 REQUIRED COMPONENTS
)
find_package(OpenSSL 1.0.0 REQUIRED)
find_package(sodium 1.0.18 REQUIRED)
find_package(Readline 5.0 REQUIRED)
find_package(Protobuf 3.0.0 REQUIRED)
find_package(Readline 5.0 REQUIRED)

if(OPENSSL_VERSION VERSION_EQUAL 1.1.0 OR
(OPENSSL_VERSION VERSION_GREATER 1.1.0 AND OPENSSL_VERSION VERSION_LESS 1.2.0))
Expand All @@ -109,10 +140,23 @@ if(CYGWIN)
add_definitions(-DBOOST_CYGWIN_FS_PATH)
endif()

if(MSVC)
add_definitions(-D_WIN32_WINNT=0x0601)
add_definitions(-DBOOST_ALL_DYN_LINK)
add_definitions(-DBOOST_BIND_GLOBAL_PLACEHOLDERS)
endif()

if(TESTNET)
add_definitions(-DBIGBANG_TESTNET)
endif()

# include directories
include_directories(${Boost_INCLUDE_DIRS})
include_directories(${OpenSSL_INCLUDE_DIR})
include_directories(${sodium_INCLUDE_DIR})
include_directories(${Protobuf_INCLUDE_DIR})
include_directories(${Readline_INCLUDE_DIR})

# sub directories
add_subdirectory(src)
add_subdirectory(test)
85 changes: 62 additions & 23 deletions INSTALL.bat
Original file line number Diff line number Diff line change
@@ -1,32 +1,71 @@
echo "Not support source installation in WIN32"
REM @echo off
@echo off

REM set old_dir=%cd%
set old_dir=%cd%

REM cd %~dp0
cd %~dp0

REM REM delete build directory
REM rd /s /q build
REM del /f /q bigbang.exe
REM create build directory
if not exist build (
mkdir build
if "%errorlevel%" NEQ "0" goto end
)

REM REM create build directory
REM mkdir build
REM if "%errorlevel%"=="1" goto :end
REM go to build
cd build
if "%errorlevel%" NEQ "0" goto end

REM REM go to build
REM cd build
REM if "%errorlevel%"=="1" goto :end
REM cmake
set flagdebug="off"
if "%1%"=="debug" set flagdebug="on"
if "%2%"=="debug" set flagdebug="on"
if %flagdebug%=="on" (
set flagdebug="-DCMAKE_BUILD_TYPE=Debug"
) else (
set flagdebug="-DCMAKE_BUILD_TYPE=Release"
)

REM REM cmake
REM cmake .. -G "MinGW Makefiles"
REM if "%errorlevel%"=="1" goto :end
set flagtestnet="off"
if "%1%"=="testnet" set flagtestnet="on"
if "%2%"=="testnet" set flagtestnet="on"
if %flagtestnet%=="on" (
set flagtestnet="-DTESTNET=on"
) else (
set flagtestnet="-DTESTNET=off"
)

REM REM make
REM mingw32-make
REM if "%errorlevel%"=="1" goto :end
echo 'cmake .. -G "Ninja" %flagdebug% %flagtestnet%'
cmake .. -G "Ninja" %flagdebug% %flagtestnet%
if "%errorlevel%" NEQ "0" goto end

REM REM install
REM copy src\bigbang.exe ..\
REM make
ninja
if "%errorlevel%" NEQ "0" goto end

REM :end
REM cd %old_dir%
REM install
mkdir bin
copy src\bigbang\bigbang.exe bin\
copy src\bigbang\*.dll bin\

echo %%~dp0\bigbang.exe console %%* > bin\bigbang-cli.bat
echo %%~dp0\bigbang.exe -daemon %%* > bin\bigbang-server.bat

echo 'Installed to build\bin\'
echo ''
echo 'Usage:'
echo 'Run build\bin\bigbang.exe to launch bigbang'
echo 'Run build\bin\bigbang-cli.bat to launch bigbang RPC console'
echo 'Run build\bin\bigbang-server.bat to launch bigbang server on background'
echo 'Run build\test\test_big.exe to launch test program.'
echo 'Default `-datadir` is the same folder of bigbang.exe'

echo 'Installed to build\bin\'
echo ''
echo 'Usage:'
echo 'Run build\bin\bigbang.exe to launch bigbang'
echo 'Run build\bin\bigbang-console.bat to launch bigbang-console'
echo 'Run build\bin\bigbang-server.bat to launch bigbang server on background'
echo 'Run build\test\test_big.exe to launch test program.'

:end

cd %old_dir%
63 changes: 35 additions & 28 deletions cmake/FindReadline.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,27 @@
# Readline_LIBRARY The readline library.

if(Readline_USE_STATIC_LIBS)
set(_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
set(_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".lib")
endif()

if(UNIX AND NOT APPLE)
set(root_path "/opt/local/" "/usr/" "/usr/local/")
if(UNIX)
if(APPLE)
set(root_path "/usr/local/" "/usr/local/opt")
else()
set(root_path "/opt/local/" "/usr/" "/usr/local/")
endif()

FIND_PATH(Readline_ROOT_DIR
NAMES include/readline/readline.h
PATHS ${root_path}
PATH_SUFFIXES readline
NO_DEFAULT_PATH
)
else()
set(root_path "/usr/local/" "/usr/local/opt")
set(Readline_ROOT_DIR ${CMAKE_PREFIX_PATH})
endif()

FIND_PATH(Readline_ROOT_DIR
NAMES include/readline/readline.h
PATHS ${root_path}
PATH_SUFFIXES readline
NO_DEFAULT_PATH
)

FIND_PATH(Readline_INCLUDE_DIR
NAMES readline/readline.h
Expand All @@ -46,23 +51,25 @@ FIND_LIBRARY(Readline_LIBRARY
)

if(Readline_USE_STATIC_LIBS)
FIND_PATH(Ncurses_ROOT_DIR
NAMES include/ncurses.h
PATHS ${root_path}
PATH_SUFFIXES ncurses
NO_DEFAULT_PATH
)

FIND_LIBRARY(Ncurses_LIBRARY
NAMES tinfo termcap ncursesw ncurses cursesw curses
HINTS ${Ncurses_ROOT_DIR}/lib
)

if(NOT Ncurses_LIBRARY)
message(FATAL_ERROR "ncurses library not found")
endif()

set(Readline_LIBRARY ${Readline_LIBRARY} ${Ncurses_LIBRARY})
if(UNIX)
FIND_PATH(Ncurses_ROOT_DIR
NAMES include/ncurses.h
PATHS ${root_path}
PATH_SUFFIXES ncurses
NO_DEFAULT_PATH
)

FIND_LIBRARY(Ncurses_LIBRARY
NAMES tinfo termcap ncursesw ncurses cursesw curses
HINTS ${Ncurses_ROOT_DIR}/lib
)

if(NOT Ncurses_LIBRARY)
message(FATAL_ERROR "ncurses library not found")
endif()

set(Readline_LIBRARY ${Readline_LIBRARY} ${Ncurses_LIBRARY})
endif()
endif()

if (EXISTS "${Readline_INCLUDE_DIR}/readline/readline.h")
Expand Down
2 changes: 1 addition & 1 deletion doc/auto_rpc.md
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,7 @@ One param is a object, key is name and value is attributes.
In script/template/mode.json, there define help info of modes.
```json
{
"EModeType::SERVER": { // EModeType in src/mode/mode_type.h
"EModeType::MODE_SERVER": { // EModeType in src/mode/mode_type.h
"usage": "bigbang-server (OPTIONS)", // usage info
"desc": "Run bigbang server" // desc info
},
Expand Down
2 changes: 1 addition & 1 deletion script/auto_protocol.py
Original file line number Diff line number Diff line change
Expand Up @@ -1116,7 +1116,7 @@ def write_introduction(cmd, introduction, w, indent):
usage, desc = modes[mode]
w.write('if (type == ' + mode + ')\n')
indent = brace_begin(w, indent)
if mode != 'EModeType::CONSOLE':
if mode != 'EModeType::MODE_CONSOLE':
write_usage(usage, w, indent)
write_desc(desc, w, indent)
write_options(w, indent)
Expand Down
24 changes: 12 additions & 12 deletions script/template/mode.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
{
"EModeType::SERVER": {
"usage": "bigbang-server (OPTIONS)",
"desc": "Run bigbang server"
},
"EModeType::CONSOLE": {
"usage": "bigbang-cli (OPTIONS) COMMAND",
"desc": "Run bigbang RPC client"
},
"EModeType::MINER": {
"usage": "bigbang-miner (OPTIONS)",
"desc": "Run bigbang miner"
}
"EModeType::MODE_SERVER": {
"usage": "bigbang-server (OPTIONS)",
"desc": "Run bigbang server"
},
"EModeType::MODE_CONSOLE": {
"usage": "bigbang-cli (OPTIONS) COMMAND",
"desc": "Run bigbang RPC client"
},
"EModeType::MODE_MINER": {
"usage": "bigbang-miner (OPTIONS)",
"desc": "Run bigbang miner"
}
}
Loading