diff --git a/cmake/tribits/core/package_arch/TribitsAddExecutable.cmake b/cmake/tribits/core/package_arch/TribitsAddExecutable.cmake index f08e7b78b..1274e8fce 100644 --- a/cmake/tribits/core/package_arch/TribitsAddExecutable.cmake +++ b/cmake/tribits/core/package_arch/TribitsAddExecutable.cmake @@ -419,7 +419,11 @@ function(tribits_add_executable EXE_NAME) foreach(depPkg IN LISTS ${PACKAGE_NAME}_LIB_ENABLED_DEPENDENCIES ${PACKAGE_NAME}_TEST_ENABLED_DEPENDENCIES ) - target_link_libraries(${EXE_BINARY_NAME} PUBLIC ${depPkg}::all_libs) + if(TARGET TPL::${depPkg}::all_libs) + target_link_libraries(${EXE_BINARY_NAME} PUBLIC TPL::${depPkg}::all_libs) + else() + target_link_libraries(${EXE_BINARY_NAME} PUBLIC ${depPkg}::all_libs) + endif() endforeach() foreach(testOnlyLib ${PARSE_TESTONLYLIBS}) target_link_libraries(${EXE_BINARY_NAME} PUBLIC diff --git a/cmake/tribits/core/package_arch/TribitsAddLibrary.cmake b/cmake/tribits/core/package_arch/TribitsAddLibrary.cmake index 4bac9f943..398002e33 100644 --- a/cmake/tribits/core/package_arch/TribitsAddLibrary.cmake +++ b/cmake/tribits/core/package_arch/TribitsAddLibrary.cmake @@ -468,7 +468,11 @@ function(tribits_add_library LIBRARY_NAME_IN) target_link_libraries(${LIBRARY_NAME} PUBLIC ${${PACKAGE_NAME}_LIBRARIES}) # ${PACKAGE_NAME}_LIB_ENABLED_DEPENDENCIES foreach(depPkg IN LISTS ${PACKAGE_NAME}_LIB_ENABLED_DEPENDENCIES) - target_link_libraries(${LIBRARY_NAME} PUBLIC ${depPkg}::all_libs) + if(TARGET TPL::${depPkg}::all_libs) + target_link_libraries(${LIBRARY_NAME} PUBLIC TPL::${depPkg}::all_libs) + else() + target_link_libraries(${LIBRARY_NAME} PUBLIC ${depPkg}::all_libs) + endif() endforeach() # ${PACKAGE_NAME}_TEST_ENABLED_DEPENDENCIES (TESTONLY lib) if (PARSE_TESTONLY) diff --git a/cmake/tribits/core/package_arch/TribitsExternalPackageWriteConfigFile.cmake b/cmake/tribits/core/package_arch/TribitsExternalPackageWriteConfigFile.cmake index 2d041a2ca..c49a2c019 100644 --- a/cmake/tribits/core/package_arch/TribitsExternalPackageWriteConfigFile.cmake +++ b/cmake/tribits/core/package_arch/TribitsExternalPackageWriteConfigFile.cmake @@ -132,7 +132,7 @@ endfunction() function(tribits_extpkg_install_config_file tplName tplConfigFile) install( FILES "${tplConfigFile}" - DESTINATION "${${PROJECT_NAME}_INSTALL_LIB_DIR}/external_packages/${tplName}" + DESTINATION "${${PROJECT_NAME}_INSTALL_LIB_DIR}/external_packages/TPL-Seacas-${tplName}" ) endfunction() @@ -159,7 +159,7 @@ function(tribits_extpkg_install_config_version_file tplName ) install( FILES "${tplConfigVersionFile}" - DESTINATION "${${PROJECT_NAME}_INSTALL_LIB_DIR}/external_packages/${tplName}" + DESTINATION "${${PROJECT_NAME}_INSTALL_LIB_DIR}/external_packages/TPL-Seacas-${tplName}" ) endfunction() @@ -258,7 +258,7 @@ function(tribits_extpkg_write_config_file_str tplName tplConfigFileStrOut) "# Generated by CMake, do not edit!\n" "\n" "# Guard against multiple inclusion\n" - "if (TARGET ${tplName}::all_libs)\n" + "if (TARGET TPL::${tplName}::all_libs)\n" " return()\n" "endif()\n" "\n" @@ -333,9 +333,9 @@ function(tribits_extpkg_add_find_upstream_dependencies_str message(FATAL_ERROR "ERROR: ${upstreamTplDepName}_DIR is empty!") endif() string(APPEND configFileFragStr - "if (NOT TARGET ${upstreamTplDepName}::all_libs)\n" + "if (NOT TARGET TPL::${upstreamTplDepName}::all_libs)\n" " set(${upstreamTplDepName}_DIR \"\${CMAKE_CURRENT_LIST_DIR}/../${upstreamTplDepName}\")\n" - " find_dependency(${upstreamTplDepName} REQUIRED CONFIG \${${tplName}_SearchNoOtherPathsArgs})\n" + " find_dependency(TPL-Seacas-${upstreamTplDepName} REQUIRED CONFIG \${${tplName}_SearchNoOtherPathsArgs})\n" " unset(${upstreamTplDepName}_DIR)\n" "endif()\n" "\n" @@ -440,6 +440,7 @@ function(tribits_extpkg_process_libraries_list tplName) elseif (libEntryType STREQUAL "GENERAL_LINK_OPTION") message_wrapper("-- NOTE: Moving the general link argument '${libentry}' in TPL_${tplName}_LIBRARIES forward on the link line which may change the link and break the link!") list(APPEND libLinkFlagsList "${libentry}") + elseif(libEntryType STREQUAL "TARGET_NAME") else() tribits_extpkg_process_libraries_list_library_entry( ${tplName} "${libentry}" ${libEntryType} libTargets lastLibProcessed @@ -501,6 +501,8 @@ function(tribits_tpl_libraries_entry_type libentry libEntryTypeOut) set(libEntryType FULL_LIB_PATH) elseif (libentry MATCHES "^[a-zA-Z_][a-zA-Z0-9_-]*$") set(libEntryType LIB_NAME) + elseif (TARGET "${libentry}") + set(libEntryType TARGET_NAME) else() set(libEntryType UNSUPPORTED_LIB_ENTRY) endif() @@ -529,7 +531,7 @@ function(tribits_extpkg_process_libraries_list_library_entry tribits_extpkg_get_libname_and_path_from_libentry( "${libentry}" ${libEntryType} libname libpath) # Create IMPORTED library target - set(prefixed_libname "${tplName}::${libname}") + set(prefixed_libname "TPL::${tplName}::${libname}") if (NOT (prefixed_libname IN_LIST libTargets)) tribits_extpkg_append_add_library_str (${libname} ${prefixed_libname} ${libEntryType} "${libpath}" configFileStr) @@ -571,6 +573,9 @@ function(tribits_extpkg_get_libname_and_path_from_libentry elseif (libEntryType STREQUAL "LIB_NAME") set(libname "${libentry}") set(libpath "") + elseif (libEntryType STREQUAL "TARGET_NAME") + string(REGEX REPLACE "([^:]*::)+" "" libname "${libentry}") + set(libpath "") else() message(FATAL_ERROR "Error libEntryType='${libEntryType}' not supported here!") endif() @@ -605,6 +610,13 @@ function(tribits_extpkg_append_add_library_str "set_target_properties(${prefixed_libname} PROPERTIES\n" " IMPORTED_LIBNAME \"${libname}\")\n" ) + elseif (libEntryType STREQUAL "TARGET_NAME") + string(REGEX REPLACE "([^:]*::)+" "" package_name "${libname}") + string(APPEND configFileStr + "#add_library(${prefixed_libname} IMPORTED INTERFACE)\n" + "#find_package(${package_name} REQUIRED)\n" + "#target_link_libraries(${prefixed_libname} INTERFACE ${libentry})\n" + ) else() message(FATAL_ERROR "Error libEntryType='${libEntryType}' not supported here!") endif() @@ -784,11 +796,11 @@ function(tribits_extpkg_create_all_libs_target tplName) # add_library() string(APPEND configFileStr - "add_library(${tplName}::all_libs INTERFACE IMPORTED)\n") + "add_library(TPL::${tplName}::all_libs INTERFACE IMPORTED)\n") # target_link_libraries() if (libTargets) string(APPEND configFileStr - "target_link_libraries(${tplName}::all_libs\n") + "target_link_libraries(TPL::${tplName}::all_libs\n") foreach (libTarget IN LISTS libTargets) string(APPEND configFileStr " INTERFACE ${libTarget}\n") @@ -799,7 +811,7 @@ function(tribits_extpkg_create_all_libs_target tplName) # target_include_directories() if (TPL_${tplName}_INCLUDE_DIRS) string(APPEND configFileStr - "target_include_directories(${tplName}::all_libs SYSTEM\n") + "target_include_directories(TPL::${tplName}::all_libs SYSTEM\n") foreach (inclDir IN LISTS TPL_${tplName}_INCLUDE_DIRS) string(APPEND configFileStr " INTERFACE \"${inclDir}\"\n") @@ -810,7 +822,7 @@ function(tribits_extpkg_create_all_libs_target tplName) # target_link_options() if (libLinkFlags) string(APPEND configFileStr - "target_link_options(${tplName}::all_libs\n") + "target_link_options(TPL::${tplName}::all_libs\n") foreach (likLinkFlag IN LISTS libLinkFlags) string(APPEND configFileStr " INTERFACE \"${likLinkFlag}\"\n") diff --git a/cmake/tribits/core/package_arch/TribitsProcessEnabledTpl.cmake b/cmake/tribits/core/package_arch/TribitsProcessEnabledTpl.cmake index dcdde4ce6..aaec95d49 100644 --- a/cmake/tribits/core/package_arch/TribitsProcessEnabledTpl.cmake +++ b/cmake/tribits/core/package_arch/TribitsProcessEnabledTpl.cmake @@ -154,9 +154,9 @@ function(tribits_process_enabled_tpl TPL_NAME) set(buildDirExternalPkgsDir "${${PROJECT_NAME}_BINARY_DIR}/${${PROJECT_NAME}_BUILD_DIR_EXTERNAL_PKGS_DIR}") set(tplConfigFile - "${buildDirExternalPkgsDir}/${TPL_NAME}/${TPL_NAME}Config.cmake") + "${buildDirExternalPkgsDir}/TPL-Seacas-${TPL_NAME}/TPL-Seacas-${TPL_NAME}Config.cmake") set(tplConfigVersionFile - "${buildDirExternalPkgsDir}/${TPL_NAME}/${TPL_NAME}ConfigVersion.cmake") + "${buildDirExternalPkgsDir}/TPL-Seacas-${TPL_NAME}/TPL-Seacas-${TPL_NAME}ConfigVersion.cmake") tribits_extpkg_write_config_version_file(${TPL_NAME} "${tplConfigVersionFile}") tribits_extpkg_install_config_file(${TPL_NAME} "${tplConfigFile}") diff --git a/cmake/tribits/core/package_arch/TribitsTplFindIncludeDirsAndLibraries.cmake b/cmake/tribits/core/package_arch/TribitsTplFindIncludeDirsAndLibraries.cmake index d3cb102cf..3641799ac 100644 --- a/cmake/tribits/core/package_arch/TribitsTplFindIncludeDirsAndLibraries.cmake +++ b/cmake/tribits/core/package_arch/TribitsTplFindIncludeDirsAndLibraries.cmake @@ -423,9 +423,7 @@ function(tribits_tpl_find_include_dirs_and_libraries TPL_NAME) set(TPL_CMAKE_FIND_LIBRARY_SUFFIXES ${TPL_CMAKE_FIND_LIBRARY_SUFFIXES_DEFAULT}) else() if (WIN32) - set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a) else() - set(CMAKE_FIND_LIBRARY_SUFFIXES .a ) endif() endif() #print_var(CMAKE_FIND_LIBRARY_SUFFIXES) @@ -717,7 +717,7 @@ function(tribits_tpl_find_include_dirs_and_libraries TPL_NAME) set(buildDirExternalPkgsDir "${${PROJECT_NAME}_BINARY_DIR}/${${PROJECT_NAME}_BUILD_DIR_EXTERNAL_PKGS_DIR}") - set(tplConfigFileBaseDir "${buildDirExternalPkgsDir}/${TPL_NAME}") + set(tplConfigFileBaseDir "${buildDirExternalPkgsDir}/TPL-Seacas-${TPL_NAME}") - set(tplConfigFile "${tplConfigFileBaseDir}/${TPL_NAME}Config.cmake") + set(tplConfigFile "${tplConfigFileBaseDir}/TPL-Seacas-${TPL_NAME}Config.cmake") tribits_extpkg_write_config_file(${TPL_NAME} "${tplConfigFile}") if (NOT ${PROJECT_NAME}_ENABLE_INSTALLATION_TESTING) include("${tplConfigFile}") diff --git a/cmake/tribits/core/package_arch/TribitsWriteClientExportFiles.cmake b/cmake/tribits/core/package_arch/TribitsWriteClientExportFiles.cmake index 1f31b6ec0..9bc1057b7 100644 --- a/cmake/tribits/core/package_arch/TribitsWriteClientExportFiles.cmake +++ b/cmake/tribits/core/package_arch/TribitsWriteClientExportFiles.cmake @@ -289,7 +289,11 @@ function(tribits_write_flexible_package_client_export_files) set(${PACKAGE_NAME}_TPL_LIBRARIES "") foreach(TPL ${ORDERED_FULL_TPL_SET}) - list(APPEND ${PACKAGE_NAME}_TPL_LIBRARIES ${TPL}::all_libs) + if(TARGET TPL::${TPL}::all_libs) + list(APPEND ${PACKAGE_NAME}_TPL_LIBRARIES TPL::${TPL}::all_libs) + else() + list(APPEND ${PACKAGE_NAME}_TPL_LIBRARIES ${TPL}::all_libs) + endif() endforeach() # Generate a note discouraging editing of the Config.cmake file @@ -587,17 +591,21 @@ function(tribits_append_dependent_package_config_file_includes_and_enables packa "\n# Include configuration of dependent packages\n") foreach(depPkg IN LISTS ${packageName}_LIB_ENABLED_DEPENDENCIES) set(packageConfigBaseDir "") # Initially, no add include() + set(packageTarget "${depPkg}::all_libs") + set(packageConfig "${depPkg}Config.cmake") if (${depPkg}_PACKAGE_BUILD_STATUS STREQUAL "INTERNAL") set(packageConfigBaseDir "${pkgConfigFileBaseDir}/${depPkg}") elseif (${depPkg}_PACKAGE_BUILD_STATUS STREQUAL "EXTERNAL") - set(packageConfigBaseDir "${extPkgConfigFileBaseDir}/${depPkg}") + set(packageConfigBaseDir "${extPkgConfigFileBaseDir}/TPL-Seacas-${depPkg}") + set(packageTarget "TPL::${depPkg}::all_libs") + set(packageConfig "TPL-Seacas-${depPkg}Config.cmake") else() message(FATAL_ERROR "ERROR: ${depPkg}_PACKAGE_BUILD_STATUS='${${depPkg}_PACKAGE_BUILD_STATUS}' invalid!") endif() if (packageConfigBaseDir) string(APPEND configFileStr - "if (NOT TARGET ${depPkg}::all_libs)\n" - " include(\"${packageConfigBaseDir}/${depPkg}Config.cmake\")\n" + "if (NOT TARGET ${packageTarget})\n" + " include(\"${packageConfigBaseDir}/${packageConfig}\")\n" "endif()\n" ) endif() diff --git a/cmake/tribits/core/package_arch/TribitsExternalPackageFindTplHelpers.cmake b/cmake/tribits/core/package_arch/TribitsExternalPackageFindTplHelpers.cmake index 1873267bd..ed6254632 100644 --- a/cmake/tribits/core/package_arch/TribitsExternalPackageFindTplHelpers.cmake +++ b/cmake/tribits/core/package_arch/TribitsExternalPackageFindTplHelpers.cmake @@ -120,17 +120,21 @@ function(tribits_extpkg_create_package_config_file_with_imported_targets "set(${externalPkg}_DIR \"${${externalPkg}_DIR}\")\n" ) endif() string(APPEND configFileStr - "find_dependency(${externalPkg})\n" - "add_library(${tplName}::all_libs INTERFACE IMPORTED GLOBAL)\n" + "find_dependency(${externalPkg})\n" # This is outside TPL + "if(NOT TARGET ${tplName}::all_libs)\n" + " add_library(${tplName}::all_libs INTERFACE IMPORTED GLOBAL)\n" ) foreach (importedTarget IN LISTS PARSE_IMPORTED_TARGETS_FOR_ALL_LIBS) string(APPEND configFileStr - "target_link_libraries(${tplName}::all_libs INTERFACE ${importedTarget})\n") + " target_link_libraries(${tplName}::all_libs INTERFACE ${importedTarget})\n") endforeach() + string(APPEND configFileStr + "endif()\n" + ) set(buildDirExternalPkgsDir "${${PROJECT_NAME}_BINARY_DIR}/${${PROJECT_NAME}_BUILD_DIR_EXTERNAL_PKGS_DIR}") set(tplConfigFile - "${buildDirExternalPkgsDir}/${tplName}/${tplName}Config.cmake") + "${buildDirExternalPkgsDir}/TPL-Seacas-${tplName}/TPL-Seacas-${tplName}Config.cmake") file(WRITE "${tplConfigFile}" "${configFileStr}") endfunction() diff --git a/cmake/tribits/core/package_arch/TribitsExternalPackageWriteConfigFile.cmake b/cmake/tribits/core/package_arch/TribitsExternalPackageWriteConfigFile.cmake index c49a2c019..7c906ce26 100644 --- a/cmake/tribits/core/package_arch/TribitsExternalPackageWriteConfigFile.cmake +++ b/cmake/tribits/core/package_arch/TribitsExternalPackageWriteConfigFile.cmake @@ -334,9 +334,10 @@ function(tribits_extpkg_add_find_upstream_dependencies_str endif() string(APPEND configFileFragStr "if (NOT TARGET TPL::${upstreamTplDepName}::all_libs)\n" - " set(${upstreamTplDepName}_DIR \"\${CMAKE_CURRENT_LIST_DIR}/../${upstreamTplDepName}\")\n" + " set(TPL-Seacas-${upstreamTplDepName}_DIR \"\${CMAKE_CURRENT_LIST_DIR}/../TPL-Seacas-${upstreamTplDepName}\")\n" # Looks for internal dep + " # Really only upstream ? NO ! THis is for ::all_libs targets in internal consumers\n" " find_dependency(TPL-Seacas-${upstreamTplDepName} REQUIRED CONFIG \${${tplName}_SearchNoOtherPathsArgs})\n" - " unset(${upstreamTplDepName}_DIR)\n" + " unset(TPL-Seacas-${upstreamTplDepName}_DIR)\n" "endif()\n" "\n" )