2023-11-03 11:43:34 +00:00
|
|
|
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
|
2019-09-07 10:03:22 +00:00
|
|
|
|
|
|
|
project(TON VERSION 0.5 LANGUAGES C CXX)
|
|
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
|
|
#set(OPENSSL_USE_STATIC_LIBS TRUE)
|
|
|
|
|
2021-03-25 22:26:49 +00:00
|
|
|
# Define the two required variables before including the source code for watching a git repository.
|
|
|
|
set(PRE_CONFIGURE_FILE "git.cc.in")
|
|
|
|
set(POST_CONFIGURE_FILE "${CMAKE_CURRENT_BINARY_DIR}/git.cc")
|
|
|
|
include(git_watcher.cmake)
|
|
|
|
|
|
|
|
# Create a library out of the compiled post-configure file.
|
|
|
|
add_library(git STATIC ${POST_CONFIGURE_FILE})
|
|
|
|
target_include_directories(git PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
add_dependencies(git check_git)
|
2021-02-27 12:34:41 +00:00
|
|
|
|
2019-09-07 10:03:22 +00:00
|
|
|
# Prevent in-source build
|
|
|
|
get_filename_component(TON_REAL_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" REALPATH)
|
|
|
|
get_filename_component(TON_REAL_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}" REALPATH)
|
|
|
|
|
|
|
|
if (TON_REAL_BINARY_DIR STREQUAL TON_REAL_SOURCE_DIR)
|
2019-10-23 13:43:50 +00:00
|
|
|
message(" Out-of-source build should be used to build TON.")
|
2019-09-07 10:03:22 +00:00
|
|
|
message(" You need to remove the files already created by CMake and")
|
|
|
|
message(" rerun CMake from a new directory:")
|
|
|
|
message(" rm -rf CMakeFiles CMakeCache.txt")
|
|
|
|
message(" mkdir build")
|
|
|
|
message(" cd build")
|
|
|
|
message(" cmake ..")
|
|
|
|
message(FATAL_ERROR "In-source build failed.")
|
|
|
|
endif()
|
|
|
|
|
2019-09-10 08:30:35 +00:00
|
|
|
# HAVE_SSE42 for crc32c and rocksdb
|
|
|
|
include(CheckCXXSourceCompiles)
|
|
|
|
# Check for SSE4.2 support in the compiler.
|
|
|
|
set(OLD_CMAKE_REQURED_FLAGS ${CMAKE_REQUIRED_FLAGS})
|
|
|
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
|
|
|
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} /arch:AVX")
|
|
|
|
else(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
|
|
|
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -msse4.2")
|
|
|
|
endif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
|
|
|
check_cxx_source_compiles("
|
|
|
|
#if defined(_MSC_VER)
|
|
|
|
#include <intrin.h>
|
|
|
|
#else // !defined(_MSC_VER)
|
|
|
|
#include <cpuid.h>
|
|
|
|
#include <nmmintrin.h>
|
|
|
|
#endif // defined(_MSC_VER)
|
|
|
|
|
|
|
|
int main() {
|
|
|
|
_mm_crc32_u8(0, 0); _mm_crc32_u32(0, 0);
|
|
|
|
#if defined(_M_X64) || defined(__x86_64__)
|
|
|
|
_mm_crc32_u64(0, 0);
|
|
|
|
#endif // defined(_M_X64) || defined(__x86_64__)
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
" CRC32C_HAVE_SSE42)
|
|
|
|
set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQURED_FLAGS})
|
|
|
|
|
|
|
|
if(NOT MSVC)
|
|
|
|
set(CMAKE_REQUIRED_FLAGS "-msse4.2 -mpclmul")
|
|
|
|
endif()
|
|
|
|
CHECK_CXX_SOURCE_COMPILES("
|
|
|
|
#include <cstdint>
|
|
|
|
#include <nmmintrin.h>
|
|
|
|
#include <wmmintrin.h>
|
|
|
|
int main() {
|
|
|
|
volatile uint32_t x = _mm_crc32_u32(0, 0);
|
|
|
|
const auto a = _mm_set_epi64x(0, 0);
|
|
|
|
const auto b = _mm_set_epi64x(0, 0);
|
|
|
|
const auto c = _mm_clmulepi64_si128(a, b, 0x00);
|
|
|
|
auto d = _mm_cvtsi128_si64(c);
|
|
|
|
}
|
|
|
|
" ROCKSDB_HAVE_SSE42)
|
|
|
|
unset(CMAKE_REQUIRED_FLAGS)
|
|
|
|
|
|
|
|
if (ROCKSDB_HAVE_SSE42 AND CRC32C_HAVE_SSE42)
|
|
|
|
set(HAVE_SSE42 TRUE)
|
|
|
|
else()
|
|
|
|
set(HAVE_SSE42 FALSE)
|
|
|
|
endif()
|
|
|
|
|
2023-11-03 11:43:34 +00:00
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
2022-07-05 16:52:12 +00:00
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
|
|
|
|
set(CMAKE_CXX_EXTENSIONS FALSE)
|
|
|
|
|
2019-09-07 10:03:22 +00:00
|
|
|
#BEGIN internal
|
2022-09-14 09:36:01 +00:00
|
|
|
option(USE_EMSCRIPTEN "Use \"ON\" for config building wasm." OFF)
|
2019-09-19 19:15:32 +00:00
|
|
|
option(TON_ONLY_TONLIB "Use \"ON\" to build only tonlib." OFF)
|
2022-09-14 09:36:01 +00:00
|
|
|
if (USE_EMSCRIPTEN)
|
|
|
|
set(TON_ONLY_TONLIB true)
|
|
|
|
endif()
|
2019-09-23 21:10:57 +00:00
|
|
|
if (TON_ONLY_TONLIB)
|
2019-09-19 19:15:32 +00:00
|
|
|
set(NOT_TON_ONLY_TONLIB false)
|
|
|
|
else()
|
|
|
|
set(NOT_TON_ONLY_TONLIB true)
|
|
|
|
endif()
|
|
|
|
option(TON_USE_ROCKSDB "Use \"ON\" to enable RocksDb." ${NOT_TON_ONLY_TONLIB})
|
|
|
|
option(TON_USE_ABSEIL "Use \"ON\" to enable Abseil." ${NOT_TON_ONLY_TONLIB})
|
2019-09-07 10:03:22 +00:00
|
|
|
option(TON_USE_JEMALLOC "Use \"ON\" to enable JeMalloc." OFF)
|
|
|
|
#END internal
|
|
|
|
|
|
|
|
option(TONLIB_ENABLE_JNI "Use \"ON\" to enable JNI-compatible TonLib API.")
|
|
|
|
option(TON_USE_ASAN "Use \"ON\" to enable AddressSanitizer." OFF)
|
|
|
|
option(TON_USE_TSAN "Use \"ON\" to enable ThreadSanitizer." OFF)
|
|
|
|
option(TON_USE_UBSAN "Use \"ON\" to enable UndefinedBehaviorSanitizer." OFF)
|
|
|
|
set(TON_ARCH "native" CACHE STRING "Architecture, will be passed to -march=")
|
|
|
|
|
2022-06-11 08:53:49 +00:00
|
|
|
#BEGIN M1 support
|
|
|
|
EXECUTE_PROCESS( COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE )
|
|
|
|
|
Add cross-platform Linux and macOS binaries (statically compiled with NixPkgs) + wasm artifacts (#621)
* fix build
* nix flake
* nix package
* static musl build env
* make all builds in static env
* GH Actions nightly and static workflows
* deb package
* cmake install {adnl-proxy,blockchain-explorer,create-state,http-proxy,rldp-http-proxy,storage-cli}
* nix flake: add static glibc build variant
* GH Actions: deb-nightly-{musl,glibc_static}, tests-rolling jobs
* rpm package
* build blockchain-explorer
* GH Actions: deb_rpm-nightly: ubuntu-{latest=>22.04}
* crypto/pow-miner: skip install
* ghactions: tests-rolling: show tests run, progress
* ghactions: deb_rpm-nightly: add manual trigger [skip ci]
* nix flake refactor
* find_package=>pkg-config(zlib)
FindZLIB.cmake can't find static zlib prior to CMake 3.24, so use
pkg-config.
* nix old glibc build
* nix aarch64 support
* packages: Populate APT and RPM repos at ton-repo
- {deb,rpm}.sh: Separate build and install dirs
- rpm.sh: Conditionally include lib/
- Accomodate local CI runs w/act
* [skip ci] README packages
* fix aarch64 build -Wnoerror=address
* [skip ci] rpm set releasever
* [skip ci] document local packages upload
* m1 build: gate cpu=apple-m1 by clang version
* packages: Ship musl binaries + old glibc dylibs
* packages: macos build
* nix: bump nixpkgs
* fix windows CI build
* [skip ci] nix: static aarch64 builds
* packages: deb,rpm multiarch
* ghactions: aarch64 musl deb,rpm build
* [skip ci] deb build: deref source links, -x
* [skip ci] nix darwin static build
* [skip ci] nix common hostPkgs
* [skip ci] brew: move formula over to homebrew-ton-repo
* [skip ci] nix fix aarch64-linux build
* [skip ci] ghactions: nix use GITHUB_TOKEN
* [skip ci] Move from ton-repo to gh releases
* [skip ci] ghactions aarch64-darwin self-hosted runner
* [skip ci] ghactions deb,rpm nightly 10h timeout
* [skip ci] fix brew install
fixes
Errno::EACCES: Permission denied @ dir_s_mkdir - /private/tmp/ton-XXX/bin/.brew_home
* [skip ci] ghactions deb,rpm nightly: don't upload ton-packages as we gh release them later
* [skip ci] README: brew instructions
* [skip ci] nightly linux binaries release
* [skip ci] packages: ship macos dylib
* [skip ci] ghactions: Run Windows build nightly, upload to gh releases
* nix: remove defaultPackage, switch to different oldglibc build method
We used to rebuild nixpkgs-stable with old glibc, which broke on aarch64
due to its particular bootstrap toolchain. This just takes nixos 19.09's
version of GCC but new dependencies, sidestepping the issue.
* fix rpm release, add aur release
* fix local (act) ci run
* ghactions: linux-nightly: Print out SSH public keys
* ghactions: bump cachix actions
* nix: default devShell
* [skip ci] rpm,aur: Ship lib
* [skip ci] packages: windows: Remove CMake files from out
* [skip ci] packages: Import chocolatey package
* fixup! fix rpm release, add aur release
* [skip ci] packages: aarch64-linux: build dylib as well
* [skip ci] ghactions: run on self-hosted
* [skip ci] ghactions: windows-nightly: Bump nodejs actions
* [skip ci] nix: Only add Linux packaging tools on Linux
* [skip ci] doc: document direct download binaries in README
* fix tonlib android jni ci
* fixup! fix tonlib android jni ci
* [skip ci] ghactions: Update GH release dates
Errata: doesn't update tags.
* [skip ci] ghactions: Fix racy brew gh release by splitting arch
* initiali commit - binaries only
* fixes
* fixes
* fixes
* fixes
* remove packages dir for now
* add storage-daemon storage-daemon-cli
* fix emulator
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64 sh
* try macos aarch64 sh
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* fix funcfiftlib compilation with emscripten
* fix funcfiftlib compilation with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* try macos aarch64
* fix funcfiftlib compilation with emscripten
* fix funcfiftlib compilation with emscripten
* add github action to compile TON with emscripten
* disable aarch64 github actions for now
* disable aarch64 github actions for now
* trigger all GH actions
* trigger all GH actions 2
* trigger all GH actions 3
* trigger all GH actions 4
* trigger all GH actions 5
* put back rldp-http-proxy to win build
* put back rldp-http-proxy to win build
* dont use pkgConfig for zlib
* fix zlib_library
* use BUILD_SHARED_LIBS flag for static compilation
* test 1
* test 2
* add wasm binaries to release.
test 3
* add simple binaries' execution test
* build emulator-emscripten
* build and add into artifacts wasm tlbc and emulator-emscripten
* build and add into artifacts wasm tlbc and emulator-emscripten, 2
* build and add into artifacts wasm tlbc and emulator-emscripten, 3
* build and add into artifacts wasm tlbc and emulator-emscripten, 4
* build emulator-emscripten with static libs
* minor nix mac aarch64 fix
* add single artifacts to release
* bypass $repo to Dockerfile
* add wasm artifacts to release
* add wasm artifacts to release
* add wasm artifacts to release
* add wasm artifacts to release
* add more artifacts to release; remove compilation against Ubuntu 18.04.
* retrieve GITHUB_TOKEN for ton-blockchain/ton
* remove binary check for arm64
---------
Co-authored-by: tonthemoon <tonthemoon@mailbox.org>
2023-02-27 09:32:41 +00:00
|
|
|
if ((ARCHITECTURE MATCHES "arm64") AND (CMAKE_SYSTEM_NAME STREQUAL "Darwin") AND
|
|
|
|
(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0)) # only clang 13+ supports cpu=apple-m1
|
2022-06-11 08:53:49 +00:00
|
|
|
set(TON_ARCH "apple-m1")
|
|
|
|
endif()
|
|
|
|
#END M1 support
|
|
|
|
|
2019-09-07 10:03:22 +00:00
|
|
|
if (TON_USE_ABSEIL)
|
|
|
|
message("Add abseil-cpp")
|
2022-07-05 16:52:12 +00:00
|
|
|
set(ABSL_PROPAGATE_CXX_STD TRUE)
|
2019-09-07 10:03:22 +00:00
|
|
|
add_subdirectory(third-party/abseil-cpp EXCLUDE_FROM_ALL)
|
|
|
|
set(ABSL_FOUND 1)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
#add_subdirectory(third-party/libcuckoo EXCLUDE_FROM_ALL)
|
|
|
|
#add_subdirectory(third-party/junction EXCLUDE_FROM_ALL)
|
|
|
|
|
|
|
|
if (WIN32)
|
|
|
|
message("Add wingetopt")
|
|
|
|
add_subdirectory(third-party/wingetopt EXCLUDE_FROM_ALL)
|
|
|
|
set(WINGETOPT_FOUND 1)
|
|
|
|
message(STATUS "Use wingetopt")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(CRC32C_BUILD_TESTS OFF CACHE BOOL "Build CRC32C's unit tests")
|
|
|
|
set(CRC32C_BUILD_BENCHMARKS OFF CACHE BOOL "Build CRC32C's benchmarks")
|
|
|
|
set(CRC32C_USE_GLOG OFF CACHE BOOL "Build CRC32C's tests with Google Logging")
|
|
|
|
set(CRC32C_INSTALL OFF CACHE BOOL "Install CRC32C's header and library")
|
|
|
|
message("Add crc32c")
|
Add cross-platform Linux and macOS binaries (statically compiled with NixPkgs) + wasm artifacts (#621)
* fix build
* nix flake
* nix package
* static musl build env
* make all builds in static env
* GH Actions nightly and static workflows
* deb package
* cmake install {adnl-proxy,blockchain-explorer,create-state,http-proxy,rldp-http-proxy,storage-cli}
* nix flake: add static glibc build variant
* GH Actions: deb-nightly-{musl,glibc_static}, tests-rolling jobs
* rpm package
* build blockchain-explorer
* GH Actions: deb_rpm-nightly: ubuntu-{latest=>22.04}
* crypto/pow-miner: skip install
* ghactions: tests-rolling: show tests run, progress
* ghactions: deb_rpm-nightly: add manual trigger [skip ci]
* nix flake refactor
* find_package=>pkg-config(zlib)
FindZLIB.cmake can't find static zlib prior to CMake 3.24, so use
pkg-config.
* nix old glibc build
* nix aarch64 support
* packages: Populate APT and RPM repos at ton-repo
- {deb,rpm}.sh: Separate build and install dirs
- rpm.sh: Conditionally include lib/
- Accomodate local CI runs w/act
* [skip ci] README packages
* fix aarch64 build -Wnoerror=address
* [skip ci] rpm set releasever
* [skip ci] document local packages upload
* m1 build: gate cpu=apple-m1 by clang version
* packages: Ship musl binaries + old glibc dylibs
* packages: macos build
* nix: bump nixpkgs
* fix windows CI build
* [skip ci] nix: static aarch64 builds
* packages: deb,rpm multiarch
* ghactions: aarch64 musl deb,rpm build
* [skip ci] deb build: deref source links, -x
* [skip ci] nix darwin static build
* [skip ci] nix common hostPkgs
* [skip ci] brew: move formula over to homebrew-ton-repo
* [skip ci] nix fix aarch64-linux build
* [skip ci] ghactions: nix use GITHUB_TOKEN
* [skip ci] Move from ton-repo to gh releases
* [skip ci] ghactions aarch64-darwin self-hosted runner
* [skip ci] ghactions deb,rpm nightly 10h timeout
* [skip ci] fix brew install
fixes
Errno::EACCES: Permission denied @ dir_s_mkdir - /private/tmp/ton-XXX/bin/.brew_home
* [skip ci] ghactions deb,rpm nightly: don't upload ton-packages as we gh release them later
* [skip ci] README: brew instructions
* [skip ci] nightly linux binaries release
* [skip ci] packages: ship macos dylib
* [skip ci] ghactions: Run Windows build nightly, upload to gh releases
* nix: remove defaultPackage, switch to different oldglibc build method
We used to rebuild nixpkgs-stable with old glibc, which broke on aarch64
due to its particular bootstrap toolchain. This just takes nixos 19.09's
version of GCC but new dependencies, sidestepping the issue.
* fix rpm release, add aur release
* fix local (act) ci run
* ghactions: linux-nightly: Print out SSH public keys
* ghactions: bump cachix actions
* nix: default devShell
* [skip ci] rpm,aur: Ship lib
* [skip ci] packages: windows: Remove CMake files from out
* [skip ci] packages: Import chocolatey package
* fixup! fix rpm release, add aur release
* [skip ci] packages: aarch64-linux: build dylib as well
* [skip ci] ghactions: run on self-hosted
* [skip ci] ghactions: windows-nightly: Bump nodejs actions
* [skip ci] nix: Only add Linux packaging tools on Linux
* [skip ci] doc: document direct download binaries in README
* fix tonlib android jni ci
* fixup! fix tonlib android jni ci
* [skip ci] ghactions: Update GH release dates
Errata: doesn't update tags.
* [skip ci] ghactions: Fix racy brew gh release by splitting arch
* initiali commit - binaries only
* fixes
* fixes
* fixes
* fixes
* remove packages dir for now
* add storage-daemon storage-daemon-cli
* fix emulator
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64 sh
* try macos aarch64 sh
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* fix funcfiftlib compilation with emscripten
* fix funcfiftlib compilation with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* try macos aarch64
* fix funcfiftlib compilation with emscripten
* fix funcfiftlib compilation with emscripten
* add github action to compile TON with emscripten
* disable aarch64 github actions for now
* disable aarch64 github actions for now
* trigger all GH actions
* trigger all GH actions 2
* trigger all GH actions 3
* trigger all GH actions 4
* trigger all GH actions 5
* put back rldp-http-proxy to win build
* put back rldp-http-proxy to win build
* dont use pkgConfig for zlib
* fix zlib_library
* use BUILD_SHARED_LIBS flag for static compilation
* test 1
* test 2
* add wasm binaries to release.
test 3
* add simple binaries' execution test
* build emulator-emscripten
* build and add into artifacts wasm tlbc and emulator-emscripten
* build and add into artifacts wasm tlbc and emulator-emscripten, 2
* build and add into artifacts wasm tlbc and emulator-emscripten, 3
* build and add into artifacts wasm tlbc and emulator-emscripten, 4
* build emulator-emscripten with static libs
* minor nix mac aarch64 fix
* add single artifacts to release
* bypass $repo to Dockerfile
* add wasm artifacts to release
* add wasm artifacts to release
* add wasm artifacts to release
* add wasm artifacts to release
* add more artifacts to release; remove compilation against Ubuntu 18.04.
* retrieve GITHUB_TOKEN for ton-blockchain/ton
* remove binary check for arm64
---------
Co-authored-by: tonthemoon <tonthemoon@mailbox.org>
2023-02-27 09:32:41 +00:00
|
|
|
if (NOT MSVC)
|
|
|
|
set(OLD_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
|
|
|
# fix aarch64 build @ crc32c/src/crc32c_arm64_linux_check.h
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=address")
|
|
|
|
add_subdirectory(third-party/crc32c EXCLUDE_FROM_ALL)
|
|
|
|
set(CMAKE_CXX_FLAGS ${OLD_CMAKE_CXX_FLAGS})
|
|
|
|
unset(OLD_CMAKE_CXX_FLAGS)
|
|
|
|
else()
|
|
|
|
add_subdirectory(third-party/crc32c EXCLUDE_FROM_ALL)
|
|
|
|
endif()
|
2019-09-07 10:03:22 +00:00
|
|
|
set(CRC32C_FOUND 1)
|
|
|
|
|
|
|
|
if (TON_USE_ROCKSDB)
|
2021-02-27 12:34:41 +00:00
|
|
|
if (ANDROID)
|
2019-09-07 10:03:22 +00:00
|
|
|
set(PORTABLE ON CACHE BOOL "portable")
|
|
|
|
endif()
|
2020-04-27 12:01:46 +00:00
|
|
|
set(WITH_GFLAGS OFF CACHE BOOL "build with GFlags")
|
2019-09-07 10:03:22 +00:00
|
|
|
set(WITH_TESTS OFF CACHE BOOL "build with tests")
|
|
|
|
set(WITH_TOOLS OFF CACHE BOOL "build with tools")
|
|
|
|
set(FAIL_ON_WARNINGS OFF CACHE BOOL "fail on warnings")
|
|
|
|
message("Add rocksdb")
|
|
|
|
add_subdirectory(third-party/rocksdb EXCLUDE_FROM_ALL)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
option(USE_COROUTINES "experimental support of coroutines" OFF)
|
|
|
|
if (USE_COROUTINES)
|
|
|
|
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
|
|
set(TD_HAVE_COROUTINES 1)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcoroutines-ts")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
option(USE_LIBRAPTORQ "use libraptorq for tests" OFF)
|
|
|
|
if (USE_LIBRAPTORQ)
|
|
|
|
set(USE_LZ4 OFF CACHE BOOL "use lz4")
|
|
|
|
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
|
|
set(CLANG_STDLIB "ON") # for libraptorq
|
|
|
|
endif()
|
|
|
|
message("Add libraptorq")
|
|
|
|
add_subdirectory(third-party/libraptorq EXCLUDE_FROM_ALL)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
message("Add ton")
|
|
|
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH})
|
|
|
|
|
TVM Upgrade (#686)
* New TVM instructions
* Remove PREVBLOCKS
* Separate target ton_crypto into TVM-related and -unrelared code
* Add fine for failed "send message"; rework SENDMSG
* Fix include
* Fix bugs, improve action fines
* Disable fines for special accounts
* Handle msg_balance_remaining.grams == null in transaction.cpp
* Bugfixes in SENDMSG
* Fix fee calculation in SENDMSG
* Fix CellStorageStat and transaction.cpp after merge
* SETBOUNCEONACTIONPHASEFAIL instruction
* ADDDIVMOD instructions
* RUNVM, RUNVMX instructions
* Changes in RUNVM
* Tests for adddiv and runvm
* HASHEXT instruction
* Improve opcode-timing
More iterations
Don't measure preliminary run
Remove logs and other excessive operations
Add "error" to output
* Increase RUNVM gas price
* Optimize HASHEXT, adjust gas price
* Add "bounce of action fail" flag to actions
* Stack operations with unlimited arguments
* Ristretto255 instructions
* Adjust gas consumption
* Optional fixed number of return values in RUNVM, fix exception handling
* Adjust gas consumption
* Simplify gas consumption logic
* Support of secp256k1 and sodium libraries in builds (#11)
* add support of secp256k1 library to the builds (linux, win)
* add support of secp256k1 library to the builds (linux, win)
* install secp256k1 via brew
* install libsodium via brew;
change sodium to upper case in FindSodium.cmake
* install libsodium via brew;
change sodium to upper case in FindSodium.cmake
* simplify FindSodium.cmake
* bug fixing
* bug fixing
* bug fixing
* add macro SODIUM_STATIC
* adjust build command for windows
* put back original FindSodium.cmake
* put back original FindSodium.cmake
* fix sodium unzipped path for windows;
add ninja
* fix sodium unzipped path for windows;
add ninja
* fix sodium unzipped path for windows;
add ninja
* Win32 github build for secp256k1
* x64 architecture github build for secp256k1
* fix sodium linking on linux
* enable docker buildx arm64 builds from forked repos
* enable docker buildx arm64 builds from forked repos
* enable docker buildx arm64 builds from forked repos
* adjust mac builds for secp2561k and sodium
* fix tonlib jni generation
* minor fix
* sync fixes across platforms
* add libsodium build script for android and precompiled static libraries
* build tonlib for android (fails)
* FindSodium uppercase
* remove system libsodium for android, use precompiled instead;
specify SECP256K1_INCLUDE_DIR fir mac 12.6
* uppercase sodium
* simplify FindSodium
* fix windows build sodium path;
use ninja for windows
* simplify sodium 2
* adjust windows sodium paths;
add paths to android jni
* add ninja build windows
* add ninja build windows
* add ninja build windows 2
* remove win ninja
* fix 1
* fix 2
* fix win 3
* fix linux compile 3
* fix jni 1
* fix jni 2 and mac
* fix jni 3
* fix jni 4
* fix jni 5
* fix mac 6
* fix mac 7 and jni paths
* fix jni 8
* rework sodium for android
* rework sodium for android
* rework sodium for android 2
* fixed sodium for android 2
* fixed sodium for android 3
* static secp256k1 for android
* add precompiled arm secp256k1
* add precompiled arm secp256k1
* build native-lib with secp256k1 x86-64 (non arm)
* update precompiled with NDK libsecp256k1.a
* update precompiled with NDK libsecp256k1.a
* update precompiled with NDK libsecp256k1.a
* refactor llvm-strip location
* refactor llvm-strip location
* add native-lib.so for armv7a, armv8a
* add native-lib.so for armv7a, armv8a
* test armv7a, armv8a
* armv7a - fails linking on sodium, test -> armv8a
* works x86-64, armv7a - fails linking on sodium, armv8a - fails linking secp256k1 (incompatible with aarch64linux)
* update libpsec256k1, sodium static libs
* test x86 android native-lib
* test armv7 android native-lib
* test armv8 android native-lib
* x86_64 and arm64 android native-lib works
* x86_64 and arm64 android native-lib works
* x86_64 and arm64 android native-lib works
* test armv7 android native-lib
* test all android native-libs
* test all android native-libs
* test all android native-libs
* test all android native-libs - without SodiumAndroid
* test all android native-libs - with FindSodiumAndroid.cmake
* win, with Sodium via SODIUM_DIR
* win, with Sodium via SODIUM_DIR env
* win, with Sodium via SODIUM_DIR env
* win, with Sodium via SODIUM_DIR env and SODIUM_USE_STATIC_LIBS
* win, with Sodium via SODIUM_DIR, SODIUM_USE_STATIC_LIBS and SODIUM_INCLUDE_DIR
* android, with FindSodium
* android, with FindSodium with SODIUM_USE_STATIC_LIBS
* remove if not apple
* target_link_libraries(ton_crypto_core PUBLIC secp256k1)
* android SECP256K1_INCLUDE_DIRS
* android SECP256K1_INCLUDE_DIR
* add libsecp256k1.a/so pre-compiled with ubuntu 22 x86-64
* add libsecp256k1.a/so pre-compiled with ubuntu 22 x86-64
* sodium dirs
* sodium dirs
* sodium dirs
* remove NOT APPLE and SodiumAndroid
* add NOT APPLE and remove SodiumAndroid
* add NOT APPLE and remove SodiumAndroid
* remove build scripts for 18.04, reduce CMakeLists.txt
* remove build scripts for 18.04, reduce CMakeLists.txt
* Fix cas consumption during library load
* Fix fetch_config_params after merge
* Add all ADDDIVMOD ops to Asm.fif
* Save unpaid storage fee to due_payment
* Add "set prev blocks info" to emulator
* Adjusted builds (#13)
* Update flake.nix
Add libsodium
* add libsecp256k1-dev and libsodium-dev into wasm build
* make back emulator a shared library;
put emulator to artifacts;
compile wasm artifacts with sodium and secp256k1.
* add secp256k1 to nix
* compile emulator statically with nix
* compile emulator statically with nix
* compile emulator lib statically with nix
* compile emulator lib statically with nix
* add libemulator to artifacts
* add shared libemulator library to artifacts
* minor release fix
* update set-output commands;
add recent_changelog.md
* releases fixes
* releases fixes, multiline
* releases fixes, multiline
* releases fixes, multiline
* put back multiline changelog
* put back multiline changelog
* ConfigParam 19 (global-id) and GLOBALID instruction
* Fix gas consumption in HASHEXT
* Add blst library
* Add bls instructions
* Allow passing long code to opcode-timing
* Add bls testcase
* More BLS instructions
* Fix tests, add bls tests
* Add more bls tests
* Improve some bls operations
* Adjust some BLS gas prices
* Adjust BLS gas prices
* Enable __BLST_PORTABLE__ flag only if PORTABLE flag is set
* Add tests for BLS_PAIRING
* GASCONSUMED instruction
* Fix compilation against docker with blst library; (#14)
* fix compilation against docker with blst library;
add precompiled libblst.a to android builds
* minor fix
* Adjust BLKSWX gas
* Fix comparison with NAN
* Allow arbitrary integers for scalars in ristretto multiplication, fix test
* Adjust nix builds according to PR 694 (#15)
* integrate and test PR-694
* integrate and test PR-694, test 2
* Add P256_CHKSIGN (secp256r1)
---------
Co-authored-by: SpyCheese <mikle98@yandex.ru>
Co-authored-by: neodiX42 <namlem@gmail.com>
2023-05-24 18:14:13 +00:00
|
|
|
include(BuildBLST)
|
|
|
|
|
2019-09-07 10:03:22 +00:00
|
|
|
# Configure CCache if available
|
|
|
|
find_program(CCACHE_FOUND ccache)
|
|
|
|
#set(CCACHE_FOUND 0)
|
|
|
|
if (CCACHE_FOUND)
|
|
|
|
message(STATUS "Found ccache")
|
|
|
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
|
|
|
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
|
|
|
|
else()
|
|
|
|
message(STATUS "Could NOT find ccache")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
|
|
set(GCC 1)
|
|
|
|
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
|
|
set(CLANG 1)
|
|
|
|
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
|
|
|
set(INTEL 1)
|
|
|
|
elseif (NOT MSVC)
|
|
|
|
message(FATAL_ERROR "Compiler isn't supported")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
include(CheckCXXCompilerFlag)
|
|
|
|
|
|
|
|
set(CMAKE_THREAD_PREFER_PTHREAD ON)
|
|
|
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
|
|
find_package(Threads REQUIRED)
|
Add cross-platform Linux and macOS binaries (statically compiled with NixPkgs) + wasm artifacts (#621)
* fix build
* nix flake
* nix package
* static musl build env
* make all builds in static env
* GH Actions nightly and static workflows
* deb package
* cmake install {adnl-proxy,blockchain-explorer,create-state,http-proxy,rldp-http-proxy,storage-cli}
* nix flake: add static glibc build variant
* GH Actions: deb-nightly-{musl,glibc_static}, tests-rolling jobs
* rpm package
* build blockchain-explorer
* GH Actions: deb_rpm-nightly: ubuntu-{latest=>22.04}
* crypto/pow-miner: skip install
* ghactions: tests-rolling: show tests run, progress
* ghactions: deb_rpm-nightly: add manual trigger [skip ci]
* nix flake refactor
* find_package=>pkg-config(zlib)
FindZLIB.cmake can't find static zlib prior to CMake 3.24, so use
pkg-config.
* nix old glibc build
* nix aarch64 support
* packages: Populate APT and RPM repos at ton-repo
- {deb,rpm}.sh: Separate build and install dirs
- rpm.sh: Conditionally include lib/
- Accomodate local CI runs w/act
* [skip ci] README packages
* fix aarch64 build -Wnoerror=address
* [skip ci] rpm set releasever
* [skip ci] document local packages upload
* m1 build: gate cpu=apple-m1 by clang version
* packages: Ship musl binaries + old glibc dylibs
* packages: macos build
* nix: bump nixpkgs
* fix windows CI build
* [skip ci] nix: static aarch64 builds
* packages: deb,rpm multiarch
* ghactions: aarch64 musl deb,rpm build
* [skip ci] deb build: deref source links, -x
* [skip ci] nix darwin static build
* [skip ci] nix common hostPkgs
* [skip ci] brew: move formula over to homebrew-ton-repo
* [skip ci] nix fix aarch64-linux build
* [skip ci] ghactions: nix use GITHUB_TOKEN
* [skip ci] Move from ton-repo to gh releases
* [skip ci] ghactions aarch64-darwin self-hosted runner
* [skip ci] ghactions deb,rpm nightly 10h timeout
* [skip ci] fix brew install
fixes
Errno::EACCES: Permission denied @ dir_s_mkdir - /private/tmp/ton-XXX/bin/.brew_home
* [skip ci] ghactions deb,rpm nightly: don't upload ton-packages as we gh release them later
* [skip ci] README: brew instructions
* [skip ci] nightly linux binaries release
* [skip ci] packages: ship macos dylib
* [skip ci] ghactions: Run Windows build nightly, upload to gh releases
* nix: remove defaultPackage, switch to different oldglibc build method
We used to rebuild nixpkgs-stable with old glibc, which broke on aarch64
due to its particular bootstrap toolchain. This just takes nixos 19.09's
version of GCC but new dependencies, sidestepping the issue.
* fix rpm release, add aur release
* fix local (act) ci run
* ghactions: linux-nightly: Print out SSH public keys
* ghactions: bump cachix actions
* nix: default devShell
* [skip ci] rpm,aur: Ship lib
* [skip ci] packages: windows: Remove CMake files from out
* [skip ci] packages: Import chocolatey package
* fixup! fix rpm release, add aur release
* [skip ci] packages: aarch64-linux: build dylib as well
* [skip ci] ghactions: run on self-hosted
* [skip ci] ghactions: windows-nightly: Bump nodejs actions
* [skip ci] nix: Only add Linux packaging tools on Linux
* [skip ci] doc: document direct download binaries in README
* fix tonlib android jni ci
* fixup! fix tonlib android jni ci
* [skip ci] ghactions: Update GH release dates
Errata: doesn't update tags.
* [skip ci] ghactions: Fix racy brew gh release by splitting arch
* initiali commit - binaries only
* fixes
* fixes
* fixes
* fixes
* remove packages dir for now
* add storage-daemon storage-daemon-cli
* fix emulator
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64
* try macos aarch64 sh
* try macos aarch64 sh
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* try macos aarch64 bash
* fix funcfiftlib compilation with emscripten
* fix funcfiftlib compilation with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* add github action to compile TON with emscripten
* try macos aarch64
* fix funcfiftlib compilation with emscripten
* fix funcfiftlib compilation with emscripten
* add github action to compile TON with emscripten
* disable aarch64 github actions for now
* disable aarch64 github actions for now
* trigger all GH actions
* trigger all GH actions 2
* trigger all GH actions 3
* trigger all GH actions 4
* trigger all GH actions 5
* put back rldp-http-proxy to win build
* put back rldp-http-proxy to win build
* dont use pkgConfig for zlib
* fix zlib_library
* use BUILD_SHARED_LIBS flag for static compilation
* test 1
* test 2
* add wasm binaries to release.
test 3
* add simple binaries' execution test
* build emulator-emscripten
* build and add into artifacts wasm tlbc and emulator-emscripten
* build and add into artifacts wasm tlbc and emulator-emscripten, 2
* build and add into artifacts wasm tlbc and emulator-emscripten, 3
* build and add into artifacts wasm tlbc and emulator-emscripten, 4
* build emulator-emscripten with static libs
* minor nix mac aarch64 fix
* add single artifacts to release
* bypass $repo to Dockerfile
* add wasm artifacts to release
* add wasm artifacts to release
* add wasm artifacts to release
* add wasm artifacts to release
* add more artifacts to release; remove compilation against Ubuntu 18.04.
* retrieve GITHUB_TOKEN for ton-blockchain/ton
* remove binary check for arm64
---------
Co-authored-by: tonthemoon <tonthemoon@mailbox.org>
2023-02-27 09:32:41 +00:00
|
|
|
find_package(PkgConfig REQUIRED)
|
Improve TON build scripts and some tests (#855)
* fix macOS github actions
* fix android tonlib GH action;
* fixing wasm GH action
* strip binaries
* fix randomly failing ubuntu and wasm GH actions
* fix randomly failing ubuntu and wasm GH actions
* revert some changes
* adding more nix scripts and automated native build scripts;
debug static ton compilation
* minor fix
* do not use pkg_config if path specified
* move wasm script, run with sudo action script
* weird, fixing - cp: missing destination file operand after 'assembly/native/build-ubuntu-20.04-shared.sh'
* weird, fixing - cp: missing destination file operand after 'assembly/native/build-ubuntu-20.04-shared.sh'
* ok
* some adjustments for android and win builds
* some adjustments for android and win builds
* moving stripping inside the build script
* access rights handling; adding simple binaries' tests
* make lite-client-common, fift-lib and smc-envelope deliberately static;
add -a (artifacts) flag to build scripts;
* minor wasm build fix;
create separate tonlib android build script;
remove outdated __has_trivial_copy(T)
* add windows build - WIP
* adjust android build;
improve win build;
* adjust sodium paths for android build; use proper compiler for windows build;
* add github windows build auxiliary file
* adjust wasm build
* add portable ubuntu build
* exclude some unstable tests for some time
* compile portable binaries on ubuntu-20.04
* exclude some unstable tests
* include static gsl
* restart builds
* restart builds
* restart builds
* remove libreadline, gsl and blas dependencies in linux build
* add macos build script
* install missing autoconf in macos builds
* enable all tests and see what fails
* enable win tests and restart others
* enable win tests and fix test-smartcont.cpp
* enable win tests
* use clang-16 on mac builds, add blockchain-explorer for ubuntu builds, add portable macos build
* move sudo part outside a build scripts
* move sudo part outside a build scripts
* run llvm install with sudo
* remove libgnutls28-dev before ubuntu static compilation, include blockchain-explorer into artifacts;
remove warning: definition of implicit copy constructor for 'Stat' is deprecated because it has a user-declared copy assignment operator [-Wdeprecated-copy]
* rework wrong decision, put back system gnutls, but compile libmicrohttpd with --disable-https
* add jenkins pipeline sceleton
* WIP jenkins pipeline sceleton
* WIP jenkins pipeline changes
* WIP jenkins pipeline: add stage timout, zip and group artifacts
* WIP jenkins pipeline: macos portable build fix
* WIP jenkins pipeline: wording
* WIP jenkins pipeline: add android tonlib
* WIP jenkins pipeline: add was binaries
* WIP jenkins pipeline: add TOTAL_MEMORY 1.5gb to funcfiftlib wasm linking
* WIP jenkins pipeline: add nix build on linux aarch64
* WIP jenkins pipeline: funcfiftlib compilation fails that 16mb mem is not enough, increase to 32mb
* WIP jenkins pipeline: enable test in nix build
* WIP jenkins pipeline: add linux x86-64 nix build
* WIP jenkins pipeline: include libs in nix build
* WIP jenkins pipeline: include libs in nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: nix linux arm64 with openssl 1.1 for now
* WIP jenkins pipeline: working ubuntu arm64 libtonjson
* WIP jenkins pipeline: working ubuntu arm64 libtonjson + minor fix
* WIP jenkins pipeline: working ubuntu arm64 libtonjson + minor fix 2
* WIP jenkins pipeline: merry christmas
* WIP jenkins pipeline: merry christmas 2
* WIP jenkins pipeline: remove native static builds
* WIP jenkins pipeline: enable more tests
* WIP jenkins pipeline: zip artifacts better
* WIP jenkins pipeline: get rid of path in the final zip
* WIP jenkins pipeline: minor fix, include lib and smartcont folders
* WIP jenkins pipeline: minor fix, include lib and smartcont folders into nix artifacts also
* WIP jenkins pipeline: minor fix
* WIP jenkins pipeline: minor fix
* adjust github actions for new nix builds
* cleanup
* cleanup
* cleanup
* cleanup
* rename libtonlibjson.so.0.5 to libtonlibjson.so
* Add TON build instructions to README.md
* simplify
* fix test-tonlib-offline
* set timeout per test of 300 sec
* set timeout per test of 600 sec for non nix builds
* increase test timeout to 900 sec; minor changes
* use MS VS 2022 for win TON compilation; update README.md
* use MS VS 2022 for win TON compilation; update README.md
* change path to MSVC in github workflow
* change path to MSVC in groovy pipeline
* compile ton on win, with msvc 2022 community and enterprise versions
* minor fixes
* improve network tests
* remove TON compilation against macos-11 github runner
* add `choco feature enable -n allowEmptyChecksums` since pkg-config-lite-0.28-1 does not have a checksum
* abort win compilation if 3pp can't be downloaded
* increase test timeout to 30 min
* improving test-catchain
2024-01-15 20:48:04 +00:00
|
|
|
|
|
|
|
if (NOT ZLIB_FOUND)
|
|
|
|
find_package(ZLIB REQUIRED)
|
|
|
|
else()
|
|
|
|
message(STATUS "Using zlib ${ZLIB_LIBRARIES}")
|
|
|
|
endif()
|
|
|
|
|
2019-09-07 10:03:22 +00:00
|
|
|
|
|
|
|
if (TON_ARCH AND NOT MSVC)
|
2022-09-20 19:26:59 +00:00
|
|
|
CHECK_CXX_COMPILER_FLAG( "-march=${TON_ARCH}" COMPILER_OPT_ARCH_SUPPORTED )
|
2022-06-11 08:53:49 +00:00
|
|
|
if (TON_ARCH STREQUAL "apple-m1")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=${TON_ARCH}")
|
2022-09-20 19:26:59 +00:00
|
|
|
elseif(COMPILER_OPT_ARCH_SUPPORTED)
|
2022-06-11 08:53:49 +00:00
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${TON_ARCH}")
|
2022-09-20 19:26:59 +00:00
|
|
|
elseif(NOT TON_ARCH STREQUAL "native")
|
|
|
|
message(FATAL_ERROR "Compiler doesn't support arch ${TON_ARCH}")
|
2022-06-11 08:53:49 +00:00
|
|
|
endif()
|
2019-09-07 10:03:22 +00:00
|
|
|
endif()
|
|
|
|
if (THREADS_HAVE_PTHREAD_ARG)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if (TON_USE_JEMALLOC)
|
2024-05-12 09:48:14 +00:00
|
|
|
find_package(jemalloc REQUIRED)
|
2019-09-07 10:03:22 +00:00
|
|
|
endif()
|
|
|
|
|
|
|
|
set(MEMPROF "" CACHE STRING "Use one of \"ON\", \"FAST\" or \"SAFE\" to enable memory profiling. \
|
|
|
|
Works under macOS and Linux when compiled using glibc. \
|
|
|
|
In FAST mode stack is unwinded only using frame pointers, which may fail. \
|
|
|
|
In SAFE mode stack is unwinded using backtrace function from execinfo.h, which may be very slow. \
|
|
|
|
By default both methods are used to achieve maximum speed and accuracy")
|
|
|
|
|
|
|
|
if (CLANG OR GCC)
|
|
|
|
if (MEMPROF)
|
|
|
|
check_cxx_compiler_flag(-no-pie CXX_NO_PIE_FLAG)
|
|
|
|
if (CXX_NO_PIE_FLAG)
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -no-pie")
|
|
|
|
elseif (APPLE)
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-no_pie")
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if (MSVC)
|
|
|
|
if (CMAKE_CXX_FLAGS_DEBUG MATCHES "/RTC1")
|
|
|
|
string(REPLACE "/RTC1" " " CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
|
|
|
endif()
|
|
|
|
add_definitions(-D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /W4 /wd4100 /wd4127 /wd4324 /wd4456 /wd4457 /wd4458 /wd4505 /wd4702")
|
|
|
|
elseif (CLANG OR GCC)
|
2023-11-03 11:43:34 +00:00
|
|
|
if (GCC)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstrong-eval-order=some")
|
|
|
|
endif()
|
2022-07-05 16:52:12 +00:00
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer")
|
2019-09-07 10:03:22 +00:00
|
|
|
if (APPLE)
|
|
|
|
#use "-Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/export_list" for exported symbols
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fvisibility=hidden -Wl,-dead_strip,-x,-S")
|
2020-05-27 18:10:46 +00:00
|
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -fvisibility=hidden -Wl,-dead_strip,-x,-S")
|
2019-09-07 10:03:22 +00:00
|
|
|
else()
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffunction-sections -fdata-sections")
|
2022-09-14 09:36:01 +00:00
|
|
|
if (NOT USE_EMSCRIPTEN)
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections -Wl,--exclude-libs,ALL")
|
|
|
|
endif()
|
2019-09-07 10:03:22 +00:00
|
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections")
|
|
|
|
if (NOT TON_USE_ASAN AND NOT TON_USE_TSAN AND NOT MEMPROF)
|
2022-09-14 09:36:01 +00:00
|
|
|
if (NOT USE_EMSCRIPTEN)
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--exclude-libs,ALL")
|
|
|
|
endif()
|
2019-09-07 10:03:22 +00:00
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if (WIN32)
|
|
|
|
add_definitions(-DNTDDI_VERSION=0x06020000 -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DNOMINMAX -DUNICODE -D_UNICODE)
|
|
|
|
endif()
|
|
|
|
if (CYGWIN)
|
|
|
|
add_definitions(-D_DEFAULT_SOURCE=1 -DFD_SETSIZE=4096)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if (NOT ANDROID) # _FILE_OFFSET_BITS is broken in ndk r15 and r15b and doesn't work prior to Android 7.0
|
|
|
|
add_definitions(-D_FILE_OFFSET_BITS=64)
|
|
|
|
endif()
|
|
|
|
|
2020-03-27 14:59:00 +00:00
|
|
|
set(INTERNAL_COMPILE "0")
|
|
|
|
#BEGIN internal
|
|
|
|
add_definitions(-D_INTERNAL_COMPILE=1)
|
|
|
|
set(INTERNAL_COMPILE "1")
|
|
|
|
#END internal
|
|
|
|
|
|
|
|
set(TONLIB_COMPILE "0")
|
|
|
|
#BEGIN tonlib
|
|
|
|
add_definitions(-D_TONLIB_COMPILE=1)
|
|
|
|
set(TONLIB_COMPILE "1")
|
|
|
|
#END tonlib
|
|
|
|
|
2019-09-07 10:03:22 +00:00
|
|
|
include(AddCXXCompilerFlag)
|
|
|
|
if (MSVC)
|
|
|
|
add_cxx_compiler_flag("/experimental:external /external:anglebrackets /external:W0")
|
|
|
|
endif()
|
|
|
|
if (NOT MSVC)
|
|
|
|
add_cxx_compiler_flag("-Wall")
|
2022-10-24 17:48:41 +00:00
|
|
|
add_cxx_compiler_flag("-Wextra")
|
2019-09-07 10:03:22 +00:00
|
|
|
endif()
|
2022-10-24 17:48:41 +00:00
|
|
|
|
2019-09-07 10:03:22 +00:00
|
|
|
add_cxx_compiler_flag("-Wimplicit-fallthrough=2")
|
|
|
|
add_cxx_compiler_flag("-Wpointer-arith")
|
|
|
|
add_cxx_compiler_flag("-Wcast-qual")
|
|
|
|
add_cxx_compiler_flag("-Wsign-compare")
|
|
|
|
add_cxx_compiler_flag("-Wduplicated-branches")
|
|
|
|
add_cxx_compiler_flag("-Wduplicated-cond")
|
|
|
|
add_cxx_compiler_flag("-Walloc-zero")
|
|
|
|
add_cxx_compiler_flag("-Wlogical-op")
|
|
|
|
add_cxx_compiler_flag("-Wno-tautological-compare")
|
|
|
|
add_cxx_compiler_flag("-Wpointer-arith")
|
|
|
|
add_cxx_compiler_flag("-Wvla")
|
|
|
|
add_cxx_compiler_flag("-Wnon-virtual-dtor")
|
|
|
|
add_cxx_compiler_flag("-Wno-unused-parameter")
|
|
|
|
add_cxx_compiler_flag("-Wconversion")
|
|
|
|
add_cxx_compiler_flag("-Wno-sign-conversion")
|
|
|
|
add_cxx_compiler_flag("-Qunused-arguments")
|
|
|
|
add_cxx_compiler_flag("-Wno-unused-private-field")
|
|
|
|
add_cxx_compiler_flag("-Wno-redundant-move")
|
|
|
|
#add_cxx_compiler_flag("-Werror")
|
|
|
|
|
|
|
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem /usr/include/c++/v1")
|
|
|
|
if (CLANG)
|
|
|
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
|
|
|
|
endif()
|
|
|
|
if (TON_USE_ASAN)
|
|
|
|
if (CLANG)
|
|
|
|
add_cxx_compiler_flag("-stdlib=libc++")
|
|
|
|
endif()
|
|
|
|
add_cxx_compiler_flag("-fsanitize=address")
|
|
|
|
add_definitions(-DTD_USE_ASAN=1)
|
|
|
|
endif()
|
|
|
|
if (TON_USE_TSAN)
|
|
|
|
if (CLANG)
|
|
|
|
add_cxx_compiler_flag("-stdlib=libc++")
|
|
|
|
endif()
|
|
|
|
add_cxx_compiler_flag("-fsanitize=thread")
|
|
|
|
endif()
|
|
|
|
if (TON_USE_UBSAN)
|
|
|
|
if (CLANG)
|
|
|
|
add_cxx_compiler_flag("-stdlib=libc++")
|
|
|
|
endif()
|
|
|
|
add_cxx_compiler_flag("-fsanitize=undefined")
|
|
|
|
endif()
|
|
|
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread")
|
|
|
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
|
|
|
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined")
|
|
|
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=leak")
|
|
|
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -finstrument-functions")
|
|
|
|
|
|
|
|
#Compilation database
|
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
|
|
|
|
|
|
|
|
#BEGIN internal
|
|
|
|
find_package(LATEX)
|
|
|
|
if (LATEX_FOUND)
|
|
|
|
include(UseLATEX)
|
|
|
|
add_latex_document(doc/ton.tex TARGET_NAME ton_white_paper)
|
|
|
|
add_latex_document(doc/tvm.tex TARGET_NAME ton_vm_description)
|
|
|
|
add_latex_document(doc/tblkch.tex TARGET_NAME ton_blockchain_description)
|
|
|
|
add_latex_document(doc/fiftbase.tex TARGET_NAME fift_basic_description)
|
2020-02-06 17:56:46 +00:00
|
|
|
add_latex_document(doc/catchain.tex TARGET_NAME catchain_consensus_description)
|
2019-09-07 10:03:22 +00:00
|
|
|
endif()
|
Improve TON build scripts and some tests (#855)
* fix macOS github actions
* fix android tonlib GH action;
* fixing wasm GH action
* strip binaries
* fix randomly failing ubuntu and wasm GH actions
* fix randomly failing ubuntu and wasm GH actions
* revert some changes
* adding more nix scripts and automated native build scripts;
debug static ton compilation
* minor fix
* do not use pkg_config if path specified
* move wasm script, run with sudo action script
* weird, fixing - cp: missing destination file operand after 'assembly/native/build-ubuntu-20.04-shared.sh'
* weird, fixing - cp: missing destination file operand after 'assembly/native/build-ubuntu-20.04-shared.sh'
* ok
* some adjustments for android and win builds
* some adjustments for android and win builds
* moving stripping inside the build script
* access rights handling; adding simple binaries' tests
* make lite-client-common, fift-lib and smc-envelope deliberately static;
add -a (artifacts) flag to build scripts;
* minor wasm build fix;
create separate tonlib android build script;
remove outdated __has_trivial_copy(T)
* add windows build - WIP
* adjust android build;
improve win build;
* adjust sodium paths for android build; use proper compiler for windows build;
* add github windows build auxiliary file
* adjust wasm build
* add portable ubuntu build
* exclude some unstable tests for some time
* compile portable binaries on ubuntu-20.04
* exclude some unstable tests
* include static gsl
* restart builds
* restart builds
* restart builds
* remove libreadline, gsl and blas dependencies in linux build
* add macos build script
* install missing autoconf in macos builds
* enable all tests and see what fails
* enable win tests and restart others
* enable win tests and fix test-smartcont.cpp
* enable win tests
* use clang-16 on mac builds, add blockchain-explorer for ubuntu builds, add portable macos build
* move sudo part outside a build scripts
* move sudo part outside a build scripts
* run llvm install with sudo
* remove libgnutls28-dev before ubuntu static compilation, include blockchain-explorer into artifacts;
remove warning: definition of implicit copy constructor for 'Stat' is deprecated because it has a user-declared copy assignment operator [-Wdeprecated-copy]
* rework wrong decision, put back system gnutls, but compile libmicrohttpd with --disable-https
* add jenkins pipeline sceleton
* WIP jenkins pipeline sceleton
* WIP jenkins pipeline changes
* WIP jenkins pipeline: add stage timout, zip and group artifacts
* WIP jenkins pipeline: macos portable build fix
* WIP jenkins pipeline: wording
* WIP jenkins pipeline: add android tonlib
* WIP jenkins pipeline: add was binaries
* WIP jenkins pipeline: add TOTAL_MEMORY 1.5gb to funcfiftlib wasm linking
* WIP jenkins pipeline: add nix build on linux aarch64
* WIP jenkins pipeline: funcfiftlib compilation fails that 16mb mem is not enough, increase to 32mb
* WIP jenkins pipeline: enable test in nix build
* WIP jenkins pipeline: add linux x86-64 nix build
* WIP jenkins pipeline: include libs in nix build
* WIP jenkins pipeline: include libs in nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: nix linux arm64 with openssl 1.1 for now
* WIP jenkins pipeline: working ubuntu arm64 libtonjson
* WIP jenkins pipeline: working ubuntu arm64 libtonjson + minor fix
* WIP jenkins pipeline: working ubuntu arm64 libtonjson + minor fix 2
* WIP jenkins pipeline: merry christmas
* WIP jenkins pipeline: merry christmas 2
* WIP jenkins pipeline: remove native static builds
* WIP jenkins pipeline: enable more tests
* WIP jenkins pipeline: zip artifacts better
* WIP jenkins pipeline: get rid of path in the final zip
* WIP jenkins pipeline: minor fix, include lib and smartcont folders
* WIP jenkins pipeline: minor fix, include lib and smartcont folders into nix artifacts also
* WIP jenkins pipeline: minor fix
* WIP jenkins pipeline: minor fix
* adjust github actions for new nix builds
* cleanup
* cleanup
* cleanup
* cleanup
* rename libtonlibjson.so.0.5 to libtonlibjson.so
* Add TON build instructions to README.md
* simplify
* fix test-tonlib-offline
* set timeout per test of 300 sec
* set timeout per test of 600 sec for non nix builds
* increase test timeout to 900 sec; minor changes
* use MS VS 2022 for win TON compilation; update README.md
* use MS VS 2022 for win TON compilation; update README.md
* change path to MSVC in github workflow
* change path to MSVC in groovy pipeline
* compile ton on win, with msvc 2022 community and enterprise versions
* minor fixes
* improve network tests
* remove TON compilation against macos-11 github runner
* add `choco feature enable -n allowEmptyChecksums` since pkg-config-lite-0.28-1 does not have a checksum
* abort win compilation if 3pp can't be downloaded
* increase test timeout to 30 min
* improving test-catchain
2024-01-15 20:48:04 +00:00
|
|
|
if (NOT LATEX_FOUND)
|
|
|
|
message(STATUS "Could NOT find LATEX (this is NOT an error)")
|
|
|
|
endif()
|
2019-09-07 10:03:22 +00:00
|
|
|
#END internal
|
|
|
|
|
|
|
|
function(target_link_libraries_system target)
|
|
|
|
set(libs ${ARGN})
|
|
|
|
foreach(lib ${libs})
|
|
|
|
get_target_property(lib_include_dirs ${lib} INTERFACE_INCLUDE_DIRECTORIES)
|
|
|
|
target_include_directories(${target} SYSTEM PUBLIC ${lib_include_dirs})
|
|
|
|
target_link_libraries(${target} PUBLIC ${lib})
|
|
|
|
endforeach(lib)
|
|
|
|
endfunction(target_link_libraries_system)
|
|
|
|
|
2019-09-19 19:15:32 +00:00
|
|
|
set(TDUTILS_MIME_TYPE OFF CACHE BOOL "Generate mime type conversion")
|
2019-09-07 10:03:22 +00:00
|
|
|
add_subdirectory(tdutils)
|
|
|
|
add_subdirectory(memprof)
|
|
|
|
add_subdirectory(tdactor)
|
|
|
|
add_subdirectory(tdnet)
|
|
|
|
if (TON_USE_ROCKSDB)
|
|
|
|
option(TDDB_USE_ROCKSDB "Use rockdb" ON)
|
|
|
|
endif()
|
|
|
|
add_subdirectory(tddb)
|
|
|
|
add_subdirectory(tdtl)
|
|
|
|
add_subdirectory(tl)
|
|
|
|
add_subdirectory(terminal)
|
|
|
|
add_subdirectory(keys)
|
|
|
|
add_subdirectory(tl-utils)
|
|
|
|
add_subdirectory(adnl)
|
|
|
|
add_subdirectory(crypto)
|
|
|
|
add_subdirectory(lite-client)
|
2023-02-02 07:03:45 +00:00
|
|
|
add_subdirectory(emulator)
|
2019-09-07 10:03:22 +00:00
|
|
|
|
|
|
|
#BEGIN tonlib
|
|
|
|
add_subdirectory(tonlib)
|
|
|
|
#END tonlib
|
|
|
|
|
|
|
|
#BEGIN internal
|
2019-09-19 19:15:32 +00:00
|
|
|
if (NOT TON_ONLY_TONLIB)
|
2019-09-07 10:03:22 +00:00
|
|
|
add_subdirectory(common)
|
|
|
|
add_subdirectory(tdfec)
|
|
|
|
add_subdirectory(keyring)
|
|
|
|
add_subdirectory(fec)
|
|
|
|
add_subdirectory(rldp)
|
2020-05-27 18:10:46 +00:00
|
|
|
add_subdirectory(rldp2)
|
2019-09-07 10:03:22 +00:00
|
|
|
add_subdirectory(dht)
|
|
|
|
add_subdirectory(overlay)
|
|
|
|
add_subdirectory(catchain)
|
|
|
|
add_subdirectory(validator-session)
|
|
|
|
add_subdirectory(validator)
|
|
|
|
add_subdirectory(blockchain-explorer)
|
2020-05-27 18:10:46 +00:00
|
|
|
add_subdirectory(storage)
|
2019-09-07 10:03:22 +00:00
|
|
|
add_subdirectory(validator-engine)
|
|
|
|
add_subdirectory(validator-engine-console)
|
2020-04-27 12:01:46 +00:00
|
|
|
add_subdirectory(create-hardfork)
|
2019-09-07 10:03:22 +00:00
|
|
|
add_subdirectory(dht-server)
|
|
|
|
add_subdirectory(utils)
|
2020-02-06 17:56:46 +00:00
|
|
|
add_subdirectory(http)
|
|
|
|
add_subdirectory(rldp-http-proxy)
|
2019-09-19 19:15:32 +00:00
|
|
|
endif()
|
2019-09-07 10:03:22 +00:00
|
|
|
#END internal
|
|
|
|
|
|
|
|
if (NOT CMAKE_CROSSCOMPILING)
|
2019-09-19 19:15:32 +00:00
|
|
|
if (TDUTILS_MIME_TYPE)
|
|
|
|
set(TDMIME_AUTO tdmime_auto)
|
|
|
|
endif()
|
2019-10-23 13:43:50 +00:00
|
|
|
add_custom_target(prepare_cross_compiling DEPENDS tl_generate_common tlb_generate_block gen_fif ${TDMIME_AUTO})
|
2019-09-07 10:03:22 +00:00
|
|
|
endif()
|
|
|
|
|
|
|
|
#TESTS
|
|
|
|
add_executable(test-ed25519 test/test-td-main.cpp ${ED25519_TEST_SOURCE})
|
|
|
|
target_link_libraries(test-ed25519 PRIVATE ton_crypto)
|
|
|
|
|
|
|
|
add_executable(test-vm test/test-td-main.cpp ${TONVM_TEST_SOURCE})
|
|
|
|
target_link_libraries(test-vm PRIVATE ton_crypto fift-lib)
|
|
|
|
|
2019-10-23 13:43:50 +00:00
|
|
|
add_executable(test-smartcont test/test-td-main.cpp ${SMARTCONT_TEST_SOURCE})
|
|
|
|
target_link_libraries(test-smartcont PRIVATE smc-envelope fift-lib ton_db)
|
|
|
|
|
2021-12-05 14:41:22 +00:00
|
|
|
add_executable(test-bigint ${BIGINT_TEST_SOURCE})
|
|
|
|
target_link_libraries(test-bigint PRIVATE ton_crypto)
|
|
|
|
|
2023-11-03 11:43:34 +00:00
|
|
|
if (WINGETOPT_FOUND)
|
|
|
|
target_link_libraries_system(test-bigint wingetopt)
|
|
|
|
endif()
|
|
|
|
|
2019-09-07 10:03:22 +00:00
|
|
|
add_executable(test-cells test/test-td-main.cpp ${CELLS_TEST_SOURCE})
|
|
|
|
target_link_libraries(test-cells PRIVATE ton_crypto)
|
|
|
|
|
|
|
|
add_executable(test-fift test/test-td-main.cpp ${FIFT_TEST_SOURCE})
|
|
|
|
target_link_libraries(test-fift PRIVATE fift-lib)
|
|
|
|
|
|
|
|
add_executable(test-tdutils test/test-td-main.cpp ${TDUTILS_TEST_SOURCE})
|
|
|
|
target_link_libraries(test-tdutils PRIVATE tdutils ${CMAKE_THREAD_LIBS_INIT} memprof ${JEMALLOC_LIBRARIES})
|
|
|
|
#target_link_libraries_system(test-tdutils absl::base absl::container absl::hash )
|
|
|
|
#target_link_libraries_system(test-tdutils libcuckoo)
|
|
|
|
#target_include_directories(test-tdutils PRIVATE SYSTEM ${JUNCTION_ALL_INCLUDE_DIRS})
|
|
|
|
#target_link_libraries(test-tdutils PRIVATE ${JUNCTION_ALL_LIBRARIES})
|
|
|
|
|
|
|
|
add_executable(test-tdactor test/test-td-main.cpp ${TDACTOR_TEST_SOURCE})
|
|
|
|
target_link_libraries(test-tdactor PRIVATE tdactor ${CMAKE_THREAD_LIBS_INIT})
|
|
|
|
|
|
|
|
add_executable(test-net test/test-td-main.cpp ${NET_TEST_SOURCE})
|
|
|
|
target_link_libraries(test-net PRIVATE tdnet tdutils ${CMAKE_THREAD_LIBS_INIT})
|
|
|
|
|
|
|
|
#BEGIN tonlib
|
|
|
|
add_executable(test-tonlib ${TONLIB_ONLINE_TEST_SOURCE})
|
|
|
|
target_link_libraries(test-tonlib tdutils tdactor adnllite tl_api ton_crypto ton_block tl_tonlib_api tonlib)
|
|
|
|
|
|
|
|
add_executable(test-tonlib-offline test/test-td-main.cpp ${TONLIB_OFFLINE_TEST_SOURCE})
|
|
|
|
target_link_libraries(test-tonlib-offline tdutils tdactor adnllite tl_api ton_crypto ton_block fift-lib tl_tonlib_api tonlib)
|
2019-09-25 13:50:58 +00:00
|
|
|
|
|
|
|
if (NOT CMAKE_CROSSCOMPILING)
|
|
|
|
add_dependencies(test-tonlib-offline gen_fif)
|
|
|
|
endif()
|
2019-09-07 10:03:22 +00:00
|
|
|
#END tonlib
|
|
|
|
|
|
|
|
#BEGIN internal
|
2019-09-19 19:15:32 +00:00
|
|
|
if (NOT TON_ONLY_TONLIB)
|
2019-09-07 10:03:22 +00:00
|
|
|
add_executable(test-db test/test-td-main.cpp ${TONDB_TEST_SOURCE})
|
2020-05-27 18:10:46 +00:00
|
|
|
target_link_libraries(test-db PRIVATE ton_db memprof tdfec)
|
|
|
|
|
|
|
|
add_executable(test-storage test/test-td-main.cpp ${STORAGE_TEST_SOURCE})
|
|
|
|
target_link_libraries(test-storage PRIVATE storage ton_db memprof tl_api tl-utils fec rldp2)
|
2019-09-07 10:03:22 +00:00
|
|
|
|
2020-04-27 12:01:46 +00:00
|
|
|
add_executable(test-rocksdb test/test-rocksdb.cpp)
|
|
|
|
target_link_libraries(test-rocksdb PRIVATE memprof tddb tdutils)
|
|
|
|
|
2019-09-07 10:03:22 +00:00
|
|
|
add_executable(test-tddb test/test-td-main.cpp ${TDDB_TEST_SOURCE})
|
|
|
|
target_link_libraries(test-tddb PRIVATE tdutils tddb ${CMAKE_THREAD_LIBS_INIT} memprof)
|
|
|
|
|
|
|
|
add_executable(test-fec test/test-td-main.cpp ${FEC_TEST_SOURCE})
|
|
|
|
target_link_libraries(test-fec PRIVATE tdfec tdutils ${CMAKE_THREAD_LIBS_INIT})
|
|
|
|
if (USE_LIBRAPTORQ)
|
|
|
|
target_link_libraries(test-fec PRIVATE third_party_fec)
|
|
|
|
target_compile_definitions(test-fec PRIVATE "USE_LIBRAPTORQ=1")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
add_executable(test-hello-world test/test-hello-world.cpp )
|
2019-11-28 14:44:14 +00:00
|
|
|
target_link_libraries(test-hello-world tl_api ton_crypto)
|
2019-09-07 10:03:22 +00:00
|
|
|
|
|
|
|
add_executable(test-adnl test/test-adnl.cpp)
|
|
|
|
target_link_libraries(test-adnl adnl adnltest dht tl_api)
|
|
|
|
add_executable(test-dht test/test-dht.cpp)
|
|
|
|
target_link_libraries(test-dht adnl adnltest dht tl_api)
|
|
|
|
add_executable(test-rldp test/test-rldp.cpp)
|
|
|
|
target_link_libraries(test-rldp adnl adnltest dht rldp tl_api)
|
2020-05-27 18:10:46 +00:00
|
|
|
add_executable(test-rldp2 test/test-rldp2.cpp)
|
|
|
|
target_link_libraries(test-rldp2 adnl adnltest dht rldp2 tl_api)
|
2019-09-07 10:03:22 +00:00
|
|
|
add_executable(test-validator-session-state test/test-validator-session-state.cpp)
|
|
|
|
target_link_libraries(test-validator-session-state adnl dht rldp validatorsession tl_api)
|
|
|
|
|
2024-08-23 08:46:40 +00:00
|
|
|
add_executable(test-overlay test/test-overlay.cpp)
|
|
|
|
target_link_libraries(test-overlay overlay tdutils tdactor adnl adnltest tl_api dht )
|
2019-09-07 10:03:22 +00:00
|
|
|
add_executable(test-catchain test/test-catchain.cpp)
|
|
|
|
target_link_libraries(test-catchain overlay tdutils tdactor adnl adnltest rldp tl_api dht
|
|
|
|
catchain )
|
|
|
|
add_executable(test-ton-collator test/test-ton-collator.cpp)
|
|
|
|
target_link_libraries(test-ton-collator overlay tdutils tdactor adnl tl_api dht
|
|
|
|
catchain validatorsession validator-disk ton_validator validator-disk )
|
|
|
|
|
2020-02-06 17:56:46 +00:00
|
|
|
add_executable(test-http test/test-http.cpp)
|
|
|
|
target_link_libraries(test-http PRIVATE tonhttp)
|
|
|
|
|
2024-07-02 09:40:57 +00:00
|
|
|
add_executable(test-emulator test/test-td-main.cpp emulator/test/emulator-tests.cpp)
|
|
|
|
target_link_libraries(test-emulator PRIVATE emulator)
|
|
|
|
|
2019-09-07 10:03:22 +00:00
|
|
|
get_directory_property(HAS_PARENT PARENT_DIRECTORY)
|
|
|
|
if (HAS_PARENT)
|
|
|
|
set(ALL_TEST_SOURCE
|
|
|
|
${TDUTILS_TEST_SOURCE}
|
|
|
|
${TDACTOR_TEST_SOURCE}
|
|
|
|
${NET_TEST_SOURCE}
|
|
|
|
${TDDB_TEST_SOURCE}
|
|
|
|
${FEC_TEST_SOURCE}
|
|
|
|
${ED25519_TEST_SOURCE}
|
|
|
|
${TONDB_TEST_SOURCE}
|
2021-12-05 14:41:22 +00:00
|
|
|
${BIGNUM_TEST_SOURCE}
|
2019-09-07 10:03:22 +00:00
|
|
|
${CELLS_TEST_SOURCE} # ${TONVM_TEST_SOURCE} ${FIFT_TEST_SOURCE} ${TONLIB_ONLINE_TEST_SOURCE}
|
|
|
|
PARENT_SCOPE)
|
|
|
|
endif()
|
|
|
|
add_library(all_tests INTERFACE)
|
|
|
|
target_link_libraries(all_tests INTERFACE tdutils tdactor tdnet tdfec ton_db ton_crypto fift-lib)
|
2019-09-19 19:15:32 +00:00
|
|
|
endif()
|
2019-09-07 10:03:22 +00:00
|
|
|
#END internal
|
|
|
|
|
|
|
|
enable_testing()
|
|
|
|
set(TEST_OPTIONS "--regression ${CMAKE_CURRENT_SOURCE_DIR}/test/regression-tests.ans --filter -Bench")
|
|
|
|
separate_arguments(TEST_OPTIONS)
|
2019-10-23 13:43:50 +00:00
|
|
|
add_test(test-ed25519-crypto crypto/test-ed25519-crypto)
|
2019-09-07 10:03:22 +00:00
|
|
|
add_test(test-ed25519 test-ed25519)
|
2021-12-05 14:41:22 +00:00
|
|
|
add_test(test-bigint test-bigint)
|
2019-09-07 10:03:22 +00:00
|
|
|
add_test(test-vm test-vm ${TEST_OPTIONS})
|
|
|
|
add_test(test-fift test-fift ${TEST_OPTIONS})
|
|
|
|
add_test(test-cells test-cells ${TEST_OPTIONS})
|
2019-10-23 13:43:50 +00:00
|
|
|
add_test(test-smartcont test-smartcont)
|
2019-09-07 10:03:22 +00:00
|
|
|
add_test(test-net test-net)
|
|
|
|
add_test(test-actors test-tdactor)
|
2024-07-10 12:00:18 +00:00
|
|
|
add_test(test-emulator test-emulator)
|
2019-09-07 10:03:22 +00:00
|
|
|
|
|
|
|
#BEGIN tonlib
|
|
|
|
add_test(test-tdutils test-tdutils)
|
|
|
|
add_test(test-tonlib-offline test-tonlib-offline)
|
|
|
|
#END tonlib
|
|
|
|
|
2023-11-03 11:43:34 +00:00
|
|
|
# FunC tests
|
|
|
|
if (NOT NIX)
|
|
|
|
if (MSVC)
|
|
|
|
set(PYTHON_VER "python")
|
|
|
|
else()
|
|
|
|
set(PYTHON_VER "python3")
|
|
|
|
endif()
|
|
|
|
add_test(
|
|
|
|
NAME test-func
|
|
|
|
COMMAND ${PYTHON_VER} run_tests.py tests/
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/crypto/func/auto-tests)
|
|
|
|
if (WIN32)
|
|
|
|
set_property(TEST test-func PROPERTY ENVIRONMENT
|
Improve TON build scripts and some tests (#855)
* fix macOS github actions
* fix android tonlib GH action;
* fixing wasm GH action
* strip binaries
* fix randomly failing ubuntu and wasm GH actions
* fix randomly failing ubuntu and wasm GH actions
* revert some changes
* adding more nix scripts and automated native build scripts;
debug static ton compilation
* minor fix
* do not use pkg_config if path specified
* move wasm script, run with sudo action script
* weird, fixing - cp: missing destination file operand after 'assembly/native/build-ubuntu-20.04-shared.sh'
* weird, fixing - cp: missing destination file operand after 'assembly/native/build-ubuntu-20.04-shared.sh'
* ok
* some adjustments for android and win builds
* some adjustments for android and win builds
* moving stripping inside the build script
* access rights handling; adding simple binaries' tests
* make lite-client-common, fift-lib and smc-envelope deliberately static;
add -a (artifacts) flag to build scripts;
* minor wasm build fix;
create separate tonlib android build script;
remove outdated __has_trivial_copy(T)
* add windows build - WIP
* adjust android build;
improve win build;
* adjust sodium paths for android build; use proper compiler for windows build;
* add github windows build auxiliary file
* adjust wasm build
* add portable ubuntu build
* exclude some unstable tests for some time
* compile portable binaries on ubuntu-20.04
* exclude some unstable tests
* include static gsl
* restart builds
* restart builds
* restart builds
* remove libreadline, gsl and blas dependencies in linux build
* add macos build script
* install missing autoconf in macos builds
* enable all tests and see what fails
* enable win tests and restart others
* enable win tests and fix test-smartcont.cpp
* enable win tests
* use clang-16 on mac builds, add blockchain-explorer for ubuntu builds, add portable macos build
* move sudo part outside a build scripts
* move sudo part outside a build scripts
* run llvm install with sudo
* remove libgnutls28-dev before ubuntu static compilation, include blockchain-explorer into artifacts;
remove warning: definition of implicit copy constructor for 'Stat' is deprecated because it has a user-declared copy assignment operator [-Wdeprecated-copy]
* rework wrong decision, put back system gnutls, but compile libmicrohttpd with --disable-https
* add jenkins pipeline sceleton
* WIP jenkins pipeline sceleton
* WIP jenkins pipeline changes
* WIP jenkins pipeline: add stage timout, zip and group artifacts
* WIP jenkins pipeline: macos portable build fix
* WIP jenkins pipeline: wording
* WIP jenkins pipeline: add android tonlib
* WIP jenkins pipeline: add was binaries
* WIP jenkins pipeline: add TOTAL_MEMORY 1.5gb to funcfiftlib wasm linking
* WIP jenkins pipeline: add nix build on linux aarch64
* WIP jenkins pipeline: funcfiftlib compilation fails that 16mb mem is not enough, increase to 32mb
* WIP jenkins pipeline: enable test in nix build
* WIP jenkins pipeline: add linux x86-64 nix build
* WIP jenkins pipeline: include libs in nix build
* WIP jenkins pipeline: include libs in nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: nix linux arm64 with openssl 1.1 for now
* WIP jenkins pipeline: working ubuntu arm64 libtonjson
* WIP jenkins pipeline: working ubuntu arm64 libtonjson + minor fix
* WIP jenkins pipeline: working ubuntu arm64 libtonjson + minor fix 2
* WIP jenkins pipeline: merry christmas
* WIP jenkins pipeline: merry christmas 2
* WIP jenkins pipeline: remove native static builds
* WIP jenkins pipeline: enable more tests
* WIP jenkins pipeline: zip artifacts better
* WIP jenkins pipeline: get rid of path in the final zip
* WIP jenkins pipeline: minor fix, include lib and smartcont folders
* WIP jenkins pipeline: minor fix, include lib and smartcont folders into nix artifacts also
* WIP jenkins pipeline: minor fix
* WIP jenkins pipeline: minor fix
* adjust github actions for new nix builds
* cleanup
* cleanup
* cleanup
* cleanup
* rename libtonlibjson.so.0.5 to libtonlibjson.so
* Add TON build instructions to README.md
* simplify
* fix test-tonlib-offline
* set timeout per test of 300 sec
* set timeout per test of 600 sec for non nix builds
* increase test timeout to 900 sec; minor changes
* use MS VS 2022 for win TON compilation; update README.md
* use MS VS 2022 for win TON compilation; update README.md
* change path to MSVC in github workflow
* change path to MSVC in groovy pipeline
* compile ton on win, with msvc 2022 community and enterprise versions
* minor fixes
* improve network tests
* remove TON compilation against macos-11 github runner
* add `choco feature enable -n allowEmptyChecksums` since pkg-config-lite-0.28-1 does not have a checksum
* abort win compilation if 3pp can't be downloaded
* increase test timeout to 30 min
* improving test-catchain
2024-01-15 20:48:04 +00:00
|
|
|
"FUNC_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/func.exe"
|
|
|
|
"FIFT_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/fift.exe"
|
2023-11-03 11:43:34 +00:00
|
|
|
"FIFTPATH=${CMAKE_CURRENT_SOURCE_DIR}/crypto/fift/lib/")
|
|
|
|
else()
|
|
|
|
set_property(TEST test-func PROPERTY ENVIRONMENT
|
|
|
|
"FUNC_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/func"
|
|
|
|
"FIFT_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/fift"
|
|
|
|
"FIFTPATH=${CMAKE_CURRENT_SOURCE_DIR}/crypto/fift/lib/")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
add_test(
|
|
|
|
NAME test-func-legacy
|
|
|
|
COMMAND ${PYTHON_VER} legacy_tester.py
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/crypto/func/auto-tests)
|
|
|
|
if (WIN32)
|
|
|
|
set_property(TEST test-func-legacy PROPERTY ENVIRONMENT
|
Improve TON build scripts and some tests (#855)
* fix macOS github actions
* fix android tonlib GH action;
* fixing wasm GH action
* strip binaries
* fix randomly failing ubuntu and wasm GH actions
* fix randomly failing ubuntu and wasm GH actions
* revert some changes
* adding more nix scripts and automated native build scripts;
debug static ton compilation
* minor fix
* do not use pkg_config if path specified
* move wasm script, run with sudo action script
* weird, fixing - cp: missing destination file operand after 'assembly/native/build-ubuntu-20.04-shared.sh'
* weird, fixing - cp: missing destination file operand after 'assembly/native/build-ubuntu-20.04-shared.sh'
* ok
* some adjustments for android and win builds
* some adjustments for android and win builds
* moving stripping inside the build script
* access rights handling; adding simple binaries' tests
* make lite-client-common, fift-lib and smc-envelope deliberately static;
add -a (artifacts) flag to build scripts;
* minor wasm build fix;
create separate tonlib android build script;
remove outdated __has_trivial_copy(T)
* add windows build - WIP
* adjust android build;
improve win build;
* adjust sodium paths for android build; use proper compiler for windows build;
* add github windows build auxiliary file
* adjust wasm build
* add portable ubuntu build
* exclude some unstable tests for some time
* compile portable binaries on ubuntu-20.04
* exclude some unstable tests
* include static gsl
* restart builds
* restart builds
* restart builds
* remove libreadline, gsl and blas dependencies in linux build
* add macos build script
* install missing autoconf in macos builds
* enable all tests and see what fails
* enable win tests and restart others
* enable win tests and fix test-smartcont.cpp
* enable win tests
* use clang-16 on mac builds, add blockchain-explorer for ubuntu builds, add portable macos build
* move sudo part outside a build scripts
* move sudo part outside a build scripts
* run llvm install with sudo
* remove libgnutls28-dev before ubuntu static compilation, include blockchain-explorer into artifacts;
remove warning: definition of implicit copy constructor for 'Stat' is deprecated because it has a user-declared copy assignment operator [-Wdeprecated-copy]
* rework wrong decision, put back system gnutls, but compile libmicrohttpd with --disable-https
* add jenkins pipeline sceleton
* WIP jenkins pipeline sceleton
* WIP jenkins pipeline changes
* WIP jenkins pipeline: add stage timout, zip and group artifacts
* WIP jenkins pipeline: macos portable build fix
* WIP jenkins pipeline: wording
* WIP jenkins pipeline: add android tonlib
* WIP jenkins pipeline: add was binaries
* WIP jenkins pipeline: add TOTAL_MEMORY 1.5gb to funcfiftlib wasm linking
* WIP jenkins pipeline: add nix build on linux aarch64
* WIP jenkins pipeline: funcfiftlib compilation fails that 16mb mem is not enough, increase to 32mb
* WIP jenkins pipeline: enable test in nix build
* WIP jenkins pipeline: add linux x86-64 nix build
* WIP jenkins pipeline: include libs in nix build
* WIP jenkins pipeline: include libs in nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: nix linux arm64 with openssl 1.1 for now
* WIP jenkins pipeline: working ubuntu arm64 libtonjson
* WIP jenkins pipeline: working ubuntu arm64 libtonjson + minor fix
* WIP jenkins pipeline: working ubuntu arm64 libtonjson + minor fix 2
* WIP jenkins pipeline: merry christmas
* WIP jenkins pipeline: merry christmas 2
* WIP jenkins pipeline: remove native static builds
* WIP jenkins pipeline: enable more tests
* WIP jenkins pipeline: zip artifacts better
* WIP jenkins pipeline: get rid of path in the final zip
* WIP jenkins pipeline: minor fix, include lib and smartcont folders
* WIP jenkins pipeline: minor fix, include lib and smartcont folders into nix artifacts also
* WIP jenkins pipeline: minor fix
* WIP jenkins pipeline: minor fix
* adjust github actions for new nix builds
* cleanup
* cleanup
* cleanup
* cleanup
* rename libtonlibjson.so.0.5 to libtonlibjson.so
* Add TON build instructions to README.md
* simplify
* fix test-tonlib-offline
* set timeout per test of 300 sec
* set timeout per test of 600 sec for non nix builds
* increase test timeout to 900 sec; minor changes
* use MS VS 2022 for win TON compilation; update README.md
* use MS VS 2022 for win TON compilation; update README.md
* change path to MSVC in github workflow
* change path to MSVC in groovy pipeline
* compile ton on win, with msvc 2022 community and enterprise versions
* minor fixes
* improve network tests
* remove TON compilation against macos-11 github runner
* add `choco feature enable -n allowEmptyChecksums` since pkg-config-lite-0.28-1 does not have a checksum
* abort win compilation if 3pp can't be downloaded
* increase test timeout to 30 min
* improving test-catchain
2024-01-15 20:48:04 +00:00
|
|
|
"FUNC_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/func.exe"
|
|
|
|
"FIFT_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/fift.exe"
|
2023-11-03 11:43:34 +00:00
|
|
|
"FIFTPATH=${CMAKE_CURRENT_SOURCE_DIR}/crypto/fift/lib/")
|
|
|
|
else()
|
|
|
|
set_property(TEST test-func-legacy PROPERTY ENVIRONMENT
|
|
|
|
"FUNC_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/func"
|
|
|
|
"FIFT_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/fift"
|
|
|
|
"FIFTPATH=${CMAKE_CURRENT_SOURCE_DIR}/crypto/fift/lib/")
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
2019-09-07 10:03:22 +00:00
|
|
|
#BEGIN internal
|
2019-09-19 19:15:32 +00:00
|
|
|
if (NOT TON_ONLY_TONLIB)
|
2019-11-28 14:44:14 +00:00
|
|
|
add_test(test-adnl test-adnl)
|
|
|
|
add_test(test-dht test-dht)
|
|
|
|
add_test(test-rldp test-rldp)
|
2020-05-27 18:10:46 +00:00
|
|
|
add_test(test-rldp2 test-rldp2)
|
2023-11-03 11:43:34 +00:00
|
|
|
add_test(test-validator-session-state test-validator-session-state)
|
2019-11-28 14:44:14 +00:00
|
|
|
add_test(test-catchain test-catchain)
|
|
|
|
|
2019-09-07 10:03:22 +00:00
|
|
|
add_test(test-fec test-fec)
|
|
|
|
add_test(test-tddb test-tddb ${TEST_OPTIONS})
|
|
|
|
add_test(test-db test-db ${TEST_OPTIONS})
|
2019-09-19 19:15:32 +00:00
|
|
|
endif()
|
2019-09-07 10:03:22 +00:00
|
|
|
#END internal
|