From 70880bb163ddcaa98cdc15e9e9b1c2208ec0f805 Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Thu, 18 Apr 2024 10:42:16 +0200 Subject: [PATCH] Changed project-wide shared libs override name and added tests --- cmake/ecbuild_project.cmake | 7 +++++-- tests/ecbuild_shared_libs/build-and-run.sh | 21 ++++++++++++++++++++- tests/ecbuild_shared_libs/clean.sh | 1 + 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/cmake/ecbuild_project.cmake b/cmake/ecbuild_project.cmake index b1072b2..2f908a3 100644 --- a/cmake/ecbuild_project.cmake +++ b/cmake/ecbuild_project.cmake @@ -72,8 +72,11 @@ macro( project _project_name ) ecbuild_declare_project() ### override BUILD_SHARED_LIBS property - if( DEFINED ${PNAME}_SHARED_LIBS ) - set( BUILD_SHARED_LIBS ${${PNAME}_SHARED_LIBS} ) + if( DEFINED ${PNAME}_BUILD_SHARED_LIBS ) + if( NOT ${${PNAME}_BUILD_SHARED_LIBS} MATCHES "ON|OFF" ) + ecbuild_critical( "${${PNAME}_BUILD_SHARED_LIBS} must be one of [ON|OFF]" ) + endif() + set( BUILD_SHARED_LIBS ${${PNAME}_BUILD_SHARED_LIBS} ) ecbuild_debug( "ecbuild_project(${_project_name}): static libraries set as default for project" ) endif() diff --git a/tests/ecbuild_shared_libs/build-and-run.sh b/tests/ecbuild_shared_libs/build-and-run.sh index 2f6e895..79ed541 100755 --- a/tests/ecbuild_shared_libs/build-and-run.sh +++ b/tests/ecbuild_shared_libs/build-and-run.sh @@ -28,14 +28,33 @@ if [[ $(uname) == "Darwin" ]]; then fi static_ext="a" +logf=$HERE/test_ecbuild_shared_libs.log + # enable shared libraries across project $SOURCE/clean.sh -ecbuild -DENABLE_TESTS=OFF -DBUILD_SHARED_LIBS=OFF $SOURCE/test_project -B $HERE/build +ecbuild -DENABLE_TESTS=OFF -DTEST_SHARED_LIBS_BUILD_SHARED_LIBS=OFF $SOURCE/test_project -B $HERE/build +cmake --build build +check_lib_exists test_shared_libs ${static_ext} +check_lib_exists lib2 ${static_ext} +check_lib_exists lib1 ${dyn_ext} + +# test that BUILD_SHARED_LIBS is overriden +$SOURCE/clean.sh +ecbuild -DENABLE_TESTS=OFF -DTEST_SHARED_LIBS_BUILD_SHARED_LIBS=OFF -DBUILD_SHARED_LIBS=ON $SOURCE/test_project -B $HERE/build cmake --build build check_lib_exists test_shared_libs ${static_ext} check_lib_exists lib2 ${static_ext} check_lib_exists lib1 ${dyn_ext} +# test ecbuild failure for invalid argument +$SOURCE/clean.sh +ecbuild -DENABLE_TESTS=OFF -DTEST_SHARED_LIBS_BUILD_SHARED_LIBS=SHARED $SOURCE/test_project -B $HERE/build >$logf 2>&1 || result=$? +if [ ! $result ]; then + echo "ecbuild should have failed for invalid argument" + cat $logf + exit 1 +fi + # enable target specific override 1 $SOURCE/clean.sh ecbuild -DENABLE_TESTS=OFF -DECBUILD_TARGET_test_shared_libs_TYPE=SHARED -DBUILD_SHARED_LIBS=OFF $SOURCE/test_project -B $HERE/build diff --git a/tests/ecbuild_shared_libs/clean.sh b/tests/ecbuild_shared_libs/clean.sh index 730931d..e8210f0 100755 --- a/tests/ecbuild_shared_libs/clean.sh +++ b/tests/ecbuild_shared_libs/clean.sh @@ -7,3 +7,4 @@ HERE=${CMAKE_CURRENT_BINARY_DIR:-"$( cd $( dirname "${BASH_SOURCE[0]}" ) && pwd # --------------------- cleanup ------------------------ echo "cleaning $HERE" rm -rf $HERE/build +rm -f $HERE/*.log