solidity/cmake/EthOptions.cmake

41 lines
1.5 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
macro(configure_project)
set(NAME ${PROJECT_NAME})
# features
eth_default_option(PROFILING OFF)
# components
eth_default_option(TESTS ON)
eth_default_option(TOOLS ON)
# Define a matching property name of each of the "features".
foreach(FEATURE ${ARGN})
set(SUPPORT_${FEATURE} TRUE)
endforeach()
include(EthBuildInfo)
create_build_info(${NAME})
print_config(${NAME})
endmacro()
macro(print_config NAME)
message("")
message("------------------------------------------------------------------------")
message("-- Configuring ${NAME}")
message("------------------------------------------------------------------------")
message("-- CMake Version ${CMAKE_VERSION}")
message("-- CMAKE_BUILD_TYPE Build type ${CMAKE_BUILD_TYPE}")
message("-- TARGET_PLATFORM Target platform ${CMAKE_SYSTEM_NAME}")
message("--------------------------------------------------------------- features")
message("-- PROFILING Profiling support ${PROFILING}")
message("------------------------------------------------------------- components")
if (SUPPORT_TESTS)
message("-- TESTS Build tests ${TESTS}")
endif()
if (SUPPORT_TOOLS)
message("-- TOOLS Build tools ${TOOLS}")
endif()
message("------------------------------------------------------------------------")
message("")
endmacro()