CI: Test consuming the exported CMake configs.

This commit is contained in:
Pierre Wendling 2023-08-06 15:08:28 -04:00
parent a89cd65980
commit 3139173568
No known key found for this signature in database
GPG Key ID: 42824059D6D2FA0F
5 changed files with 141 additions and 0 deletions

85
.github/workflows/cmake_config.yml vendored Normal file
View File

@ -0,0 +1,85 @@
name: cmake_config
on: [push, pull_request]
jobs:
cmake-check:
defaults:
run:
shell: bash
strategy:
matrix:
os: [windows-latest, macos-latest, ubuntu-latest]
runs-on: ${{ matrix.os }}
continue-on-error: false
name: ${{ matrix.os }}
steps:
- name: Setup Windows dependencies
if: runner.os == 'Windows'
uses: msys2/setup-msys2@v2
with:
update: true
install: >-
autoconf
automake
diffutils
libtool
gcc
git
patch
perl
- name: Setup macOS dependencies
if: runner.os == 'macOS'
run: brew install automake
- uses: actions/checkout@main
- name: Prepare source tree for build (Windows)
if: runner.os == 'Windows'
run: ./autogen.sh
shell: msys2 {0}
- name: Prepare source tree for build (Unix)
if: runner.os != 'Windows'
run: ./autogen.sh
- name: Configure
run: |
cmake -S . \
-B build \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/../local
- name: Build
run: cmake --build build --config Release --verbose
- name: Install
run: cmake --install build --config Release
- name: Consume from the build directory - Configure
run: |
cmake -S tests/cmake \
-B consumer-build \
-D CMAKE_BUILD_TYPE=Release \
-D LibreSSL_DIR=$GITHUB_WORKSPACE/build
- name: Consume from the build directory - Build
run: cmake --build consumer-build --config Release --verbose
- name: Consume from the install directory (CMAKE_PREFIX_PATH) - Configure
run: |
cmake -S tests/cmake \
-B consumer-install-prefix \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/../local
- name: Consume from the install directory (CMAKE_PREFIX_PATH) - Build
run: cmake --build consumer-install-prefix --config Release --verbose
- name: Consume from the install directory (LibreSSL_DIR) - Configure
run: |
cmake -S tests/cmake \
-B consumer-install-dir \
-D CMAKE_BUILD_TYPE=Release \
-D LibreSSL_DIR=$GITHUB_WORKSPACE/../local/lib/cmake/LibreSSL
- name: Consume from the install directory (LibreSSL_DIR) - Build
run: cmake --build consumer-install-dir --config Release --verbose

View File

@ -0,0 +1,37 @@
cmake_minimum_required(VERSION 3.5)
project(LibreSSL_Consumer LANGUAGES C)
find_package(
LibreSSL
CONFIG
REQUIRED
COMPONENTS Crypto SSL TLS
)
set(RESULTS_TO_CHECK
"LIBRESSL_VERSION"
"LIBRESSL_FOUND"
"LIBRESSL_INCLUDE_DIR"
"LIBRESSL_LIBRARIES"
"LIBRESSL_CRYPTO_LIBRARY"
"LIBRESSL_SSL_LIBRARY"
"LIBRESSL_TLS_LIBRARY"
)
foreach(RESULT_VAR IN LISTS RESULTS_TO_CHECK)
if(${RESULT_VAR})
message(STATUS "${RESULT_VAR}: ${${RESULT_VAR}}")
else()
message(FATAL_ERROR "${RESULT_VAR} was not set by the package.")
endif()
endforeach()
add_executable(crypto crypto.c)
target_link_libraries(crypto PRIVATE LibreSSL::Crypto)
add_executable(ssl ssl.c)
target_link_libraries(ssl PRIVATE LibreSSL::SSL)
add_executable(tls tls.c)
target_link_libraries(tls PRIVATE LibreSSL::TLS)

7
tests/cmake/crypto.c Normal file
View File

@ -0,0 +1,7 @@
#include <openssl/crypto.h>
int main(void) {
OPENSSL_init_crypto(0, NULL);
OPENSSL_cleanup();
return 0;
}

6
tests/cmake/ssl.c Normal file
View File

@ -0,0 +1,6 @@
#include <openssl/ssl.h>
int main(void) {
SSL_library_init();
return 0;
}

6
tests/cmake/tls.c Normal file
View File

@ -0,0 +1,6 @@
#include <tls.h>
int main(void) {
tls_init();
return 0;
}