blob: d692ee738d6830369b37e4aa5a8a4f5fdae6b5d9 [file] [edit]
# SPDX-FileCopyrightText: The Eigen Authors
# SPDX-License-Identifier: MPL-2.0
# doc/TopicCMakeGuide.dox: Eigen can be embedded without installing it first,
# applying the guide's "Disabling Eigen build options" snippet beforehand. The
# consumer project sets exactly those options, so this covers both claims:
# Eigen3::Eigen is usable from a sub-project, and an embedded Eigen contributes
# nothing to the enclosing project's tests.
bs_configure("embedding consumer" "${BS_CONSUMER_DIR}/subproject" "${WORK_DIR}/consumer"
"-DEIGEN_SOURCE_DIR=${EIGEN_SOURCE_DIR}")
bs_build_and_run_consumer("embedding consumer" "${WORK_DIR}/consumer")
# Embedding Eigen must leave the enclosing project's test list alone: the
# consumer registers one test of its own, and that must be all CTest reports.
#
# CTest gained --test-dir in CMake 3.20. On the 3.17 Eigen supports it is
# accepted and ignored, leaving CTest to inspect its own working directory --
# which is the outer Eigen build tree, whose tests would then be reported as
# the consumer's. Select the consumer build directory by changing into it.
bs_run(WHAT "list tests of the embedding consumer" OUTPUT_VARIABLE tests
COMMAND ${CMAKE_COMMAND} -E chdir "${WORK_DIR}/consumer"
${CMAKE_CTEST_COMMAND} -N)
if(NOT tests MATCHES "consumer_runs")
bs_fail("CTest did not inspect the consumer build directory\n----\n${tests}\n----")
endif()
if(NOT tests MATCHES "Total Tests: 1")
bs_fail("embedding Eigen changed the enclosing project's test list:\n----\n${tests}\n----")
endif()