mirror of
https://github.com/ton-blockchain/ton
synced 2025-02-12 19:22:37 +00:00
* improve windows builds * install nasm for openssl compilation on win * install nasm for openssl compilation on win for github * add create-state, proxy-liteserver, rldp-http-proxy, http-proxy, adnl-proxy, dht-server, libtonlibjson.so and libemulator.so to docker image * build new artifacts inside Docker * add files smartcont/auto/* to docker image * build arm64 in docker branch build * improve secp256k1 build * adding natively portable binaries (all statically linked with libc++, without nixpkgs help) for x86-64 linux * install missing headers on ubuntu 20.04 * use clang-16 on ubuntu 20.04 * remove gsl for portable artifacts; add -f key to generate-random-id in order to read addr_list from file; * typo * decode json * decode json * add github workflow for appimages creation * add missing dependencies * use libc++ for appimages artifacts * typo * appimages wihtout libc++ * appimages with libc++ and some checks * add appimages to release (for testing) * add appimages to release (for testing) * add appimages to release (for testing) * add appimages to release (for testing) 2 * add appimages to release (for testing) 3 * appimages only on ubuntu 22 with ssl-3 for now * appimages only on ubuntu 20 with ssl-3 for now * appimages only on ubuntu 20 with ssl-3 for now * add export LD_LIBRARY_PATH="${APPDIR}/usr/lib:${LD_LIBRARY_PATH}" to appimage AppRun * create release * appimages without jemalloc * bind specific libraries to appimages * add libreadline * add plain portable libs * add proper /lib/x86_64-linux-gnu/libreadline.so.8 * app images build with libc * try to ensure ABI compatibility with older glibc * try to ensure ABI compatibility with older glibc for shared libraries * shared lib without libc but with D_GLIBCXX_USE_CXX11_ABI and -static-libgcc -static-libstdc++ * add -fPIC -fcommon * add /lib/x86_64-linux-gnu/libstdc++.so.6 to static binaries * add -static-libgcc -static-libstdc++ to libtonlibjson and emulator when PORTABLE=1 * add -static-libgcc -static-libstdc++ to libtonlibjson and emulator when PORTABLE=1 * update emulator portable * Update CMakeLists.txt * test portable macos binaries * do not use -static-libgcc -static-libstdc++ on mac for shared libs * do not use -static-libgcc -static-libstdc++ on mac for shared libs * adjust create-release.yml * minor fixes, typos * minor fixes * linux apps double check * avoid infinite loop when place in system bin dir * avoid infinite loop when place in system bin dir 2 * test compilation on linux arm64 * test appimages on arm64 linux * test appimages on arm64 linux 2 * add portable linux arm64 to release * clean up * update README.md
73 lines
2.8 KiB
CMake
73 lines
2.8 KiB
CMake
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
|
|
|
|
option(BUILD_SHARED_LIBS "Use \"OFF\" for a static build." ON)
|
|
|
|
if (NOT OPENSSL_FOUND)
|
|
find_package(OpenSSL REQUIRED)
|
|
endif()
|
|
|
|
set(EMULATOR_STATIC_SOURCE
|
|
transaction-emulator.cpp
|
|
tvm-emulator.hpp
|
|
)
|
|
|
|
set(EMULATOR_HEADERS
|
|
transaction-emulator.h
|
|
emulator-extern.h
|
|
)
|
|
|
|
set(EMULATOR_SOURCE
|
|
emulator-extern.cpp
|
|
)
|
|
|
|
set(EMULATOR_EMSCRIPTEN_SOURCE
|
|
emulator-emscripten.cpp
|
|
)
|
|
|
|
include(GenerateExportHeader)
|
|
|
|
add_library(emulator_static STATIC ${EMULATOR_STATIC_SOURCE})
|
|
target_link_libraries(emulator_static PUBLIC ton_crypto smc-envelope)
|
|
|
|
if (NOT USE_EMSCRIPTEN AND BUILD_SHARED_LIBS)
|
|
add_library(emulator SHARED ${EMULATOR_SOURCE} ${EMULATOR_HEADERS})
|
|
else()
|
|
add_library(emulator STATIC ${EMULATOR_SOURCE} ${EMULATOR_HEADERS})
|
|
endif()
|
|
|
|
if (PORTABLE AND NOT APPLE)
|
|
target_link_libraries(emulator PUBLIC emulator_static git -static-libgcc -static-libstdc++)
|
|
else()
|
|
target_link_libraries(emulator PUBLIC emulator_static git)
|
|
endif()
|
|
|
|
generate_export_header(emulator EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/emulator_export.h)
|
|
target_include_directories(emulator PUBLIC
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
|
|
if (APPLE)
|
|
set_target_properties(emulator PROPERTIES LINK_FLAGS "-Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/emulator_export_list")
|
|
endif()
|
|
|
|
if (USE_EMSCRIPTEN)
|
|
add_executable(emulator-emscripten ${EMULATOR_EMSCRIPTEN_SOURCE})
|
|
target_link_libraries(emulator-emscripten PUBLIC emulator)
|
|
target_link_options(emulator-emscripten PRIVATE -sEXPORTED_RUNTIME_METHODS=UTF8ToString,stringToUTF8,allocate,ALLOC_NORMAL,lengthBytesUTF8)
|
|
target_link_options(emulator-emscripten PRIVATE -sEXPORTED_FUNCTIONS=_emulate,_free,_malloc,_run_get_method,_create_emulator,_destroy_emulator,_emulate_with_emulator,_version)
|
|
target_link_options(emulator-emscripten PRIVATE -sEXPORT_NAME=EmulatorModule)
|
|
target_link_options(emulator-emscripten PRIVATE -sERROR_ON_UNDEFINED_SYMBOLS=0)
|
|
target_link_options(emulator-emscripten PRIVATE -Oz)
|
|
target_link_options(emulator-emscripten PRIVATE -sIGNORE_MISSING_MAIN=1)
|
|
target_link_options(emulator-emscripten PRIVATE -sAUTO_NATIVE_LIBRARIES=0)
|
|
target_link_options(emulator-emscripten PRIVATE -sMODULARIZE=1)
|
|
target_link_options(emulator-emscripten PRIVATE -sENVIRONMENT=web)
|
|
target_link_options(emulator-emscripten PRIVATE -sFILESYSTEM=0)
|
|
target_link_options(emulator-emscripten PRIVATE -sALLOW_MEMORY_GROWTH=1)
|
|
target_link_options(emulator-emscripten PRIVATE -fexceptions)
|
|
if (USE_EMSCRIPTEN_NO_WASM)
|
|
target_link_options(emulator-emscripten PRIVATE -sWASM=0)
|
|
endif()
|
|
target_compile_options(emulator-emscripten PRIVATE -fexceptions)
|
|
endif()
|
|
|
|
install(TARGETS emulator ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)
|