Skip to content

Commit fb5fdb8

Browse files
nschloeRoscoe A. Bartlett
authored and
Roscoe A. Bartlett
committed
Prune export libraries and package lists from Config.cmake files (TriBITS TriBITSPub#60)
This trims down the generated <Package>Config.cmake files to only contain the direct libraries and include dirs for each SE package. This commit is a squash of several smaller commits shown below. 1) start cleaning up the export files 2 export files: INCLUDE() dependencies in FOREACH loop 3) export files: remove redundant definition of CMAKE_CURRENT_LIST_DIR This variable is intrinsic to CMake since 2.8.3. 4) don't use ALL dependencies in PACKAGE_LIST We really only need the direct dependencies of the respective package. 5) typo in variable name 6) fix for Makefile exports, adapt cmake export tests 7) fix unit test 8) fix unit test 125 9) fix unit test 127
1 parent 5cd7f7b commit fb5fdb8

File tree

4 files changed

+66
-42
lines changed

4 files changed

+66
-42
lines changed

test/core/ExamplesUnitTests/CMakeLists.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -352,8 +352,8 @@ TRIBITS_ADD_ADVANCED_TEST( TribitsExampleProject_ALL_ST_NoFortran
352352
"WithSubpackages_AR = '.+'"
353353
"WithSubpackages_INCLUDE_DIRS = .+/TriBITS_TribitsExampleProject_ALL_ST_NoFortran;.+/TriBITS_TribitsExampleProject_ALL_ST_NoFortran/packages/with_subpackages/b/src;.+/TribitsExampleProject/packages/with_subpackages/b/src;.+/TribitsExampleProject/packages/with_subpackages/a;.+/TriBITS_TribitsExampleProject_ALL_ST_NoFortran/packages/simple_cxx/src;.+/TribitsExampleProject/packages/simple_cxx/src;.+/tpls/HeaderOnlyTpl;.+/TribitsExampleProject/packages/with_subpackages/c"
354354
"WithSubpackages_LIBRARY_DIRS = '.+/TriBITS_TribitsExampleProject_ALL_ST_NoFortran/packages/with_subpackages/b/src;.+/TriBITS_TribitsExampleProject_ALL_ST_NoFortran/packages/with_subpackages/a;.+/TriBITS_TribitsExampleProject_ALL_ST_NoFortran/packages/simple_cxx/src;.+/TriBITS_TribitsExampleProject_ALL_ST_NoFortran/packages/with_subpackages/c'"
355-
"WithSubpackages_LIBRARIES = 'pws_c.pws_b.pws_a.simplecxx'"
356-
"WithSubpackages_TPL_INCLUDE_DIRS = '.+/tribits/examples/tpls/HeaderOnlyTpl'"
355+
"WithSubpackages_LIBRARIES = 'pws_c.pws_b.pws_a'"
356+
"WithSubpackages_TPL_INCLUDE_DIRS = ''"
357357
"WithSubpackages_TPL_LIBRARY_DIRS = ''"
358358
"WithSubpackages_TPL_LIBRARIES = ''"
359359
"WithSubpackages_MPI_LIBRARIES = ''"
@@ -362,8 +362,8 @@ TRIBITS_ADD_ADVANCED_TEST( TribitsExampleProject_ALL_ST_NoFortran
362362
"WithSubpackages_MPI_EXEC = '${MPI_EXEC}'"
363363
"WithSubpackages_MPI_EXEC_MAX_NUMPROCS = '${MPI_EXEC_MAX_NUMPROCS}'"
364364
"WithSubpackages_MPI_EXEC_NUMPROCS_FLAG = '${MPI_EXEC_NUMPROCS_FLAG}'"
365-
"WithSubpackages_PACKAGE_LIST = 'WithSubpackagesC.WithSubpackagesB.WithSubpackagesA.SimpleCxx'"
366-
"WithSubpackages_TPL_LIST = 'HeaderOnlyTpl'"
365+
"WithSubpackages_PACKAGE_LIST = 'WithSubpackagesA.WithSubpackagesB.WithSubpackagesC'"
366+
"WithSubpackages_TPL_LIST = ''"
367367
"-- Configuring done"
368368
"-- Generating done"
369369

@@ -598,8 +598,8 @@ TRIBITS_ADD_ADVANCED_TEST( TribitsExampleProject_ALL_PT_NoFortran
598598
PASS_REGULAR_EXPRESSION_ALL
599599
"WithSubpackages_INCLUDE_DIRS = '.+/install/lib/cmake/WithSubpackages/../../../include'"
600600
"WithSubpackages_LIBRARY_DIRS = '.+/install/lib/cmake/WithSubpackages/../../../lib'"
601-
"WithSubpackages_LIBRARIES = 'pws_a.simplecxx'"
602-
"WithSubpackages_PACKAGE_LIST = 'WithSubpackagesA.SimpleCxx'"
601+
"WithSubpackages_LIBRARIES = 'pws_a'"
602+
"WithSubpackages_PACKAGE_LIST = 'WithSubpackagesA'"
603603
)
604604

605605

test/core/TribitsWriteClientExportFiles_UnitTests.cmake

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,12 @@ FUNCTION(UNITTEST_WRITE_SPECIALIZED_PACKAGE_EXPORT_MAKEFILE_RTOP_BEFORE_LIBS)
129129
"SET.RTOp1_CONFIG_INCLUDED TRUE."
130130
"SET.RTOp1_INCLUDE_DIRS .teuchos/core/include.teuchos/numeric/include.."
131131
"SET.RTOp1_LIBRARY_DIRS .teuchos/core/src.teuchos/numeric/src.."
132-
"SET.RTOp1_LIBRARIES .teuchoscore.teuchosnumeric.."
133-
"SET.RTOp1_TPL_INCLUDE_DIRS .lapackhpath/include.blaspath/include.."
134-
"SET.RTOp1_TPL_LIBRARY_DIRS .lapackhpath/lib.blashpath/lib.."
135-
"SET.RTOp1_TPL_LIBRARIES .lapackpath/lib/liblapack.a.blaspath/lib/libblas.a.."
136-
"SET.RTOp1_PACKAGE_LIST .Teuchos.."
137-
"SET.RTOp1_TPL_LIST .LAPACK.BLAS.."
132+
"SET.RTOp1_LIBRARIES .."
133+
"SET.RTOp1_TPL_INCLUDE_DIRS .."
134+
"SET.RTOp1_TPL_LIBRARY_DIRS .."
135+
"SET.RTOp1_TPL_LIBRARIES .."
136+
"SET.RTOp1_PACKAGE_LIST Teuchos."
137+
"SET.RTOp1_TPL_LIST .."
138138
)
139139

140140
UNITTEST_FILE_REGEX("${GENERATED_EXPORT_MAKEFILE}"
@@ -207,12 +207,12 @@ FUNCTION(UNITTEST_WRITE_SPECIALIZED_PACKAGE_EXPORT_MAKEFILE_RTOP_AFTER_LIBS)
207207
"SET.RTOp2_CONFIG_INCLUDED TRUE."
208208
"SET.RTOp2_INCLUDE_DIRS .rtop/include.teuchos/core/include.teuchos/numeric/include.."
209209
"SET.RTOp2_LIBRARY_DIRS .rtop/src.teuchos/core/src.teuchos/numeric/src.."
210-
"SET.RTOp2_LIBRARIES .rtop.teuchoscore.teuchosnumeric.."
211-
"SET.RTOp2_TPL_INCLUDE_DIRS .lapackhpath/include.blaspath/include.."
212-
"SET.RTOp2_TPL_LIBRARY_DIRS .lapackhpath/lib.blashpath/lib.."
213-
"SET.RTOp2_TPL_LIBRARIES .lapackpath/lib/liblapack.a.blaspath/lib/libblas.a.."
214-
"SET.RTOp2_PACKAGE_LIST .RTOp.Teuchos.."
215-
"SET.RTOp2_TPL_LIST .LAPACK.BLAS.."
210+
"SET.RTOp2_LIBRARIES .rtop."
211+
"SET.RTOp2_TPL_INCLUDE_DIRS .."
212+
"SET.RTOp2_TPL_LIBRARY_DIRS .."
213+
"SET.RTOp2_TPL_LIBRARIES .."
214+
"SET.RTOp2_PACKAGE_LIST Teuchos."
215+
"SET.RTOp2_TPL_LIST .."
216216
)
217217

218218
UNITTEST_FILE_REGEX("${GENERATED_EXPORT_MAKEFILE}"

tribits/core/installation/TribitsPackageConfigTemplate.cmake.in

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,16 +92,16 @@ SET(${EXPORT_FILE_VAR_PREFIX}_INCLUDE_DIRS "${FULL_INCLUDE_DIRS_SET}")
9292
SET(${EXPORT_FILE_VAR_PREFIX}_LIBRARY_DIRS "${FULL_LIBRARY_DIRS_SET}")
9393

9494
## List of package libraries
95-
SET(${EXPORT_FILE_VAR_PREFIX}_LIBRARIES "${FULL_LIBRARY_SET}")
95+
SET(${EXPORT_FILE_VAR_PREFIX}_LIBRARIES "${${PACKAGE_NAME}_LIBRARIES}")
9696

9797
## Specification of directories for TPL headers
98-
SET(${EXPORT_FILE_VAR_PREFIX}_TPL_INCLUDE_DIRS "${${PACKAGE_NAME}_TPL_INCLUDE_DIRS}")
98+
SET(${EXPORT_FILE_VAR_PREFIX}_TPL_INCLUDE_DIRS "${MY_${PACKAGE_NAME}_TPL_INCLUDE_DIRS}")
9999

100100
## Specification of directories for TPL libraries
101-
SET(${EXPORT_FILE_VAR_PREFIX}_TPL_LIBRARY_DIRS "${${PACKAGE_NAME}_TPL_LIBRARY_DIRS}")
101+
SET(${EXPORT_FILE_VAR_PREFIX}_TPL_LIBRARY_DIRS "${MY_${PACKAGE_NAME}_TPL_LIBRARY_DIRS}")
102102

103103
## List of required TPLs
104-
SET(${EXPORT_FILE_VAR_PREFIX}_TPL_LIBRARIES "${${PACKAGE_NAME}_TPL_LIBRARIES}")
104+
SET(${EXPORT_FILE_VAR_PREFIX}_TPL_LIBRARIES "${MY_${PACKAGE_NAME}_TPL_LIBRARIES}")
105105

106106
## ---------------------------------------------------------------------------
107107
## MPI specific variables
@@ -121,9 +121,9 @@ SET(${EXPORT_FILE_VAR_PREFIX}_MPI_EXEC_NUMPROCS_FLAG "${MPI_EXEC_NUMPROCS_FLAG}"
121121
## ---------------------------------------------------------------------------
122122

123123
## The packages enabled for this project
124-
SET(${EXPORT_FILE_VAR_PREFIX}_PACKAGE_LIST "${FULL_PACKAGE_SET}")
124+
SET(${EXPORT_FILE_VAR_PREFIX}_PACKAGE_LIST ${MY_DEP_SET})
125125

126126
## The TPLs enabled for this project
127-
SET(${EXPORT_FILE_VAR_PREFIX}_TPL_LIST "${ORDERED_FULL_TPL_SET}")
127+
SET(${EXPORT_FILE_VAR_PREFIX}_TPL_LIST "${MY_TPL_SET}")
128128

129129
${PACKAGE_CONFIG_CODE}

tribits/core/package_arch/TribitsWriteClientExportFiles.cmake

Lines changed: 42 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,6 @@ IF (${EXPORT_FILE_VAR_PREFIX}_CONFIG_INCLUDED)
102102
RETURN()
103103
ENDIF()
104104
SET(${EXPORT_FILE_VAR_PREFIX}_CONFIG_INCLUDED TRUE)
105-
106-
# Make sure CMAKE_CURRENT_LIST_DIR is usable
107-
IF (NOT DEFINED CMAKE_CURRENT_LIST_DIR)
108-
GET_FILENAME_COMPONENT(_THIS_SCRIPT_PATH \${CMAKE_CURRENT_LIST_FILE} PATH)
109-
SET(CMAKE_CURRENT_LIST_DIR \${_THIS_SCRIPT_PATH})
110-
ENDIF()
111105
"
112106
PARENT_SCOPE )
113107
ENDFUNCTION()
@@ -233,15 +227,14 @@ FUNCTION(TRIBITS_WRITE_FLEXIBLE_PACKAGE_CLIENT_EXPORT_FILES)
233227

234228
SET(FULL_PACKAGE_SET "")
235229
SET(FULL_LIBRARY_SET "")
230+
SET(FULL_INCLUDE_DIRS_SET "")
231+
SET(FULL_LIBRARY_DIRS_SET "")
236232

237233
SET(SET_INCLUDE_LIBRARY_DIRS_FROM_UPSTREAM TRUE)
238234
IF (${PACKAGE_NAME}_INCLUDE_DIRS)
239235
SET(FULL_INCLUDE_DIRS_SET ${${PACKAGE_NAME}_INCLUDE_DIRS})
240236
SET(FULL_LIBRARY_DIRS_SET ${${PACKAGE_NAME}_LIBRARY_DIRS})
241237
SET(SET_INCLUDE_LIBRARY_DIRS_FROM_UPSTREAM FALSE)
242-
ELSE()
243-
SET(FULL_INCLUDE_DIRS_SET "")
244-
SET(FULL_LIBRARY_DIRS_SET "")
245238
ENDIF()
246239

247240
IF (TRIBITS_WRITE_FLEXIBLE_PACKAGE_CLIENT_EXPORT_FILES_DEBUG_DUMP)
@@ -322,12 +315,28 @@ FUNCTION(TRIBITS_WRITE_FLEXIBLE_PACKAGE_CLIENT_EXPORT_FILES)
322315
PRINT_VAR(FULL_LIBRARY_DIRS_SET)
323316
ENDIF()
324317

318+
SET(MY_DEP_SET "")
319+
LIST(APPEND MY_DEP_SET ${${PACKAGE_NAME}_LIB_REQUIRED_DEP_PACKAGES})
320+
FOREACH(DEP ${${PACKAGE_NAME}_LIB_OPTIONAL_DEP_PACKAGES})
321+
IF(${PACKAGE_NAME}_ENABLE_${DEP})
322+
LIST(APPEND MY_DEP_SET ${DEP})
323+
ENDIF()
324+
ENDFOREACH()
325+
325326
#
326327
# C) Get the set of TPLs for this package that are enabled
327328
#
328329

329330
# C.1) Get the set of enabled TPLs
330331

332+
SET(MY_TPL_SET "")
333+
LIST(APPEND MY_TPL_SET ${${PACKAGE_NAME}_LIB_REQUIRED_DEP_TPLS})
334+
FOREACH(TPL ${${PACKAGE_NAME}_LIB_OPTIONAL_DEP_TPLS})
335+
IF(${PACKAGE_NAME}_ENABLE_${TPL})
336+
LIST(APPEND MY_TPL_SET ${TPL})
337+
ENDIF()
338+
ENDFOREACH()
339+
331340
SET(FULL_TPL_SET "")
332341
FOREACH(TRIBITS_PACKAGE ${FULL_PACKAGE_SET})
333342
LIST(APPEND FULL_TPL_SET ${${TRIBITS_PACKAGE}_LIB_REQUIRED_DEP_TPLS})
@@ -340,6 +349,17 @@ FUNCTION(TRIBITS_WRITE_FLEXIBLE_PACKAGE_CLIENT_EXPORT_FILES)
340349
ENDIF()
341350
ENDFOREACH()
342351
ENDFOREACH()
352+
FOREACH(TRIBITS_PACKAGE ${FULL_PACKAGE_SET})
353+
LIST(APPEND FULL_TPL_SET ${${TRIBITS_PACKAGE}_LIB_REQUIRED_DEP_TPLS})
354+
SET(OPTIONAL_TPLS ${${TRIBITS_PACKAGE}_LIB_OPTIONAL_DEP_TPLS})
355+
FOREACH(TPL ${OPTIONAL_TPLS})
356+
# Only add if support for the optional TPL is enabled in this
357+
# package. Don't just check if the TPL is enabled!
358+
IF(${TRIBITS_PACKAGE}_ENABLE_${TPL})
359+
LIST(APPEND FULL_TPL_SET ${TPL})
360+
ENDIF()
361+
ENDFOREACH()
362+
ENDFOREACH()
343363
IF (TRIBITS_WRITE_FLEXIBLE_PACKAGE_CLIENT_EXPORT_FILES_DEBUG_DUMP)
344364
PRINT_VAR(FULL_TPL_SET)
345365
ENDIF()
@@ -362,6 +382,14 @@ FUNCTION(TRIBITS_WRITE_FLEXIBLE_PACKAGE_CLIENT_EXPORT_FILES)
362382
# D) Get the libraries, library dirs, and the include dirs for the
363383
# upstream enabled TPLs
364384
#
385+
SET(MY_${PACKAGE_NAME}_TPL_LIBRARIES "")
386+
SET(MY_${PACKAGE_NAME}_TPL_INCLUDE_DIRS "")
387+
SET(MY_${PACKAGE_NAME}_TPL_LIBRARY_DIRS "")
388+
FOREACH(TPL ${MY_TPL_SET})
389+
LIST(APPEND MY_${PACKAGE_NAME}_TPL_LIBRARIES ${TPL_${TPL}_LIBRARIES})
390+
LIST(APPEND MY_${PACKAGE_NAME}_TPL_INCLUDE_DIRS ${TPL_${TPL}_INCLUDE_DIRS})
391+
LIST(APPEND MY_${PACKAGE_NAME}_TPL_LIBRARY_DIRS ${TPL_${TPL}_LIBRARY_DIRS})
392+
ENDFOREACH()
365393

366394
SET(${PACKAGE_NAME}_TPL_LIBRARIES "")
367395
SET(${PACKAGE_NAME}_TPL_INCLUDE_DIRS "")
@@ -514,15 +542,11 @@ INCLUDE(\"${${PROJECT_NAME}_BINARY_DIR}/${PROJECT_NAME}Targets.cmake\")"
514542

515543
IF (${PACKAGE_NAME}_FULL_ENABLED_DEP_PACKAGES)
516544
SET(PACKAGE_CONFIG_CODE "${PACKAGE_CONFIG_CODE}
517-
# Include configuration of dependent packages")
518-
ENDIF()
519-
FOREACH(DEP_PACKAGE ${${PACKAGE_NAME}_FULL_ENABLED_DEP_PACKAGES})
520-
SET(PACKAGE_CONFIG_CODE "${PACKAGE_CONFIG_CODE}
521-
INCLUDE(\"\${CMAKE_CURRENT_LIST_DIR}/../${DEP_PACKAGE}/${DEP_PACKAGE}Config.cmake\")"
522-
)
523-
ENDFOREACH()
524-
IF(${PACKAGE_NAME}_FULL_ENABLED_DEP_PACKAGES)
525-
SET(PACKAGE_CONFIG_CODE "${PACKAGE_CONFIG_CODE}\n")
545+
# Include configuration of dependent packages
546+
FOREACH(DEP_PACKAGE \${${PACKAGE_NAME}_PACKAGE_LIST})
547+
INCLUDE(\"\${CMAKE_CURRENT_LIST_DIR}/../\${DEP_PACKAGE}/\${DEP_PACKAGE}Config.cmake\")
548+
ENDFOREACH()
549+
")
526550
ENDIF()
527551

528552
# Import install tree targets into applications.

0 commit comments

Comments
 (0)