diff --git a/CMakeLists.txt b/CMakeLists.txt index d317b77bf..17c8a620a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,11 +14,6 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") # user defined, defaults # Normally, set(...CACHE...) creates cache variables, but does not modify them. function(createDefaultCacheConfig) - if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - set(DECENT_PLATFORM OFF) - else () - set(DECENT_PLATFORM ON) - endif () set(VMTRACE OFF CACHE BOOL "VM tracing and run-time checks (useful for cross-implementation VM debugging)") set(PARANOIA OFF CACHE BOOL "Additional run-time checks") set(JSONRPC ON CACHE BOOL "Build with jsonprc. default on") @@ -26,11 +21,11 @@ function(createDefaultCacheConfig) set(USENPM OFF CACHE BOOL "Use npm to recompile ethereum.js if it was changed") set(PROFILING OFF CACHE BOOL "Build in support for profiling") - set(BUNDLE "full" CACHE STRING "Predefined bundle of software to build.") + set(BUNDLE "none" CACHE STRING "Predefined bundle of software to build (none, full, user, tests, minimal).") set(SOLIDITY ON CACHE BOOL "Build the Solidity language components") - set(SERPENT ${DECENT_PLATFORM} CACHE BOOL "Build the Serpent language components") + set(SERPENT ON CACHE BOOL "Build the Serpent language components") set(TOOLS ON CACHE BOOL "Build the tools components") - set(NCURSES ${DECENT_PLATFORM} CACHE BOOL "Build the NCurses components") + set(NCURSES ON CACHE BOOL "Build the NCurses components") set(GUI ON CACHE BOOL "Build GUI components (AlethZero, Mix)") set(TESTS ON CACHE BOOL "Build the tests.") set(EVMJIT OFF CACHE BOOL "Build just-in-time compiler for EVM code (requires LLVM)") @@ -146,6 +141,12 @@ set (ETH_HAVE_WEBENGINE 1) # Normalise build options # TODO: Abstract into something sensible and move into a function. +if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") + set(DECENT_PLATFORM OFF) +else () + set(DECENT_PLATFORM ON) +endif () + if (PARANOIA) set(PARANOIA ON) else () @@ -224,31 +225,35 @@ if (BUNDLE STREQUAL "minimal") set(SOLIDITY OFF) set(USENPM OFF) set(GUI OFF) - set(TESTS OFF) + set(NCURSES OFF) set(TOOLS ON) + set(TESTS OFF) elseif (BUNDLE STREQUAL "full") set(SERPENT ON) set(SOLIDITY ON) set(USENPM ON) set(GUI ON) - set(TESTS ON) + set(NCURSES ${DECENT_PLATFORM}) set(TOOLS ON) + set(TESTS ON) set(FATDB ON) elseif (BUNDLE STREQUAL "tests") set(SERPENT ON) set(SOLIDITY ON) set(USENPM OFF) set(GUI OFF) - set(TESTS ON) + set(NCURSES OFF) set(TOOLS OFF) + set(TESTS ON) set(FATDB ON) elseif (BUNDLE STREQUAL "user") set(SERPENT OFF) set(SOLIDITY OFF) set(USENPM OFF) set(GUI ON) - set(TESTS OFF) + set(NCURSES ${DECENT_PLATFORM}) set(TOOLS ON) + set(TESTS OFF) endif () # Default CMAKE_BUILD_TYPE to "Release". @@ -263,28 +268,29 @@ if ("x${TARGET_PLATFORM}" STREQUAL "x") set(TARGET_PLATFORM "linux") endif () -message("------------------------------------------------------------------------") -message("-- CMake Version ${CMAKE_VERSION}") -message("-- Build type CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE}") -message("-- Target platform TARGET_PLATFORM ${TARGET_PLATFORM}") -message("-- Build bundle BUNDLE ${BUNDLE}") -message("------------------------------------------------------------------------ features") -message("-- Chromium support [auto-detected] ${ETH_HAVE_WEBENGINE}") -message("-- VM execution tracing VMTRACE ${VMTRACE}") -message("-- Profiling support PROFILING ${PROFILING}") -message("-- Additional (SLOW) database checking PARANOIA ${PARANOIA}") -message("-- Full database exploring FATDB ${FATDB}") -message("-- JSON-RPC support JSONRPC ${JSONRPC}") -message("-- Javascript source building USENPM ${USENPM}") -message("------------------------------------------------------------------------ components") -message("-- Build GUI components GUI ${GUI}") -message("-- Build NCurses components NCURSES ${NCURSES}") -message("-- Build tests TESTS ${TESTS}") -message("-- Build Solidity language components SOLIDITY ${SOLIDITY}") -message("-- Build Serpent language components SERPENT ${SERPENT}") -message("-- Build OpenCL components (experimental!) ETHASHCL ${ETHASHCL}") -message("-- Build LLVM-based JIT EVM (experimental!) EVMJIT ${EVMJIT}") -message("------------------------------------------------------------------------") +message("-----------------------------------------------------------------------------") +message("-- CMake Version ${CMAKE_VERSION}") +message("-- CMAKE_BUILD_TYPE Build type ${CMAKE_BUILD_TYPE}") +message("-- TARGET_PLATFORM Target platform ${TARGET_PLATFORM}") +message("-- BUNDLE Build bundle ${BUNDLE}") +message("-------------------------------------------------------------------- features") +message("-- Chromium support ${ETH_HAVE_WEBENGINE}") +message("-- VMTRACE VM execution tracing ${VMTRACE}") +message("-- PROFILING Profiling support ${PROFILING}") +message("-- PARANOIA Additional (SLOW) database checking ${PARANOIA}") +message("-- FATDB Full database exploring ${FATDB}") +message("-- JSONRPC JSON-RPC support ${JSONRPC}") +message("-- USENPM Javascript source building ${USENPM}") +message("------------------------------------------------------------------ components") +message("-- TOOLS Build basic tools ${TOOLS}") +message("-- SOLIDITY Build Solidity language components ${SOLIDITY}") +message("-- SERPENT Build Serpent language components ${SERPENT}") +message("-- GUI Build GUI components ${GUI}") +message("-- NCURSES Build NCurses components ${NCURSES}") +message("-- TESTS Build tests ${TESTS}") +message("-- ETHASHCL Build OpenCL components (experimental!) ${ETHASHCL}") +message("-- EVMJIT Build LLVM-based JIT EVM (experimental!) ${EVMJIT}") +message("-----------------------------------------------------------------------------") message("")