From b78fe024056eef6e182cac635c982189e479ee86 Mon Sep 17 00:00:00 2001 From: SChernykh Date: Wed, 16 Feb 2022 10:43:04 +0100 Subject: [PATCH] MacOS CI: build and static link libuv and libzmq --- .github/workflows/c-cpp.yml | 22 ++++++++++++++++++--- CMakeLists.txt | 13 ++++++++----- cmake/flags.cmake | 2 +- tests/CMakeLists.txt | 39 +++++++++++++++++++++++-------------- 4 files changed, 52 insertions(+), 24 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 0a140d0..6de91ad 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -159,13 +159,29 @@ jobs: submodules: recursive - name: Install dependencies - run: HOMEBREW_NO_AUTO_UPDATE=1 brew install cmake libuv zmq libpgm + run: HOMEBREW_NO_AUTO_UPDATE=1 brew install cmake + + - name: Build libuv + run: | + cd external/src/libuv + mkdir build + cd build + cmake .. + make -j3 + + - name: Build libzmq + run: | + cd external/src/libzmq + mkdir build + cd build + cmake .. -DWITH_TLS=OFF -DWITH_LIBSODIUM=OFF + make -j3 - name: Build p2pool run: | mkdir build cd build - cmake .. + cmake .. -DSTATIC_BINARY=ON make -j3 - name: Build tests @@ -173,7 +189,7 @@ jobs: cd tests mkdir build cd build - cmake .. + cmake .. -DSTATIC_LIBS=ON make -j3 - name: Run tests diff --git a/CMakeLists.txt b/CMakeLists.txt index a4c4115..0b8536f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 2.8.12) project(p2pool) -option(STATIC_LINUX_BINARY "Build static Linux binary" OFF) +option(STATIC_BINARY "Build static binary" OFF) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") @@ -124,15 +124,18 @@ add_definitions(/DZMQ_STATIC) add_executable(${CMAKE_PROJECT_NAME} ${HEADERS} ${SOURCES}) -if (STATIC_LINUX_BINARY) +if (STATIC_BINARY) add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_STRIP} ${CMAKE_PROJECT_NAME}) + set(STATIC_LIBS randomx) + if (NOT APPLE) + set(STATIC_LIBS ${STATIC_LIBS} pthread dl) + endif() + target_link_libraries(${CMAKE_PROJECT_NAME} - "${CMAKE_SOURCE_DIR}/external/src/libsodium/src/libsodium/.libs/libsodium.a" "${CMAKE_SOURCE_DIR}/external/src/libzmq/build/lib/libzmq.a" "${CMAKE_SOURCE_DIR}/external/src/libuv/build/libuv_a.a" - randomx - pthread + ${STATIC_LIBS} ) else() target_link_libraries(${CMAKE_PROJECT_NAME} debug ${ZMQ_LIBRARY_DEBUG} debug ${UV_LIBRARY_DEBUG} optimized ${ZMQ_LIBRARY} optimized ${UV_LIBRARY} ${LIBS}) diff --git a/cmake/flags.cmake b/cmake/flags.cmake index b1a2f8c..55c7d06 100644 --- a/cmake/flags.cmake +++ b/cmake/flags.cmake @@ -18,7 +18,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES GNU) if (WIN32) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static") else() - if (STATIC_LINUX_BINARY) + if (STATIC_BINARY) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static") else() set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++") diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 4397648..e0bb5de 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,6 +1,8 @@ cmake_minimum_required(VERSION 2.8.12) project(p2pool_tests) +option(STATIC_LIBS "Use locally built libuv and libzmq static libs" OFF) + set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_STANDARD 14) @@ -119,17 +121,28 @@ elseif (NOT APPLE) set(LIBS ${LIBS} pthread gss dl) endif() -if (CMAKE_CXX_COMPILER_ID MATCHES MSVC) - find_library(ZMQ_LIBRARY_DEBUG NAMES libzmq-v142-mt-sgd-4_3_5 PATHS "../external/lib/libzmq/Debug") - find_library(ZMQ_LIBRARY NAMES libzmq-v142-mt-s-4_3_5 PATHS "../external/lib/libzmq/Release") - find_library(UV_LIBRARY_DEBUG NAMES uv_a PATHS "../external/lib/libuv/Debug") - find_library(UV_LIBRARY NAMES uv_a PATHS "../external/lib/libuv/Release") -elseif (CMAKE_CXX_COMPILER_ID MATCHES GNU OR CMAKE_CXX_COMPILER_ID MATCHES Clang) - find_library(ZMQ_LIBRARY_DEBUG NAMES zmq libzmq.a) - find_library(ZMQ_LIBRARY NAMES zmq libzmq.a) - find_library(UV_LIBRARY_DEBUG NAMES uv libuv.a) - find_library(UV_LIBRARY NAMES uv libuv.a) - find_library(SODIUM_LIBRARY sodium) +if (STATIC_LIBS) + set(ZMQ_LIBRARY "${CMAKE_SOURCE_DIR}/../external/src/libzmq/build/lib/libzmq.a") + set(ZMQ_LIBRARY_DEBUG "${CMAKE_SOURCE_DIR}/../external/src/libzmq/build/lib/libzmq.a") + set(UV_LIBRARY_DEBUG "${CMAKE_SOURCE_DIR}/../external/src/libuv/build/libuv_a.a") + set(UV_LIBRARY "${CMAKE_SOURCE_DIR}/../external/src/libuv/build/libuv_a.a") +else() + if (CMAKE_CXX_COMPILER_ID MATCHES MSVC) + find_library(ZMQ_LIBRARY_DEBUG NAMES libzmq-v142-mt-sgd-4_3_5 PATHS "../external/lib/libzmq/Debug") + find_library(ZMQ_LIBRARY NAMES libzmq-v142-mt-s-4_3_5 PATHS "../external/lib/libzmq/Release") + find_library(UV_LIBRARY_DEBUG NAMES uv_a PATHS "../external/lib/libuv/Debug") + find_library(UV_LIBRARY NAMES uv_a PATHS "../external/lib/libuv/Release") + elseif (CMAKE_CXX_COMPILER_ID MATCHES GNU OR CMAKE_CXX_COMPILER_ID MATCHES Clang) + find_library(ZMQ_LIBRARY_DEBUG NAMES zmq libzmq.a) + find_library(ZMQ_LIBRARY NAMES zmq libzmq.a) + find_library(UV_LIBRARY_DEBUG NAMES uv libuv.a) + find_library(UV_LIBRARY NAMES uv libuv.a) + find_library(SODIUM_LIBRARY sodium) + endif() + + if (SODIUM_LIBRARY) + set(LIBS ${LIBS} ${SODIUM_LIBRARY}) + endif() endif() find_library(PGM_LIBRARY pgm) @@ -143,10 +156,6 @@ if (NORM_LIBRARY) set(LIBS ${LIBS} ${NORM_LIBRARY}) endif() -if (SODIUM_LIBRARY) - set(LIBS ${LIBS} ${SODIUM_LIBRARY}) -endif() - add_definitions(/DZMQ_STATIC /DP2POOL_LOG_DISABLE) add_executable(${CMAKE_PROJECT_NAME} ${HEADERS} ${SOURCES})