Build jsoncpp from source using jsoncpp.cmake script

This commit is contained in:
Paweł Bylica 2016-10-20 11:58:25 +02:00 committed by Alex Beregszaszi
parent 5875890576
commit 4bde0a2d36
12 changed files with 10 additions and 112 deletions

View File

@ -138,7 +138,6 @@ cache:
- cryptopp
- boost_1_57_0
- build
- jsoncpp
install:
- test $TRAVIS_INSTALL_DEPS != On || ./scripts/install_deps.sh
@ -164,7 +163,7 @@ script:
# in Solidity's RPC setup and some will be in 'eth'. It seems unlikely that Solidity
# itself is broken from the failure messages which we are seeing.
#
# More details on known issues at https://github.com/ethereum/solidity/issues/769
# More details on known issues at https://github.com/ethereum/solidity/issues/769
- test $TRAVIS_TESTS != On || (cd $TRAVIS_BUILD_DIR && (./scripts/tests.sh || ./scripts/tests.sh || ./scripts/tests.sh) )
env:
global:

View File

@ -13,6 +13,7 @@ project(solidity VERSION ${PROJECT_VERSION})
# Let's find our dependencies
include(EthDependencies)
include(deps/jsoncpp.cmake)
# Figure out what compiler and system are we using
include(EthCompilerSettings)

View File

@ -1,50 +0,0 @@
# Find jsoncpp
#
# Find the jsoncpp includes and library
#
# if you nee to add a custom library search path, do it via via CMAKE_PREFIX_PATH
#
# This module defines
# JSONCPP_INCLUDE_DIRS, where to find header, etc.
# JSONCPP_LIBRARIES, the libraries needed to use jsoncpp.
# JSONCPP_FOUND, If false, do not try to use jsoncpp.
# only look in default directories
find_path(
JSONCPP_INCLUDE_DIR
NAMES json/json.h
PATH_SUFFIXES jsoncpp
DOC "jsoncpp include dir"
)
find_library(
JSONCPP_LIBRARY
NAMES jsoncpp
DOC "jsoncpp library"
)
set(JSONCPP_INCLUDE_DIRS ${JSONCPP_INCLUDE_DIR})
set(JSONCPP_LIBRARIES ${JSONCPP_LIBRARY})
# debug library on windows
# same naming convention as in qt (appending debug library with d)
# boost is using the same "hack" as us with "optimized" and "debug"
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
find_library(
JSONCPP_LIBRARY_DEBUG
NAMES jsoncppd
DOC "jsoncpp debug library"
)
set(JSONCPP_LIBRARIES optimized ${JSONCPP_LIBRARIES} debug ${JSONCPP_LIBRARY_DEBUG})
endif()
# handle the QUIETLY and REQUIRED arguments and set JSONCPP_FOUND to TRUE
# if all listed variables are TRUE, hide their existence from configuration view
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(jsoncpp DEFAULT_MSG
JSONCPP_LIBRARY JSONCPP_INCLUDE_DIR)
mark_as_advanced (JSONCPP_INCLUDE_DIR JSONCPP_LIBRARY)

View File

@ -1,10 +0,0 @@
function(eth_apply TARGET REQUIRED)
find_package (Jsoncpp 0.60)
eth_show_dependency(JSONCPP JsonCpp)
if (JSONCPP_FOUND)
target_include_directories(${TARGET} SYSTEM BEFORE PUBLIC ${JSONCPP_INCLUDE_DIRS})
target_link_libraries(${TARGET} ${JSONCPP_LIBRARIES})
elseif (NOT ${REQUIRED} STREQUAL "OPTIONAL")
message(FATAL_ERROR "Jsoncpp library not found")
endif()
endfunction()

View File

@ -15,8 +15,7 @@ function(eth_apply TARGET REQUIRED SUBMODULE)
target_include_directories(${TARGET} PUBLIC ${Solidity_INCLUDE_DIRS})
if (${SUBMODULE} STREQUAL "solevmasm")
eth_use(${TARGET} ${REQUIRED} Jsoncpp)
target_link_libraries(${TARGET} ${Solidity_SOLEVMASM_LIBRARIES})
target_link_libraries(${TARGET} ${Solidity_SOLEVMASM_LIBRARIES} jsoncpp)
endif()
if (${SUBMODULE} STREQUAL "lll")

2
deps

@ -1 +1 @@
Subproject commit f2ede70f33633b26a27299ff39995914db2c6923
Subproject commit ff0c567cc0fd57049b5c29c3b3428097e6ca4644

View File

@ -8,6 +8,7 @@ file(GLOB HEADERS "*.h")
include_directories(BEFORE ..)
add_library(${EXECUTABLE} ${SRC_LIST} ${HEADERS})
eth_use(${EXECUTABLE} REQUIRED Jsoncpp Dev::soldevcore)
eth_use(${EXECUTABLE} REQUIRED Dev::soldevcore)
target_link_libraries(${EXECUTABLE} jsoncpp)
install( TARGETS ${EXECUTABLE} RUNTIME DESTINATION bin ARCHIVE DESTINATION lib LIBRARY DESTINATION lib )

View File

@ -5,9 +5,6 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSTATICLIB")
aux_source_directory(. SRC_LIST)
#include_directories(BEFORE ${JSONCPP_INCLUDE_DIRS})
#include_directories(${Boost_INCLUDE_DIRS})
set(EXECUTABLE lll)
file(GLOB HEADERS "*.h")

View File

@ -105,7 +105,6 @@ case $(uname -s) in
brew install boost
brew install cmake
brew install jsoncpp
# We should really 'brew install' our eth client here, but at the time of writing
# the bottle is known broken, so we will just cheat and use a hardcoded ZIP for
@ -164,7 +163,7 @@ case $(uname -s) in
# See https://pkgs.alpinelinux.org/
apk update
apk add boost-dev build-base cmake jsoncpp-dev
apk add boost-dev build-base cmake
;;
@ -219,7 +218,6 @@ case $(uname -s) in
gcc \
git \
libboost-all-dev \
libjsoncpp-dev \
unzip
;;
@ -321,8 +319,7 @@ case $(uname -s) in
build-essential \
cmake \
git \
libboost-all-dev \
libjsoncpp-dev
libboost-all-dev
# Install 'eth', for use in the Solidity Tests-over-IPC.
sudo add-apt-repository -y ppa:ethereum/ethereum
@ -363,9 +360,6 @@ case $(uname -s) in
sudo yum -y remove boost-devel
sudo wget http://repo.enetres.net/enetres.repo -O /etc/yum.repos.d/enetres.repo
sudo yum install boost-devel
# And finally jsoncpp
sudo yum -y install jsoncpp-devel
else
echo "Aborted CentOS Solidity Dependency Installation";
exit 1

View File

@ -76,21 +76,6 @@ cp /tmp/${packagename}_${debversion}.orig.tar.gz ../
# Create debian package information
case $distribution in
trusty)
jsoncpplib=libjsoncpp0
;;
vivid)
jsoncpplib=libjsoncpp0
;;
wily)
jsoncpplib=libjsoncpp0v5
;;
*)
jsoncpplib=libjsoncpp1
;;
esac
mkdir debian
echo 9 > debian/compat
cat <<EOF > debian/control
@ -107,8 +92,7 @@ Build-Depends: debhelper (>= 9.0.0),
libboost-all-dev,
automake,
libtool,
scons,
libjsoncpp-dev
scons
Standards-Version: 3.9.5
Homepage: https://ethereum.org
Vcs-Git: git://github.com/ethereum/solidity.git
@ -117,7 +101,7 @@ Vcs-Browser: https://github.com/ethereum/solidity
Package: solc
Architecture: any-i386 any-amd64
Multi-Arch: same
Depends: \${shlibs:Depends}, \${misc:Depends}, $jsoncpplib
Depends: \${shlibs:Depends}, \${misc:Depends}
Replaces: lllc (<< 1:0.3.6)
Conflicts: libethereum (<= 1.2.9)
Description: Solidity compiler.

View File

@ -52,20 +52,6 @@ rm -rf .git
)
echo -en 'travis_fold:end:compiling_cryptopp\\r'
# Json-CPP
echo -en 'travis_fold:start:compiling_jsoncpp\\r'
cd "$WORKSPACE/jsoncpp"
# if .git exists, it is a fresh checkout, otherwise it comes from the cache
# and is already compiled
test -e .git && (
emcmake cmake -DJSONCPP_LIB_BUILD_STATIC=ON -DJSONCPP_LIB_BUILD_SHARED=OFF \
-DJSONCPP_WITH_TESTS=OFF -DJSONCPP_WITH_POST_BUILD_UNITTEST=OFF \
-G "Unix Makefiles" .
emmake make -j 4
rm -rf .git
)
echo -en 'travis_fold:end:compiling_jsoncpp\\r'
# Boost
echo -en 'travis_fold:start:compiling_boost\\r'
cd "$WORKSPACE"/boost_1_57_0
@ -112,8 +98,6 @@ emcmake cmake \
-DBoost_THREAD_LIBRARIES="$WORKSPACE"/boost_1_57_0/libboost_thread.a \
-DBoost_UNIT_TEST_FRAMEWORK_LIBRARY="$WORKSPACE"/boost_1_57_0/libboost_unit_test_framework.a \
-DBoost_UNIT_TEST_FRAMEWORK_LIBRARIES="$WORKSPACE"/boost_1_57_0/libboost_unit_test_framework.a \
-DJSONCPP_LIBRARY="$WORKSPACE"/jsoncpp/src/lib_json/libjsoncpp.a \
-DJSONCPP_INCLUDE_DIR="$WORKSPACE"/jsoncpp/include/ \
-DCRYPTOPP_LIBRARY="$WORKSPACE"/cryptopp/src/libcryptlib.a \
-DCRYPTOPP_INCLUDE_DIR="$WORKSPACE"/cryptopp/src/ \
-DDev_DEVCORE_LIBRARY="$WORKSPACE"/solidity/build/libdevcore/libsoldevcore.a \

View File

@ -31,7 +31,6 @@ set -ev
echo -en 'travis_fold:start:installing_dependencies\\r'
test -e cryptopp -a -e cryptopp/src || git clone https://github.com/mmoss/cryptopp.git
test -e jsoncpp -a -e jsoncpp/include || git clone https://github.com/open-source-parsers/jsoncpp.git
test -e boost_1_57_0 -a -e boost_1_57_0/boost || (
wget 'http://downloads.sourceforge.net/project/boost/boost/'\
'1.57.0/boost_1_57_0.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2F'\