From 7b326c2d2274f798240856b6eec634536c73ec7e Mon Sep 17 00:00:00 2001 From: Stephen L Arnold Date: Sat, 22 Feb 2025 16:57:32 -0800 Subject: [PATCH] fix: dev: cleanup googletest bits for consistent paths to gtest libs * use includes from source dir when using VENDOR_GTEST * be sure and link against both gtest libs with either option Signed-off-by: Stephen L Arnold --- .github/workflows/ci.yml | 4 ++-- .github/workflows/conda-dev.yml | 7 +++++-- CMakeLists.txt | 23 +++++++++++------------ test/gia/CMakeLists.txt | 5 +---- test/gia/gia_test.cc | 2 +- tox.ini | 2 +- 6 files changed, 21 insertions(+), 22 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e3e81b4d43..af380c1918 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -55,7 +55,7 @@ jobs: os: ubuntu-22.04 compiler: clang version: "14" - toxcmd: base + toxcmd: clang - name: macOS-13-gcc os: macOS-13 @@ -115,7 +115,7 @@ jobs: tox -e ${{ matrix.toxcmd }} - uses: actions/upload-artifact@v4 - if: matrix.name == 'ubuntu-20.04-clang' + if: matrix.name == 'ubuntu-22.04-clang-14' with: name: src_coverage_data path: | diff --git a/.github/workflows/conda-dev.yml b/.github/workflows/conda-dev.yml index b33ebc5c72..16f8b39255 100644 --- a/.github/workflows/conda-dev.yml +++ b/.github/workflows/conda-dev.yml @@ -22,16 +22,19 @@ jobs: - os: 'ubuntu-22.04' generator: 'Ninja' build_type: 'Release' + extra_args: '-DBUILD_SHARED_LIBS=ON -DABC_USE_SONAME=ON ' - os: 'ubuntu-24.04' generator: 'Ninja' build_type: 'RelWithDebInfo' + extra_args: '-DBUILD_SHARED_LIBS=ON -DABC_USE_SONAME=ON ' - os: 'macOS-14' generator: 'Ninja' build_type: 'Debug' + extra_args: '-DBUILD_SHARED_LIBS=ON -DABC_USE_SONAME=ON ' - os: 'windows-2019' generator: 'Ninja' build_type: 'Release' - extra_args: '-DABC_USE_NO_PTHREADS=ON -DABC_USE_NO_READLINE=ON' + extra_args: '-DABC_USE_NO_PTHREADS=ON -DABC_USE_NO_READLINE=ON -DBUILD_SHARED_LIBS=OFF' env: OS: ${{ matrix.os }} PY_VER: ${{ matrix.python-version }} @@ -87,7 +90,7 @@ jobs: --build-generator "${{ matrix.generator }}" \ --build-and-test . build \ --build-options ${CMAKE_ARGS} ${{ matrix.extra_args }} \ - -DBUILD_SHARED_LIBS=ON -DABC_USE_SONAME=ON -DCMAKE_PREFIX_PATH="$CONDA_PREFIX" \ + -DCMAKE_PREFIX_PATH="$CONDA_PREFIX" \ --test-command ctest -V \ --build-config "${{ matrix.build_type }}" \ --rerun-failed --output-on-failure diff --git a/CMakeLists.txt b/CMakeLists.txt index 1defda90e3..d690578f0c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ set(LIBRARY_SOVERSION 1) project( abc - LANGUAGES C CXX + LANGUAGES CXX C VERSION ${SCM_VERSION_INFO} ) @@ -432,10 +432,8 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") endif() endif() - if(VENDOR_GTEST) include(FetchContent) - option(BUILD_GMOCK OFF) option(INSTALL_GTEST OFF) FetchContent_Declare( googletest @@ -444,21 +442,22 @@ if(VENDOR_GTEST) #GIT_REPOSITORY https://github.com/google/googletest.git #GIT_TAG v1.14.0 ) - set(gtest_force_shared_crt - ON - CACHE BOOL "" FORCE - ) + set(gtest_force_shared_crt ON CACHE BOOL "Always use msvcrt.dll" FORCE) + FetchContent_MakeAvailable(googletest) + include_directories(${gtest_SOURCE_DIR}/include) + set(GTEST_LINK_LIBRARIES GTest::gtest GTest::gtest_main) endif() if(BUILD_TESTING) if(NOT VENDOR_GTEST) - find_package(GTest REQUIRED) - else() - FetchContent_MakeAvailable(googletest) + find_package(GTest 1.14 REQUIRED) + include_directories(${GTEST_INCLUDE_DIRS}) + set(GTEST_LINK_LIBRARIES ${GTEST_BOTH_LIBRARIES}) endif() + message(STATUS "GTest libraries: ${GTEST_LINK_LIBRARIES}") + message(STATUS "test discovery enabled") include(GoogleTest) - set(GTEST_LIBS gtest_main gtest "${CMAKE_THREAD_LIBS_INIT}") set(test_SRCS src/demo.c) if(ABC_USE_NAMESPACE) @@ -467,7 +466,7 @@ if(BUILD_TESTING) add_executable(base_test ${test_SRCS}) target_compile_options(base_test PUBLIC ${GTEST_CFLAGS}) target_link_libraries( - base_test PUBLIC libabc ${GTEST_LIBS} + base_test PUBLIC libabc ${GTEST_LINK_LIBRARIES} ) enable_testing() diff --git a/test/gia/CMakeLists.txt b/test/gia/CMakeLists.txt index 8bdc80d9a3..034fe3b9b7 100644 --- a/test/gia/CMakeLists.txt +++ b/test/gia/CMakeLists.txt @@ -4,15 +4,12 @@ endif() add_executable(gia_test gia_test.cc) -target_include_directories(gia_test PUBLIC ${GTEST_INCLUDE_DIRS}) target_compile_options(gia_test PUBLIC ${GTEST_CFLAGS}) target_link_libraries(gia_test PUBLIC libabc - ${GTEST_LIBS} + ${GTEST_LINK_LIBRARIES} ) gtest_discover_tests(gia_test - # the traling directory below is a workaround for generators that append - # an extra directory name (build type) such as VS on windows WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) diff --git a/test/gia/gia_test.cc b/test/gia/gia_test.cc index a6b288f791..ae88c34607 100644 --- a/test/gia/gia_test.cc +++ b/test/gia/gia_test.cc @@ -1,4 +1,4 @@ -#include "gtest/gtest.h" +#include #include "aig/gia/gia.h" diff --git a/tox.ini b/tox.ini index fc737f6718..1fb6dea74c 100644 --- a/tox.ini +++ b/tox.ini @@ -86,7 +86,7 @@ commands = clang: lcov_cobertura {toxinidir}/build/coverage/lcov.info --base-dir {toxinidir}/src --output coverage.xml {base,libs}: cmake --build . --target install {base,libs}: bash -c 'find $PREFIX/ -type f -name \*abc\* -o -name demo | xargs ls -lh' - ctest: ctest -j {env:CPUS} --build-generator {posargs:"Ninja"} --build-and-test . build --build-options -DABC_USE_NAMESPACE={env:ABC_USE_NAMESPACE} -DABC_SKIP_EXE=ON -DCMAKE_BUILD_TYPE={env:BUILD_TYPE} --test-command ctest --rerun-failed --output-on-failure -V + ctest: ctest -j {env:CPUS} --build-generator {posargs:"Ninja"} --build-and-test . build --build-options -DABC_USE_NAMESPACE={env:ABC_USE_NAMESPACE} -DABC_SKIP_EXE=ON -DCMAKE_BUILD_TYPE={env:BUILD_TYPE} --test-command ctest -C {env:BUILD_TYPE} --rerun-failed --output-on-failure -V ctestwin: ctest --build-generator {posargs:"Visual Studio 16 2019"} --build-and-test . build --build-options -DVENDOR_GTEST=ON -DBUILD_SHARED_LIBS=ON -DABC_USE_NO_PTHREADS=ON -DABC_USE_NO_READLINE=ON -DCMAKE_BUILD_TYPE={env:BUILD_TYPE} --test-command ctest -C {env:BUILD_TYPE} --rerun-failed --output-on-failure -V ctest: bash -c 'ls -lh build/*abc* || true' lint: bash -c 'cpplint --output=gsed {toxinidir}/src/base/main/* {toxinidir}/lib/*'