Skip to content

Commit

Permalink
fix: dev: cleanup googletest bits for consistent paths to gtest libs
Browse files Browse the repository at this point in the history
* 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 <[email protected]>
  • Loading branch information
sarnold committed Feb 23, 2025
1 parent 4eb365c commit 7b326c2
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 22 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:
os: ubuntu-22.04
compiler: clang
version: "14"
toxcmd: base
toxcmd: clang

- name: macOS-13-gcc
os: macOS-13
Expand Down Expand Up @@ -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: |
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/conda-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}
Expand Down Expand Up @@ -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
23 changes: 11 additions & 12 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ set(LIBRARY_SOVERSION 1)

project(
abc
LANGUAGES C CXX
LANGUAGES CXX C
VERSION ${SCM_VERSION_INFO}
)

Expand Down Expand Up @@ -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
Expand All @@ -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)
Expand All @@ -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()
Expand Down
5 changes: 1 addition & 4 deletions test/gia/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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}
)
2 changes: 1 addition & 1 deletion test/gia/gia_test.cc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "gtest/gtest.h"
#include <gtest/gtest.h>

#include "aig/gia/gia.h"

Expand Down
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -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/*'
Expand Down

0 comments on commit 7b326c2

Please sign in to comment.