Skip to content

Commit

Permalink
Merge pull request ethereum#2802 from ethereum/develop
Browse files Browse the repository at this point in the history
Merge develop into release for 0.4.16
  • Loading branch information
chriseth authored Aug 24, 2017
2 parents bbb8e64 + dd67e59 commit d7661dd
Show file tree
Hide file tree
Showing 137 changed files with 5,297 additions and 1,886 deletions.
9 changes: 5 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,20 @@ include(EthPolicy)
eth_policy()

# project name and version should be set after cmake_policy CMP0048
set(PROJECT_VERSION "0.4.15")
set(PROJECT_VERSION "0.4.16")
project(solidity VERSION ${PROJECT_VERSION})

option(SOLC_LINK_STATIC "Link solc executable statically on supported platforms" OFF)

# Let's find our dependencies
include(EthDependencies)
include(deps/jsoncpp.cmake)

find_package(Threads)

# Figure out what compiler and system are we using
include(EthCompilerSettings)

# Include helper macros
include(EthExecutableHelper)

# Include utils
include(EthUtils)

Expand Down
30 changes: 30 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,33 @@
### 0.4.16 (2017-08-24)

Features:
* ABI JSON: Include new field ``stateMutability`` with values ``pure``, ``view``,
``nonpayable`` and ``payable``.
* Analyzer: Experimental partial support for Z3 SMT checker ("SMTChecker").
* Build System: Shared libraries (``libdevcore``, ``libevmasm``, ``libsolidity``
and ``liblll``) are no longer produced during the build process.
* Code generator: Experimental new implementation of ABI encoder that can
encode arbitrarily nested arrays ("ABIEncoderV2")
* Metadata: Store experimental flag in metadata CBOR.
* Parser: Display previous visibility specifier in error if multiple are found.
* Parser: Introduce ``pure`` and ``view`` keyword for functions,
``constant`` remains an alias for ``view`` and pureness is not enforced yet,
so use with care.
* Static Analyzer: Warn about large storage structures.
* Syntax Checker: Support ``pragma experimental <feature>;`` to turn on
experimental features.
* Type Checker: More detailed error message for invalid overrides.
* Type Checker: Warn about shifting a literal.

Bugfixes:
* Assembly Parser: Be more strict about number literals.
* Assembly Parser: Limit maximum recursion depth.
* Parser: Enforce commas between array and tuple elements.
* Parser: Limit maximum recursion depth.
* Type Checker: Crash fix related to ``using``.
* Type Checker: Disallow constructors in libraries.
* Type Checker: Reject the creation of interface contracts using the ``new`` statement.

### 0.4.15 (2017-08-08)

Features:
Expand Down
10 changes: 10 additions & 0 deletions circle.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
version: 2
jobs:
build:
branches:
ignore:
- /.*/
docker:
- image: trzeci/emscripten:sdk-tag-1.37.18-64bit
steps:
- checkout
161 changes: 0 additions & 161 deletions cmake/CMakeParseArguments.cmake

This file was deleted.

65 changes: 12 additions & 53 deletions cmake/EthCompilerSettings.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,18 @@ if(CCACHE_FOUND)
message("Using ccache")
endif(CCACHE_FOUND)

include(CheckCXXCompilerFlag)

check_cxx_compiler_flag(-fstack-protector-strong have_stack_protector_strong)
if (have_stack_protector_strong)
add_compile_options(-fstack-protector-strong)
else()
check_cxx_compiler_flag(-fstack-protector have_stack_protector)
if(have_stack_protector)
add_compile_options(-fstack-protector)
endif()
endif()

if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang"))

# Use ISO C++11 standard language.
Expand Down Expand Up @@ -63,13 +75,6 @@ if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MA
# Applying -fpermissive to a C command-line (ie. secp256k1) gives a build error.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")

# Build everything as shared libraries (.so files)
add_definitions(-DSHAREDLIB)

# If supported for the target machine, emit position-independent code, suitable for dynamic
# linking and avoiding any limit on the size of the global offset table.
add_compile_options(-fPIC)

# Configuration-specific compiler settings.
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -DETH_DEBUG")
set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG")
Expand All @@ -86,14 +91,6 @@ if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MA
message(FATAL_ERROR "${PROJECT_NAME} requires g++ 4.7 or greater.")
endif ()

# Strong stack protection was only added in GCC 4.9.
# Use it if we have the option to do so.
# See https://lwn.net/Articles/584225/
if (GCC_VERSION VERSION_GREATER 4.9 OR GCC_VERSION VERSION_EQUAL 4.9)
add_compile_options(-fstack-protector-strong)
add_compile_options(-fstack-protector)
endif()

# Until https://github.com/ethereum/solidity/issues/2479 is handled
# disable all implicit fallthrough warnings in the codebase for GCC > 7.0
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0)
Expand All @@ -103,31 +100,6 @@ if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MA
# Additional Clang-specific compiler settings.
elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")

add_compile_options(-fstack-protector)

# Enable strong stack protection only on Mac and only for OS X Yosemite
# or newer (AppleClang 7.0+). We should be able to re-enable this setting
# on non-Apple Clang as well, if we can work out what expression to use for
# the version detection.

# The fact that the version-reporting for AppleClang loses the original
# Clang versioning is rather annoying. Ideally we could just have
# a single cross-platform "if version >= 3.4.1" check.
#
# There is debug text in the else clause below, to help us work out what
# such an expression should be, if we can get this running on a Trusty box
# with Clang. Greg Colvin previously replicated the issue there too.
#
# See https://github.com/ethereum/webthree-umbrella/issues/594

if (APPLE)
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0 OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0)
add_compile_options(-fstack-protector-strong)
endif()
else()
message(WARNING "CMAKE_CXX_COMPILER_VERSION = ${CMAKE_CXX_COMPILER_VERSION}")
endif()

# A couple of extra warnings suppressions which we seemingly
# need when building with Clang.
#
Expand Down Expand Up @@ -198,7 +170,6 @@ elseif (DEFINED MSVC)
add_compile_options(/wd4800) # disable forcing value to bool 'true' or 'false' (performance warning) (4800)
add_compile_options(-D_WIN32_WINNT=0x0600) # declare Windows Vista API requirement
add_compile_options(-DNOMINMAX) # undefine windows.h MAX && MIN macros cause it cause conflicts with std::min && std::max functions
add_compile_options(-DMINIUPNP_STATICLIB) # define miniupnp static library

# Always use Release variant of C++ runtime.
# We don't want to provide Debug variants of all dependencies. Some default
Expand All @@ -218,12 +189,6 @@ elseif (DEFINED MSVC)
# stack size 16MB
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /ignore:4099,4075 /STACK:16777216")

# windows likes static
if (NOT ETH_STATIC)
message("Forcing static linkage for MSVC.")
set(ETH_STATIC 1)
endif ()

# If you don't have GCC, Clang or VC++ then you are on your own. Good luck!
else ()
message(WARNING "Your compiler is not tested, if you run into any issues, we'd welcome any patches.")
Expand Down Expand Up @@ -262,9 +227,3 @@ if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MA
endif ()
endif ()
endif ()

if(ETH_STATIC)
set(BUILD_SHARED_LIBS OFF)
else()
set(BUILD_SHARED_LIBS ON)
endif(ETH_STATIC)
Loading

0 comments on commit d7661dd

Please sign in to comment.