solidity/cmake/FindSolidity.cmake

48 lines
1.0 KiB
CMake
Raw Normal View History

Make the Solidity repository standalone. This commit is the culmination of several months of work to decouple Solidity from the webthree-umbrella so that it can be developed in parallel with cpp-ethereum (the Ethereum C++ runtime) and so that even for the Solidity unit-tests there is no hard-dependency onto the C++ runtime. The Tests-over-IPC refactoring was a major step in the same process which was already committed. This commit contains the following changes: - A subset of the CMake functionality in webthree-helpers was extracted and tailored for Solidity into ./cmake. Further cleanup is certainly possible. - A subset of the libdevcore functionality in libweb3core was extracted and tailored for Solidity into ./libdevcore. Further cleanup is certainly possible - The gas price constants in EVMSchedule were orphaned into libevmasm. - Some other refactorings and cleanups were made to sever unnecessary EVM dependencies in the Solidity unit-tests. - TravisCI and Appveyor support was added, covering builds and running of the unit-tests (Linux and macOS only for now) - A bug-fix was made to get the Tests-over-IPC running on macOS. - There are still reliability issues in the unit-tests, which need immediate attention. The Travis build has been flipped to run the unit-tests 5 times, to try to flush these out. - The Emscripten automation which was previously in webthree-umbrella was merged into the TravisCI automation here. - The development ZIP deployment step has been commented out, but we will want to read that ONLY for release branch. Further iteration on these changes will definitely be needed, but I feel these have got to sufficient maturity than holding them back further isn't winning us anything. It is go time :-)
2016-08-01 05:25:37 +00:00
# Find Solidity
#
# Find the solidity includes and library
#
# This module defines
# Solidity_XXX_LIBRARIES, the libraries needed to use solidity.
# SOLIDITY_INCLUDE_DIRS
include(EthUtils)
set(LIBS solidity;lll;evmasm)
set(Solidity_INCLUDE_DIRS "${SOL_DIR}")
# if the project is a subset of main cpp-ethereum project
# use same pattern for variables as Boost uses
if ((DEFINED solidity_VERSION) OR (DEFINED cpp-ethereum_VERSION))
foreach (l ${LIBS})
string(TOUPPER ${l} L)
set ("Solidity_${L}_LIBRARIES" ${l})
endforeach()
else()
foreach (l ${LIBS})
string(TOUPPER ${l} L)
find_library(Solidity_${L}_LIBRARY
NAMES ${l}
PATHS ${CMAKE_LIBRARY_PATH}
PATH_SUFFIXES "lib${l}" "${l}" "lib${l}/Debug" "lib${l}/Release"
NO_DEFAULT_PATH
)
set(Solidity_${L}_LIBRARIES ${Solidity_${L}_LIBRARY})
if (DEFINED MSVC)
find_library(Solidity_${L}_LIBRARY_DEBUG
NAMES ${l}
PATHS ${CMAKE_LIBRARY_PATH}
PATH_SUFFIXES "lib${l}/Debug"
NO_DEFAULT_PATH
)
eth_check_library_link(Solidity_${L})
endif()
endforeach()
endif()