Skip to content

Commit

Permalink
#1648 building dependencies with vcpkg (skip ci)
Browse files Browse the repository at this point in the history
  • Loading branch information
CAMOBAP committed Nov 15, 2021
1 parent 86ba9d2 commit 6cf1790
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 104 deletions.
61 changes: 32 additions & 29 deletions .github/workflows/ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,14 @@ env:
BUILD_MODE: normal
GPG_VERSION: stable
USE_STATIC_DEPENDENCIES: yes
VCPKG_ROOT: '/usr/local/share/vcpkg'

jobs:
tests:
name: ${{ matrix.os }} [CC ${{ matrix.env.CC }}; GnuPG stable]
runs-on: ${{ matrix.os }}
# if: "!contains(github.event.head_commit.message, 'skip ci')"
timeout-minutes: 50
strategy:
fail-fast: false
matrix:
Expand All @@ -36,43 +39,43 @@ jobs:
CXX: g++
- CC: clang
CXX: clang++
if: "!contains(github.event.head_commit.message, 'skip ci')"
env: ${{ matrix.env }}
timeout-minutes: 50
triplet: [x64-linux, x64-linux-dynamic]
build_type: [Release, Debug]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 1
- name: Setup environment

- run: ci/install_noncacheable_dependencies.sh

- if: matrix.triplet == 'x64-linux-dynamic'
run: |
. ci/gha/setup-env.inc.sh
ci/install_noncacheable_dependencies.sh
- name: Cache
id: cache
uses: actions/cache@v2
cp ${{ env.VCPKG_ROOT }}/triplets/x64-linux.cmake ${{ env.VCPKG_ROOT }}/triplets/x64-linux-dynamic.cmake
sed -i -- 's/static/dynamic/g' ${{ env.VCPKG_ROOT }}/triplets/x64-linux-dynamic.cmake
- uses: actions/cache@v2
with:
path: ${{ env.CACHE_DIR }}
key: ${{ github.workflow }}-${{ runner.os }}-${{ env.BUILD_MODE }}-${{ matrix.env.CC }}-gpg-${{ env.GPG_VERSION }}-${{ hashFiles('ci/**') }}-${{ hashFiles('.github/workflows/**') }}
- name: Build cache
if: steps.cache.outputs.cache-hit != 'true'
run: |
set -x
ci/install_cacheable_dependencies.sh
- name: tests
run: |
set -x
ci/run.sh
- name: Package
run: |
set -x
cd ${LOCAL_BUILDS}/rnp-build
cpack -G DEB -D CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS="${BOTAN_INSTALL}/lib;${JSONC_INSTALL}/lib;${GPG_INSTALL}/lib"
path: ${{ env.VCPKG_ROOT }}
key: vcpkg-ubuntu-${{ hashFiles('vcpkg.txt') }}

- run: vcpkg install --triplet ${{ matrix.triplet }} $(cat vcpkg.txt)

- run: |
cmake -B ./build -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
-DVCPKG_TARGET_TRIPLET=${{ matrix.triplet }} \
-DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake .
- run: cmake --build ./build

- run: cmake --install ./build

- run: cpack -B ./build -G DEB
cmake-offline-googletest-src:
env:
GTEST_SOURCES: /usr/src/googletest
RNP_TESTS: rnp_tests
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'skip ci')"
if: false
timeout-minutes: 30
steps:
- uses: actions/checkout@v2
Expand Down Expand Up @@ -106,7 +109,7 @@ jobs:
DOWNLOAD_GTEST: Off
RNP_TESTS: rnp_tests
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'skip ci')"
if: false
timeout-minutes: 50
steps:
- uses: actions/checkout@v2
Expand Down Expand Up @@ -149,7 +152,7 @@ jobs:
DOWNLOAD_RUBYRNP: Off
RNP_TESTS: rnp_tests.hash_test_success
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'skip ci')"
if: false
timeout-minutes: 50
steps:
- uses: actions/checkout@v2
Expand Down Expand Up @@ -179,7 +182,7 @@ jobs:
! ls -la src/tests/ | grep 'ruby' > /dev/null
version-cmake-up-to-date:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'skip ci')"
if: false
timeout-minutes: 10
steps:
- uses: actions/checkout@v2
Expand Down
87 changes: 12 additions & 75 deletions src/examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,83 +44,20 @@ if(MSVC)
)
endif()

add_executable(generate generate.c)
foreach(exe_name generate encrypt decrypt sign verify dump)
add_executable(${exe_name} ${exe_name}.c)

target_include_directories(generate
PRIVATE
"${PROJECT_SOURCE_DIR}/src"
"${PROJECT_SOURCE_DIR}/src/lib"
)

target_link_libraries(generate
PRIVATE
librnp
)

add_executable(encrypt encrypt.c)

target_include_directories(encrypt
PRIVATE
"${PROJECT_SOURCE_DIR}/src"
"${PROJECT_SOURCE_DIR}/src/lib"
)

target_link_libraries(encrypt
PRIVATE
librnp
)

add_executable(decrypt decrypt.c)

target_include_directories(decrypt
PRIVATE
"${PROJECT_SOURCE_DIR}/src"
"${PROJECT_SOURCE_DIR}/src/lib"
)

target_link_libraries(decrypt
PRIVATE
librnp
)

add_executable(sign sign.c)

target_include_directories(sign
PRIVATE
"${PROJECT_SOURCE_DIR}/src"
"${PROJECT_SOURCE_DIR}/src/lib"
)

target_link_libraries(sign
PRIVATE
librnp
)

add_executable(verify verify.c)

target_include_directories(verify
PRIVATE
"${PROJECT_SOURCE_DIR}/src"
"${PROJECT_SOURCE_DIR}/src/lib"
)

target_link_libraries(verify
PRIVATE
librnp
)

add_executable(dump dump.c)

target_include_directories(dump
PRIVATE
"${PROJECT_SOURCE_DIR}/src"
"${PROJECT_SOURCE_DIR}/src/lib"
)
target_include_directories(${exe_name}
PRIVATE
"${PROJECT_SOURCE_DIR}/src"
"${PROJECT_SOURCE_DIR}/src/lib"
)

target_link_libraries(dump
PRIVATE
librnp
)
target_link_libraries(${exe_name}
PRIVATE
librnp
)
endforeach()

if(MSVC)
target_include_directories(dump
Expand Down
16 changes: 16 additions & 0 deletions src/lib/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,22 @@ else()
add_library(librnp-static ALIAS librnp)
endif()

if (BOTAN2_LIBRARY MATCHES "${CMAKE_STATIC_LIBRARY_SUFFIX}$")
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
# /usr/bin/ld: libbotan-2.a(src_lib_utils_thread_utils_thread_pool.o):
# in function `std::thread::thread<void (Botan::Thread_Pool::*)(), Botan::Thread_Pool*, void>(
# void (Botan::Thread_Pool::*&&)(), Botan::Thread_Pool*&&)':
# /usr/include/c++/9/thread:126: undefined reference to `pthread_create'
# target_link_options(librnp-obj INTERFACE -pthread)
if (BUILD_SHARED_LIBS)
target_link_options(librnp-static INTERFACE -pthread)
target_link_options(librnp PRIVATE -pthread)
else()
target_link_options(librnp INTERFACE -pthread)
endif()
endif()
endif()

foreach (prop LINK_LIBRARIES INTERFACE_LINK_LIBRARIES INCLUDE_DIRECTORIES INTERFACE_INCLUDE_DIRECTORIES)
get_target_property(val librnp-obj ${prop})
set_property(TARGET librnp PROPERTY ${prop} ${val})
Expand Down

0 comments on commit 6cf1790

Please sign in to comment.