Skip to content

Commit

Permalink
Merge pull request #284 from TriBITSPub/282-remove-duplicate-libs
Browse files Browse the repository at this point in the history
remove duplicate libs (#282)
  • Loading branch information
bartlettroscoe authored Mar 29, 2019
2 parents e748b15 + 9f49538 commit 55d85d2
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 32 deletions.
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

0 comments on commit 55d85d2

Please sign in to comment.