Skip to content

Commit

Permalink
evmc-12.1.0 (WIP)
Browse files Browse the repository at this point in the history
  • Loading branch information
fd00 committed Feb 10, 2025
1 parent f6e82b4 commit dbbf2c6
Show file tree
Hide file tree
Showing 4 changed files with 183 additions and 89 deletions.
30 changes: 19 additions & 11 deletions evmc/README
Original file line number Diff line number Diff line change
Expand Up @@ -6,46 +6,51 @@ Client-side it defines the interface for EVM implementations to access Ethereum
environment and state.

Runtime requirements:
cygwin-3.6.0-0.203.gf78009cb1ccf
libevmc12-12.0.0-1bl1
cygwin-3.5.7-1
libevmc12-12.1.0-1bl1
libgcc1-12.4.0-3
libgtest0-1.15.2-1bl1
libstdc++6-12.4.0-3

Build requirements:
(besides corresponding -devel packages)
binutils-2.43.1-1
CLI11-2.4.2-1bl1
binutils-2.44-1
cmake-3.28.3-1
cygport-0.36.9-1
gcc-core-12.4.0-3
gcc-g++-12.4.0-3
ninja-1.12.0-1
libgtest-devel-1.15.2-1bl1
ninja-1.12.1-1

Canonical website:
https://github.com/ethereum/evmc

Canonical download:
https://github.com/ethereum/evmc/archive/refs/tags/v12.0.0.tar.gz
https://github.com/ethereum/evmc/archive/refs/tags/v12.1.0.tar.gz

-------------------------------------------

Build instructions:
1. unpack evmc-12.0.0-X-src.tar.xz
1. unpack evmc-12.1.0-X-src.tar.xz
2. if you use setup to install this src package,
it will be unpacked under /usr/src automatically
% cd /usr/src
% cygport ./evmc-12.0.0-X.cygport all
% cygport ./evmc-12.1.0-X.cygport all

This will create:
/usr/src/evmc-12.0.0-X-src.tar.xz
/usr/src/evmc-12.0.0-X.tar.xz
/usr/src/libevmc12-12.0.0-X.tar.xz
/usr/src/libevmc-devel-12.0.0-X.tar.xz
/usr/src/evmc-12.1.0-X-src.tar.xz
/usr/src/evmc-12.1.0-X.tar.xz
/usr/src/libevmc12-12.1.0-X.tar.xz
/usr/src/libevmc-devel-12.1.0-X.tar.xz

-------------------------------------------

Files included in the binary package:

(evmc)
/usr/bin/evmc-vmtester.exe
/usr/bin/evmc.exe
/usr/share/doc/Cygwin/evmc.README
/usr/share/doc/evmc/AUTHORS.md
/usr/share/doc/evmc/CHANGELOG.md
Expand Down Expand Up @@ -87,6 +92,9 @@ Files included in the binary package:

Port Notes:

----- version 12.1.0-1bl1 -----
Version bump.

----- version 12.0.0-1bl1 -----
Version bump.

Expand Down
73 changes: 0 additions & 73 deletions evmc/evmc-12.0.0-1bl1.src.patch

This file was deleted.

24 changes: 19 additions & 5 deletions evmc/evmc-12.0.0-1bl1.cygport → evmc/evmc-12.1.0-1bl1.cygport
Original file line number Diff line number Diff line change
Expand Up @@ -12,34 +12,48 @@ LICENSE="Apache-2.0"
LICENSE_SPDX="SPDX-License-Identifier: Apache-2.0"
LICENSE_URI="LICENSE"

BUILD_REQUIRES="CLI11 libgtest-devel"

export CPPFLAGS="${CPPFLAGS} -D_GNU_SOURCE"

inherit cmake

CYGCMAKE_ARGS="
-DEVMC_TESTING:BOOL=ON
-DEVMC_TOOLS:BOOL=ON
-DHUNTER_ENABLED:BOOL=OFF
-DSOVERSION:STRING=${PV[1]}
"

# -DEVMC_TESTING:OFF : Unknown CMake command "hunter_add_package"

DOCS="
CHANGELOG.md
docs/*.md
"

PKG_IGNORE="
usr/bin/cygexample-precompiles-vm.dll
usr/bin/cygexample-vm.dll
usr/lib/libexample-precompiles-vm.dll.a
usr/lib/libexample-vm.dll.a
"

PKG_NAMES="
evmc
libevmc${PV[1]}
libevmc-devel
"
evmc_CONTENTS="
usr/bin/*.exe
usr/share
"
libevmc12_CONTENTS="
usr/bin/cyg*-12.dll
usr/bin/cygevmc-*-12.dll
"
libevmc_devel_CONTENTS="
usr/include
usr/lib
usr/lib/cmake
usr/lib/libevmc-*.dll.a
"
evmc_SUMMARY="${SUMMARY} (licensing & readmes)"
evmc_SUMMARY="${SUMMARY} (utilities)"
libevmc12_SUMMARY="${SUMMARY} (runtime)"
libevmc_devel_SUMMARY="${SUMMARY} (development)"
145 changes: 145 additions & 0 deletions evmc/evmc-12.1.0-1bl1.src.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
--- origsrc/evmc-12.1.0/lib/instructions/CMakeLists.txt 2025-02-07 20:57:01.000000000 +0900
+++ src/evmc-12.1.0/lib/instructions/CMakeLists.txt 2025-02-10 16:52:45.531885100 +0900
@@ -3,7 +3,7 @@
# Licensed under the Apache License, Version 2.0.

add_library(
- instructions STATIC
+ instructions SHARED
${EVMC_INCLUDE_DIR}/evmc/instructions.h
instruction_metrics.c
instruction_names.c
@@ -18,6 +18,10 @@ target_include_directories(instructions
$<BUILD_INTERFACE:${EVMC_INCLUDE_DIR}>$<INSTALL_INTERFACE:include>
)

+if (DEFINED SOVERSION)
+ set_target_properties(instructions PROPERTIES SOVERSION "${SOVERSION}")
+endif()
+
if(EVMC_INSTALL)
- install(TARGETS instructions EXPORT evmcTargets DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ install(TARGETS instructions EXPORT evmcTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
--- origsrc/evmc-12.1.0/lib/loader/CMakeLists.txt 2025-02-07 20:57:01.000000000 +0900
+++ src/evmc-12.1.0/lib/loader/CMakeLists.txt 2025-02-10 16:52:45.531885100 +0900
@@ -3,7 +3,7 @@
# Licensed under the Apache License, Version 2.0.

add_library(
- loader STATIC
+ loader SHARED
${EVMC_INCLUDE_DIR}/evmc/loader.h
loader.c
)
@@ -15,6 +15,10 @@ set_target_properties(loader PROPERTIES
)
target_link_libraries(loader INTERFACE ${CMAKE_DL_LIBS} PUBLIC evmc::evmc)

+if (DEFINED SOVERSION)
+ set_target_properties(loader PROPERTIES SOVERSION "${SOVERSION}")
+endif()
+
if(EVMC_INSTALL)
- install(TARGETS loader EXPORT evmcTargets DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ install(TARGETS loader EXPORT evmcTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
--- origsrc/evmc-12.1.0/lib/tooling/CMakeLists.txt 2025-02-07 20:57:01.000000000 +0900
+++ src/evmc-12.1.0/lib/tooling/CMakeLists.txt 2025-02-10 16:52:45.547510900 +0900
@@ -2,7 +2,7 @@
# Copyright 2021 The EVMC Authors.
# Licensed under the Apache License, Version 2.0.

-add_library(tooling STATIC)
+add_library(tooling SHARED)
add_library(evmc::tooling ALIAS tooling)
target_compile_features(tooling PUBLIC cxx_std_17)
target_link_libraries(tooling PUBLIC evmc::evmc_cpp evmc::mocked_host)
@@ -13,6 +13,14 @@ target_sources(
run.cpp
)

+if (CYGWIN)
+ set_target_properties(tooling PROPERTIES OUTPUT_NAME evmc-tooling)
+endif()
+
+if (DEFINED SOVERSION)
+ set_target_properties(tooling PROPERTIES SOVERSION "${SOVERSION}")
+endif()
+
if(EVMC_INSTALL)
- install(TARGETS tooling EXPORT evmcTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ install(TARGETS tooling EXPORT evmcTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
--- origsrc/evmc-12.1.0/test/unittests/CMakeLists.txt 2025-02-07 20:57:01.000000000 +0900
+++ src/evmc-12.1.0/test/unittests/CMakeLists.txt 2025-02-10 17:07:19.421692700 +0900
@@ -4,8 +4,11 @@

include(GoogleTest)

-hunter_add_package(GTest)
-find_package(GTest CONFIG REQUIRED)
+if (HUNTER_ENABLED)
+ hunter_add_package(GTest)
+else()
+ find_package(GTest REQUIRED)
+endif()

add_library(loader-mocked STATIC ${PROJECT_SOURCE_DIR}/lib/loader/loader.c)
target_link_libraries(loader-mocked PRIVATE evmc::evmc)
--- origsrc/evmc-12.1.0/test/unittests/cpp_test.cpp 2025-02-07 20:57:01.000000000 +0900
+++ src/evmc-12.1.0/test/unittests/cpp_test.cpp 2025-02-10 17:13:34.307877700 +0900
@@ -953,13 +953,13 @@ TEST(cpp, revision_to_string)
}


-#if defined(__GNUC__) && !defined(__APPLE__)
+#if defined(__GNUC__) && !defined(__APPLE__) && !defined(__CYGWIN__)
extern "C" [[gnu::weak]] void __ubsan_handle_builtin_unreachable(void*); // NOLINT
#endif

static bool has_ubsan() noexcept // NOLINT(misc-use-anonymous-namespace)
{
-#if defined(__GNUC__) && !defined(__APPLE__)
+#if defined(__GNUC__) && !defined(__APPLE__) && !defined(__CYGWIN__)
return (__ubsan_handle_builtin_unreachable != nullptr);
#else
return false;
--- origsrc/evmc-12.1.0/tools/evmc/CMakeLists.txt 2025-02-07 20:57:01.000000000 +0900
+++ src/evmc-12.1.0/tools/evmc/CMakeLists.txt 2025-02-10 17:05:14.567915400 +0900
@@ -2,7 +2,11 @@
# Copyright 2019-2020 The EVMC Authors.
# Licensed under the Apache License, Version 2.0.

-hunter_add_package(CLI11)
+if (HUNTER_ENABLED)
+ hunter_add_package(CLI11)
+else()
+ find_package(CLI11 REQUIRED)
+endif()
find_package(CLI11 REQUIRED)

add_executable(evmc-tool main.cpp)
@@ -11,3 +15,6 @@ set_target_properties(evmc-tool PROPERTI
set_source_files_properties(main.cpp PROPERTIES
COMPILE_DEFINITIONS PROJECT_VERSION="${PROJECT_VERSION}")
target_link_libraries(evmc-tool PRIVATE evmc::tooling evmc::loader CLI11::CLI11)
+if (EVMC_INSTALL)
+ install(TARGETS evmc-tool EXPORT evmcTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+endif()
--- origsrc/evmc-12.1.0/tools/vmtester/CMakeLists.txt 2025-02-07 20:57:01.000000000 +0900
+++ src/evmc-12.1.0/tools/vmtester/CMakeLists.txt 2025-02-10 17:07:08.938908500 +0900
@@ -4,8 +4,11 @@

include(GNUInstallDirs)

-hunter_add_package(GTest)
-find_package(GTest CONFIG REQUIRED)
+if (HUNTER_ENABLED)
+ hunter_add_package(GTest)
+else()
+ find_package(GTest REQUIRED)
+endif()

# Disable support for std::tr1::tuple in GTest. This causes problems in Visual Studio 2015.
set_target_properties(GTest::gtest PROPERTIES INTERFACE_COMPILE_DEFINITIONS GTEST_HAS_TR1_TUPLE=0)

0 comments on commit dbbf2c6

Please sign in to comment.