Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

remove duplicate libs (#282) #284

Merged
merged 3 commits into from
Mar 29, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions dev_testing/crf450/checkin-test-crf450-cmake-3.11.1.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ echo "
-DTriBITS_ENABLE_Fortran:BOOL=ON
-DTriBITS_CTEST_DRIVER_COVERAGE_TESTS=TRUE
-DTriBITS_CTEST_DRIVER_MEMORY_TESTS=TRUE
-DTriBITS_ENABLE_REAL_GIT_CLONE_TESTS=ON \
" > MPI_DEBUG.config

echo "
Expand All @@ -38,6 +39,7 @@ echo "
-DCMAKE_Fortran_COMPILER=gfortran
-DTriBITS_CTEST_DRIVER_COVERAGE_TESTS=TRUE
-DTriBITS_CTEST_DRIVER_MEMORY_TESTS=TRUE
-DTriBITS_ENABLE_REAL_GIT_CLONE_TESTS=ON \
" > SERIAL_RELEASE.config

# Run checkin-test.py
Expand Down
94 changes: 80 additions & 14 deletions test/core/ExamplesUnitTests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -605,8 +605,9 @@ TRIBITS_ADD_ADVANCED_TEST( TribitsExampleProject_ALL_ST_NoFortran
OVERALL_NUM_MPI_PROCS 1
XHOSTTYPE Darwin

TEST_0 CMND ${CMAKE_COMMAND}
TEST_0
MESSAGE "Do the initial configure (and test a lot of things at once)"
CMND ${CMAKE_COMMAND}
ARGS
${TribitsExampleProject_COMMON_CONFIG_ARGS}
-DTribitsExProj_TRIBITS_DIR=${${PROJECT_NAME}_TRIBITS_DIR}
Expand Down Expand Up @@ -706,8 +707,9 @@ TRIBITS_ADD_ADVANCED_TEST( TribitsExampleProject_ALL_ST_NoFortran
CMND ${LabelsForSubprojects_CMND_AND_ARGS}
PASS_REGULAR_EXPRESSION "${LabelsForSubprojects_REGEX}"

TEST_2 CMND make ARGS ${CTEST_BUILD_FLAGS}
TEST_2
MESSAGE "Build the default 'all' target using raw 'make'"
CMND make ARGS ${CTEST_BUILD_FLAGS}
PASS_REGULAR_EXPRESSION_ALL
"Built target simplecxx"
"${DEPRECATED_WARNING_1_STR}"
Expand All @@ -717,8 +719,9 @@ TRIBITS_ADD_ADVANCED_TEST( TribitsExampleProject_ALL_ST_NoFortran
"Built target pws_c"
ALWAYS_FAIL_ON_NONZERO_RETURN

TEST_3 CMND ${CMAKE_CTEST_COMMAND} ARGS -VV
TEST_3
MESSAGE "Run all the tests with raw 'ctest'"
CMND ${CMAKE_CTEST_COMMAND} ARGS -VV
PASS_REGULAR_EXPRESSION_ALL
"SimpleCxx_HelloWorldTests${TEST_MPI_1_SUFFIX} .* Passed"
"WithSubpackagesA_test_of_a .* Passed"
Expand All @@ -729,8 +732,8 @@ TRIBITS_ADD_ADVANCED_TEST( TribitsExampleProject_ALL_ST_NoFortran
ALWAYS_FAIL_ON_NONZERO_RETURN

TEST_4
MESSAGE "Create and configure a dummy project that includes WithSubpackagesConfig.cmake"
" from the build tree"
MESSAGE "Create and configure a dummy project that includes"
" WithSubpackagesConfig.cmake from the build tree"
CMND ${CMAKE_COMMAND}
ARGS
-DDUMMY_PROJECT_NAME=DummyProject
Expand Down Expand Up @@ -767,8 +770,9 @@ TRIBITS_ADD_ADVANCED_TEST( TribitsExampleProject_ALL_ST_NoFortran
"-- Generating done"
ALWAYS_FAIL_ON_NONZERO_RETURN

TEST_5 CMND make ARGS install ${CTEST_BUILD_FLAGS}
TEST_5
MESSAGE "Build 'install' target using raw 'make'"
CMND make ARGS install ${CTEST_BUILD_FLAGS}
PASS_REGULAR_EXPRESSION_ALL
"Installing: .+/install/include/TribitsExProj_version.h"
"Installing: .+/install/lib/cmake/TribitsExProj/TribitsExProjConfig.cmake"
Expand Down Expand Up @@ -803,15 +807,17 @@ TRIBITS_ADD_ADVANCED_TEST( TribitsExampleProject_ALL_ST_NoFortran
"Installing: .+/install/include/Makefile.export.WithSubpackagesC"
ALWAYS_FAIL_ON_NONZERO_RETURN

TEST_6 CMND ${CMAKE_COMMAND}
TEST_6
MESSAGE "Create and configure a dummy project that includes"
" WithSubpackagesConfig.cmake from the install tree"
CMND ${CMAKE_COMMAND}
ARGS
-DDUMMY_PROJECT_NAME=DummyProject
-DDUMMY_PROJECT_DIR=dummy_client_of_WithSubpackages
-DEXPORT_VAR_PREFIX=WithSubpackages
-DEXPORT_CONFIG_FILE=../install/lib/cmake/WithSubpackages/WithSubpackagesConfig.cmake
-DCMAKE_COMMAND=${CMAKE_COMMAND}
-P ${CMAKE_CURRENT_SOURCE_DIR}/RunDummyPackageClientBulid.cmake
MESSAGE "Create and configure a dummy project that includes WithSubpackagesConfig.cmake"
PASS_REGULAR_EXPRESSION_ALL
"WithSubpackages_CMAKE_BUILD_TYPE = 'RELEASE'"
"WithSubpackages_CXX_FLAGS = '.*'"
Expand All @@ -838,8 +844,65 @@ TRIBITS_ADD_ADVANCED_TEST( TribitsExampleProject_ALL_ST_NoFortran
"WithSubpackages_TPL_LIST = 'HeaderOnlyTpl'"
ALWAYS_FAIL_ON_NONZERO_RETURN

TEST_7 CMND make ARGS package_source
TEST_7
MESSAGE "Create and configure a dummy project that includes"
" TribitsExProjConfig.cmake from the install tree"
CMND ${CMAKE_COMMAND}
ARGS
-DDUMMY_PROJECT_NAME=DummyProject
-DDUMMY_PROJECT_DIR=dummy_client_of_TribitsExProj
-DEXPORT_VAR_PREFIX=TribitsExProj
-DEXPORT_CONFIG_FILE=../install/lib/cmake/TribitsExProj/TribitsExProjConfig.cmake
-DCMAKE_COMMAND=${CMAKE_COMMAND}
-P ${CMAKE_CURRENT_SOURCE_DIR}/RunDummyPackageClientBulid.cmake
PASS_REGULAR_EXPRESSION_ALL
"DUMMY_PROJECT_NAME = 'DummyProject'"
"DUMMY_PROJECT_DIR = 'dummy_client_of_TribitsExProj'"
"EXPORT_CONFIG_FILE = '../install/lib/cmake/TribitsExProj/TribitsExProjConfig.cmake'"
"EXPORT_VAR_PREFIX = 'TribitsExProj'"
"CMAKE_COMMAND = '.*/cmake'"
"Create the dummy client directory ..."
"Create dummy dummy_client_of_TribitsExProj/CMakeLists.txt file ..."
"Configure the dummy project to print the variables in .*/TriBITS_TribitsExampleProject_ALL_ST_NoFortran/dummy_client_of_TribitsExProj ..."
"DUMMY_PROJECT_NAME = 'DummyProject'"
"EXPORT_CONFIG_FILE = '../install/lib/cmake/TribitsExProj/TribitsExProjConfig.cmake'"
"EXPORT_VAR_PREFIX = 'TribitsExProj'"
"Including file '.*/TriBITS_TribitsExampleProject_ALL_ST_NoFortran/dummy_client_of_TribitsExProj/../install/lib/cmake/TribitsExProj/TribitsExProjConfig.cmake'"
"TribitsExProj_CMAKE_BUILD_TYPE = 'RELEASE'"
"TribitsExProj_CXX_FLAGS = ''"
"TribitsExProj_C_FLAGS = ''"
"TribitsExProj_FORTRAN_FLAGS = ''"
"TribitsExProj_EXTRA_LD_FLAGS = ''"
"TribitsExProj_SHARED_LIB_RPATH_COMMAND = ''"
"TribitsExProj_BUILD_SHARED_LIBS = 'FALSE'"
"TribitsExProj_LINKER = '.*'"
"TribitsExProj_AR = '.*'"
"TribitsExProj_INCLUDE_DIRS = '.*/TriBITS_TribitsExampleProject_ALL_ST_NoFortran/install/include'"
"TribitsExProj_LIBRARY_DIRS = '.*/TriBITS_TribitsExampleProject_ALL_ST_NoFortran/install/lib'"
"TribitsExProj_LIBRARIES = 'pws_c[;]pws_b[;]pws_a[;]simplecxx'"
"TribitsExProj_TPL_INCLUDE_DIRS = '.*/examples/tpls/HeaderOnlyTpl"
"TribitsExProj_TPL_LIBRARY_DIRS = ''"
"TribitsExProj_TPL_LIBRARIES = ''"
"TribitsExProj_MPI_LIBRARIES = ''"
"TribitsExProj_MPI_LIBRARY_DIRS = ''"
"TribitsExProj_MPI_INCLUDE_DIRS = ''"
"TribitsExProj_MPI_EXEC = '.*'"
"TribitsExProj_MPI_EXEC_MAX_NUMPROCS = '[1-9]*'" # Is null for an MPI build
"TribitsExProj_MPI_EXEC_NUMPROCS_FLAG = '.*'"
"TribitsExProj_PACKAGE_LIST = 'WithSubpackages[;]WithSubpackagesC[;]WithSubpackagesB[;]WithSubpackagesA[;]SimpleCxx'"
"TribitsExProj_TPL_LIST = 'HeaderOnlyTpl" # Must work for no MPI too
"-- Configuring done"
"-- Generating done"
ALWAYS_FAIL_ON_NONZERO_RETURN

# ToDo: Add test for the components parts of <Project>Config.cmake ...

# ToDo: Add test that actually builds a C++ project and links to these libs
# to make sure this works!

TEST_8
MESSAGE "Create the tarball"
CMND make ARGS package_source
PASS_REGULAR_EXPRESSION_ALL
"Run CPack packaging tool for source..."
"CPack: Create package using TGZ"
Expand All @@ -854,15 +917,17 @@ TRIBITS_ADD_ADVANCED_TEST( TribitsExampleProject_ALL_ST_NoFortran
"CPack: - package: .*/ExamplesUnitTests/TriBITS_TribitsExampleProject_ALL_ST_NoFortran/tribitsexproj-1.1-Source.tar.bz2 generated."
ALWAYS_FAIL_ON_NONZERO_RETURN

TEST_8 CMND tar ARGS -xzf tribitsexproj-1.1-Source.tar.gz
TEST_9
MESSAGE "Untar the tarball"
CMND tar ARGS -xzf tribitsexproj-1.1-Source.tar.gz
ALWAYS_FAIL_ON_NONZERO_RETURN

TEST_9 CMND diff
ARGS -qr
${${PROJECT_NAME}_TRIBITS_DIR}/examples/TribitsExampleProject
tribitsexproj-1.1-Source
TEST_10
MESSAGE "Make sure right directoires are excluced"
CMND diff
ARGS -qr
${${PROJECT_NAME}_TRIBITS_DIR}/examples/TribitsExampleProject
tribitsexproj-1.1-Source
PASS_REGULAR_EXPRESSION_ALL
"Only in .*/TribitsExampleProject/cmake: ctest"
${REGEX_FOR_GITIGNORE}
Expand All @@ -873,6 +938,7 @@ TRIBITS_ADD_ADVANCED_TEST( TribitsExampleProject_ALL_ST_NoFortran
)


# Find ninja so we can test TriBITS using ninja as well
FIND_PROGRAM(NINJA_EXE ninja)


Expand Down
30 changes: 12 additions & 18 deletions tribits/core/installation/TribitsProjectConfigTemplate.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -92,24 +92,6 @@ SET(${PROJECT_NAME}_AR ${CMAKE_AR})
## The project version number
SET(${PROJECT_NAME}_VERSION "${${PROJECT_NAME}_VERSION}")

## The project include file directories.
#SET(${PROJECT_NAME}_INCLUDE_DIRS "${${PROJECT_NAME}_CONFIG_INCLUDE_DIRS}")

## The project library directories.
#SET(${PROJECT_NAME}_LIBRARY_DIRS "${${PROJECT_NAME}_CONFIG_LIBRARY_DIRS}")

## The project libraries.
#SET(${PROJECT_NAME}_LIBRARIES "${${PROJECT_NAME}_CONFIG_LIBRARIES}")

## The project tpl include paths
#SET(${PROJECT_NAME}_TPL_INCLUDE_DIRS "${${PROJECT_NAME}_CONFIG_TPL_INCLUDE_DIRS}")

## The project tpl library paths
#SET(${PROJECT_NAME}_TPL_LIBRARY_DIRS "${${PROJECT_NAME}_CONFIG_TPL_LIBRARY_DIRS}")

## The project tpl libraries
#SET(${PROJECT_NAME}_TPL_LIBRARIES "${${PROJECT_NAME}_CONFIG_TPL_LIBRARIES}")

# For best practices in handling of components, see
# <http://www.cmake.org/cmake/help/v3.2/manual/cmake-developer.7.html#find-modules>.
#
Expand Down Expand Up @@ -172,6 +154,18 @@ ENDFOREACH()
LIST(REMOVE_DUPLICATES short_dirs)
SET(${PROJECT_NAME}_LIBRARY_DIRS ${PDOLLAR}{short_dirs})

# Remove duplicates in ${PROJECT_NAME}_LIBRARIES
LIST(REVERSE ${PROJECT_NAME}_LIBRARIES)
LIST(REMOVE_DUPLICATES ${PROJECT_NAME}_LIBRARIES)
LIST(REVERSE ${PROJECT_NAME}_LIBRARIES)

# Remove duplicates in ${PROJECT_NAME}_TPL_INCLUDE_DIRS
LIST(REMOVE_DUPLICATES ${PROJECT_NAME}_TPL_INCLUDE_DIRS)

# NOTE: It is *NOT* safe to try to remove duplicate in
# ${PROJECT_NAME}_TPL_LIBRARIES because these can be specified as -L, -l, etc.
# Actaully, we should think about that.

## ---------------------------------------------------------------------------
## MPI specific variables
## These variables are provided to make it easier to get the mpi libraries
Expand Down