Cloned SEACAS for EXODUS library with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

586 lines
21 KiB

# @HEADER
# ************************************************************************
#
# TriBITS: Tribal Build, Integrate, and Test System
# Copyright 2013 Sandia Corporation
#
# Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
# the U.S. Government retains certain rights in this software.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# 3. Neither the name of the Corporation nor the names of the
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# ************************************************************************
# @HEADER
################################################################################
#
# Module TribitsInternalPackageWriteConfigFile.cmake
#
# This module contains code for generating <Package>Config.cmake files for
# internal TriBITS packages.
#
################################################################################
include(TribitsGeneralMacros)
include(TribitsPkgExportCacheVars)
include(TribitsWritePackageConfigFileHelpers)
# Generate the ${PACKAGE_NAME}Config.cmake file for package PACKAGE_NAME.
#
# ToDo: Finish documentation!
#
function(tribits_write_package_client_export_files PACKAGE_NAME)
if(${PROJECT_NAME}_VERBOSE_CONFIGURE)
message("\nTRIBITS_WRITE_PACKAGE_CLIENT_EXPORT_FILES: ${PACKAGE_NAME}")
endif()
set(buildDirCMakePkgsDir
"${${PROJECT_NAME}_BINARY_DIR}/${${PROJECT_NAME}_BUILD_DIR_CMAKE_PKGS_DIR}")
set(EXPORT_FILES_ARGS PACKAGE_NAME ${PACKAGE_NAME})
if (${PROJECT_NAME}_ENABLE_INSTALL_CMAKE_CONFIG_FILES)
if(${PROJECT_NAME}_VERBOSE_CONFIGURE)
message("For package ${PACKAGE_NAME} creating ${PACKAGE_NAME}Config.cmake")
endif()
set(PACKAGE_CONFIG_FOR_BUILD_BASE_DIR
"${buildDirCMakePkgsDir}/${PACKAGE_NAME}" )
set(PACKAGE_CONFIG_FOR_INSTALL_BASE_DIR
"${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles" )
append_set(EXPORT_FILES_ARGS
PACKAGE_CONFIG_FOR_BUILD_BASE_DIR "${PACKAGE_CONFIG_FOR_BUILD_BASE_DIR}"
PACKAGE_CONFIG_FOR_INSTALL_BASE_DIR "${PACKAGE_CONFIG_FOR_INSTALL_BASE_DIR}"
)
endif()
tribits_write_flexible_package_client_export_files(${EXPORT_FILES_ARGS})
tribits_write_package_client_export_files_install_targets(${EXPORT_FILES_ARGS})
endfunction()
# @FUNCTION: tribits_write_package_client_export_files_install_targets()
#
# Create the ``<Package>ConfigTargets.cmake`` file and install rules and the
# install() target for the previously generated
# ``<Package>Config_install.cmake`` files generated by the
# `tribits_write_flexible_package_client_export_files()`_ function.
#
# Usage::
#
# tribits_write_package_client_export_files_install_targets(
# PACKAGE_NAME <packageName>
# PACKAGE_CONFIG_FOR_BUILD_BASE_DIR <packageConfigForBuildBaseDir>
# PACKAGE_CONFIG_FOR_INSTALL_BASE_DIR <packageConfigForInstallBaseDir>
# )
#
# The install() commands must be in a different subroutine or CMake will not
# allow you to call the routine, even if you if() it out!
#
function(tribits_write_package_client_export_files_install_targets)
cmake_parse_arguments(
#prefix
PARSE
#options
""
#one_value_keywords
"PACKAGE_NAME;PACKAGE_CONFIG_FOR_BUILD_BASE_DIR;PACKAGE_CONFIG_FOR_INSTALL_BASE_DIR"
#multi_value_keywords
""
${ARGN}
)
set(PACKAGE_NAME ${PARSE_PACKAGE_NAME})
if (PARSE_PACKAGE_CONFIG_FOR_BUILD_BASE_DIR)
tribits_get_package_config_build_dir_targets_file(${PACKAGE_NAME}
"${PARSE_PACKAGE_CONFIG_FOR_BUILD_BASE_DIR}" packageConfigBuildDirTargetsFile )
export(
EXPORT ${PACKAGE_NAME}
NAMESPACE ${PACKAGE_NAME}::
FILE "${packageConfigBuildDirTargetsFile}" )
endif()
if (PARSE_PACKAGE_CONFIG_FOR_INSTALL_BASE_DIR)
install(
FILES
"${PARSE_PACKAGE_CONFIG_FOR_INSTALL_BASE_DIR}/${PACKAGE_NAME}Config_install.cmake"
DESTINATION "${${PROJECT_NAME}_INSTALL_LIB_DIR}/cmake/${PACKAGE_NAME}"
RENAME ${PACKAGE_NAME}Config.cmake
)
install(
EXPORT ${PACKAGE_NAME}
NAMESPACE ${PACKAGE_NAME}::
DESTINATION "${${PROJECT_NAME}_INSTALL_LIB_DIR}/cmake/${PACKAGE_NAME}"
FILE "${PACKAGE_NAME}Targets.cmake" )
endif()
endfunction()
# @FUNCTION: tribits_generate_package_config_file_for_build_tree()
#
# Called from tribits_write_flexible_package_client_export_files() to finish
# up generating text for and writing the file `<Package>Config.cmake` for the
# build tree.
#
# Usage::
#
# tribits_generate_package_config_file_for_build_tree( <packageName>
# [EXPORT_FILE_VAR_PREFIX <exportFileVarPrefix>]
# )
#
# These files get placed under <buildDir>/cmake_packages/<packageName>/
#
# That makes them easy to find by find_package() by adding
# <buildDir>/cmake_packages/ to CMAKE_PREFIX_PATH.
#
function(tribits_generate_package_config_file_for_build_tree packageName)
if (TRIBITS_WRITE_FLEXIBLE_PACKAGE_CLIENT_EXPORT_FILES_DEBUG_DUMP)
message("tribits_generate_package_config_file_for_build_tree(${ARGV})")
endif()
cmake_parse_arguments(
PARSE #prefix
"" #options
"EXPORT_FILE_VAR_PREFIX" #one_value_keywords
"" #multi_value_keywords
${ARGN}
)
if (PARSE_EXPORT_FILE_VAR_PREFIX)
set(EXPORT_FILE_VAR_PREFIX ${PARSE_EXPORT_FILE_VAR_PREFIX})
else()
set(EXPORT_FILE_VAR_PREFIX ${packageName})
endif()
set(buildDirExtPkgsDir
"${${PROJECT_NAME}_BINARY_DIR}/${${PROJECT_NAME}_BUILD_DIR_EXTERNAL_PKGS_DIR}")
set(buildDirCMakePkgsDir
"${${PROJECT_NAME}_BINARY_DIR}/${${PROJECT_NAME}_BUILD_DIR_CMAKE_PKGS_DIR}")
if (PARSE_PACKAGE_CONFIG_FOR_BUILD_BASE_DIR
OR PARSE_PACKAGE_CONFIG_FOR_INSTALL_BASE_DIR
)
# Custom code in configuration file (gets pulled from by configure_file()
# below)
set(PACKAGE_CONFIG_CODE "")
tribits_append_dependent_package_config_file_includes_and_enables_str(${packageName}
EXPORT_FILE_VAR_PREFIX ${EXPORT_FILE_VAR_PREFIX}
EXT_PKG_CONFIG_FILE_BASE_DIR "${buildDirExtPkgsDir}"
PKG_CONFIG_FILE_BASE_DIR "${buildDirCMakePkgsDir}"
CONFIG_FILE_STR_INOUT PACKAGE_CONFIG_CODE )
# Import build tree targets into applications.
#
# BMA: Export only the immediate libraries of this project to the
# build tree. Should manage more carefully, checking that they are
# targets of this project and not other libs. Also, should
# consider more careful recursive management of targets when there
# are sub-packages. We'd like to export per-package, but deps
# won't be satisfied, so we export one file for the project for
# now...
if (PARSE_PACKAGE_CONFIG_FOR_BUILD_BASE_DIR)
tribits_get_package_config_build_dir_targets_file(${packageName}
"${PACKAGE_CONFIG_FOR_BUILD_BASE_DIR}" packageConfigBuildDirTargetsFile )
string(APPEND PACKAGE_CONFIG_CODE
"\n# Import ${packageName} targets\n"
"include(\"${packageConfigBuildDirTargetsFile}\")\n")
endif()
tribits_extpkg_append_tribits_compliant_package_config_vars_str(${packageName}
PACKAGE_CONFIG_CODE)
tribits_set_compiler_vars_for_config_file(BUILD_DIR)
if ("${CMAKE_CXX_FLAGS}" STREQUAL "")
set(CMAKE_CXX_FLAGS_ESCAPED "")
else()
# Replace " by \".
string(REGEX REPLACE "\"" "\\\\\"" CMAKE_CXX_FLAGS_ESCAPED ${CMAKE_CXX_FLAGS})
endif()
# Used in configured file below
set(EXPORTED_PACKAGE_LIBS_NAMES ${${packageName}_EXPORTED_PACKAGE_LIBS_NAMES})
set(PDOLLAR "$")
set(tribitsConfigFilesDir
"${${PROJECT_NAME}_TRIBITS_DIR}/${TRIBITS_CMAKE_INSTALLATION_FILES_DIR}")
configure_file(
"${tribitsConfigFilesDir}/TribitsPackageConfigTemplate.cmake.in"
"${PARSE_PACKAGE_CONFIG_FOR_BUILD_BASE_DIR}/${packageName}Config.cmake"
)
endif()
endfunction()
# @FUNCTION: tribits_generate_package_config_file_for_install_tree()
#
# Called from tribits_write_flexible_package_client_export_files() to finish
# up generating text for and writing the file `<Package>Config_install.cmake`
# that will get installed.
#
# Usage::
#
# tribits_generate_package_config_file_for_install_tree( <packageName>
# [EXPORT_FILE_VAR_PREFIX <exportFileVarPrefix>]
# )
#
# The export files are typically installed in
# <install-dir>/<lib-path>/cmake/<package-name>/.
#
# This file isn't generally useful inside the build tree so it is being
# "hidden" in the CMakeFiles directory. It gets installed in a separate
# function. (NOTE: The install target is added in a different function to
# allow this function to be unit tested in a cmake -P script.)
#
function(tribits_generate_package_config_file_for_install_tree packageName)
if (TRIBITS_WRITE_FLEXIBLE_PACKAGE_CLIENT_EXPORT_FILES_DEBUG_DUMP)
message("tribits_generate_package_config_file_for_install_tree(${ARGV})")
endif()
cmake_parse_arguments(
PARSE #prefix
"" #options
"EXPORT_FILE_VAR_PREFIX" #one_value_keywords
"" #multi_value_keywords
${ARGN}
)
if (PARSE_EXPORT_FILE_VAR_PREFIX)
set(EXPORT_FILE_VAR_PREFIX ${PARSE_EXPORT_FILE_VAR_PREFIX})
else()
set(EXPORT_FILE_VAR_PREFIX ${packageName})
endif()
# Custom code in configuration file.
set(PACKAGE_CONFIG_CODE "")
tribits_append_dependent_package_config_file_includes_and_enables_str(${packageName}
EXPORT_FILE_VAR_PREFIX ${EXPORT_FILE_VAR_PREFIX}
EXT_PKG_CONFIG_FILE_BASE_DIR
"\${CMAKE_CURRENT_LIST_DIR}/../../${${PROJECT_NAME}_BUILD_DIR_EXTERNAL_PKGS_DIR}"
PKG_CONFIG_FILE_BASE_DIR "\${CMAKE_CURRENT_LIST_DIR}/.."
CONFIG_FILE_STR_INOUT PACKAGE_CONFIG_CODE )
# Import install targets
string(APPEND PACKAGE_CONFIG_CODE
"\n# Import ${packageName} targets\n"
"include(\"\${CMAKE_CURRENT_LIST_DIR}/${packageName}Targets.cmake\")\n")
tribits_extpkg_append_tribits_compliant_package_config_vars_str(${packageName}
PACKAGE_CONFIG_CODE)
# Write the specification of the rpath if necessary. This is only needed if
# we're building shared libraries.
if (BUILD_SHARED_LIBS)
set(SHARED_LIB_RPATH_COMMAND
${CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG}${CMAKE_INSTALL_PREFIX}/${${PROJECT_NAME}_INSTALL_LIB_DIR}
)
endif()
tribits_set_compiler_vars_for_config_file(INSTALL_DIR)
# Used in configure file below
set(EXPORTED_PACKAGE_LIBS_NAMES ${${packageName}_EXPORTED_PACKAGE_LIBS_NAMES})
set(PDOLLAR "$")
if (PARSE_PACKAGE_CONFIG_FOR_INSTALL_BASE_DIR)
configure_file(
"${${PROJECT_NAME}_TRIBITS_DIR}/${TRIBITS_CMAKE_INSTALLATION_FILES_DIR}/TribitsPackageConfigTemplate.cmake.in"
"${PARSE_PACKAGE_CONFIG_FOR_INSTALL_BASE_DIR}/${packageName}Config_install.cmake"
)
endif()
endfunction()
# @FUNCTION: tribits_write_flexible_package_client_export_files()
#
# Utility function for writing ``${PACKAGE_NAME}Config.cmake`` files for
# package ``${PACKAGE_NAME}`` with some greater flexibility than what is
# provided by the function ``tribits_write_package_client_export_files()`` and
# to allow unit testing the generation of these files..
#
# Usage::
#
# tribits_write_flexible_package_client_export_files(
# PACKAGE_NAME <packageName>
# [EXPORT_FILE_VAR_PREFIX <exportFileVarPrefix>]
# [PACKAGE_CONFIG_FOR_BUILD_BASE_DIR <packageConfigForBuildBaseDir>]
# [PACKAGE_CONFIG_FOR_INSTALL_BASE_DIR <packageConfigForInstallBaseDir>]
# )
#
# The arguments are:
#
# ``PACKAGE_NAME <packageName>``
#
# Gives the name of the TriBITS package for which the export files should
# be created.
#
# ``EXPORT_FILE_VAR_PREFIX <exportFileVarPrefix>``
#
# If specified, then all of the variables in the generated export files
# will be prefixed with ``<exportFileVarPrefix>_`` instead of
# ``<packageName>_``.
#
# ``PACKAGE_CONFIG_FOR_BUILD_BASE_DIR <packageConfigForBuildBaseDir>``
#
# If specified, then the package's ``<packageName>Config.cmake`` file and
# supporting files will be written under the directory
# ``<packageConfigForBuildBaseDir>/`` (and any subdirs that does exist
# will be created). The generated file ``<packageName>Config.cmake`` is
# for usage of the package in the build tree (not the install tree) and
# points to include directories and libraries in the build tree.
#
# ``PACKAGE_CONFIG_FOR_INSTALL_BASE_DIR <packageConfigForInstallBaseDir>``
#
# If specified, then the package's ``<packageName>Config_install.cmake``
# file and supporting files will be written under the directory
# ``<packageConfigForInstallBaseDir>/`` (and any subdirs that does exist
# will be created). The file ``${PACKAGE_NAME}Config_install.cmake`` is
# meant to be installed renamed as ``<packageName>Config.cmake`` in the
# install tree and it points to installed include directories and
# libraries.
#
# NOTE: This function does *not* contain any ``install()`` command itself
# because CMake will not allow those to even be present in scripting mode that
# is used for unit testing this function. Instead, the commands to install
# the files are added by the function
# ``tribits_write_package_client_export_files_install_targets()``.
#
function(tribits_write_flexible_package_client_export_files)
if (TRIBITS_WRITE_FLEXIBLE_PACKAGE_CLIENT_EXPORT_FILES_DEBUG_DUMP)
message("\ntribits_write_flexible_package_client_export_files(${ARGN})")
endif()
#
# A) Process the command-line arguments
#
cmake_parse_arguments(
#prefix
PARSE
#options
"WRITE_INSTALL_CMAKE_CONFIG_FILE"
#one_value_keywords
"PACKAGE_NAME;EXPORT_FILE_VAR_PREFIX;PACKAGE_CONFIG_FOR_BUILD_BASE_DIR;PACKAGE_CONFIG_FOR_INSTALL_BASE_DIR"
#multi_value_keywords
""
${ARGN}
)
tribits_check_for_unparsed_arguments()
if (NOT ${PROJECT_NAME}_GENERATE_EXPORT_FILE_DEPENDENCIES)
message(SEND_ERROR "Error: Can't generate export dependency files because"
" ${PROJECT_NAME}_GENERATE_EXPORT_FILE_DEPENDENCIES is not ON!")
return()
endif()
set(PACKAGE_NAME ${PARSE_PACKAGE_NAME})
if (TRIBITS_WRITE_FLEXIBLE_PACKAGE_CLIENT_EXPORT_FILES_DEBUG_DUMP)
print_var(PACKAGE_NAME)
endif()
set(EXPORT_FILE_VAR_PREFIX ${PACKAGE_NAME})
if (PARSE_EXPORT_FILE_VAR_PREFIX)
set(EXPORT_FILE_VAR_PREFIX ${PARSE_EXPORT_FILE_VAR_PREFIX})
endif()
if (TRIBITS_WRITE_FLEXIBLE_PACKAGE_CLIENT_EXPORT_FILES_DEBUG_DUMP)
print_var(EXPORT_FILE_VAR_PREFIX)
endif()
# Generate a note discouraging editing of the <package>Config.cmake file
set(DISCOURAGE_EDITING "Do not edit: This file was generated automatically by CMake.")
#
# B) Deal with the library rpath issues with shared libs
#
# Write the specification of the rpath if necessary. This is only needed if
# we're building shared libraries.
if(BUILD_SHARED_LIBS)
string(REPLACE ";" ":" SHARED_LIB_RPATH_COMMAND "${FULL_LIBRARY_DIRS_SET}")
set(SHARED_LIB_RPATH_COMMAND
${CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG}${SHARED_LIB_RPATH_COMMAND})
endif()
#
# C) Create the contents of the <Package>Config.cmake file for the build tree
#
tribits_generate_package_config_file_for_build_tree(${PACKAGE_NAME}
EXPORT_FILE_VAR_PREFIX ${EXPORT_FILE_VAR_PREFIX})
#
# D) Create <Package>Config_install.cmake file for the install tree
#
tribits_generate_package_config_file_for_install_tree(${PACKAGE_NAME}
EXPORT_FILE_VAR_PREFIX ${EXPORT_FILE_VAR_PREFIX})
endfunction()
# @FUNCTION: tribits_append_dependent_package_config_file_includes_and_enables_str()
#
# Append the includes for upstream external packages (TPLs) and internal
# packages as well as the enables/disables for upstream dependencies to an
# output `<Package>Config.cmake` file string.
#
# Usage::
#
# tribits_append_dependent_package_config_file_includes_and_enables_str(
# <packageName>
# EXPORT_FILE_VAR_PREFIX <exportFileVarPrefix>
# EXT_PKG_CONFIG_FILE_BASE_DIR <extPkgconfigFileBaseDir>
# PKG_CONFIG_FILE_BASE_DIR <pkgConfigFileBaseDir>
# CONFIG_FILE_STR_INOUT <configFileStrInOut>
# )
#
function(tribits_append_dependent_package_config_file_includes_and_enables_str packageName)
if (TRIBITS_WRITE_FLEXIBLE_PACKAGE_CLIENT_EXPORT_FILES_DEBUG_DUMP)
message("tribits_append_dependent_package_config_file_includes_and_enables_str(${ARGV})")
endif()
# Parse input
cmake_parse_arguments(
PARSE "" # prefix, options
#one_value_keywords
"EXPORT_FILE_VAR_PREFIX;EXT_PKG_CONFIG_FILE_BASE_DIR;PKG_CONFIG_FILE_BASE_DIR;CONFIG_FILE_STR_INOUT"
"" #multi_value_keywords
${ARGN}
)
tribits_check_for_unparsed_arguments()
if (PARSE_EXPORT_FILE_VAR_PREFIX)
set(EXPORT_FILE_VAR_PREFIX ${PARSE_EXPORT_FILE_VAR_PREFIX})
else()
set(EXPORT_FILE_VAR_PREFIX ${packageName})
endif()
set(extPkgConfigFileBaseDir "${PARSE_EXT_PKG_CONFIG_FILE_BASE_DIR}")
set(pkgConfigFileBaseDir "${PARSE_PKG_CONFIG_FILE_BASE_DIR}")
set(configFileStr "${${PARSE_CONFIG_FILE_STR_INOUT}}")
# Add set of enables/disables for all upstream dependencies
string(APPEND configFileStr
"# Enables/Disables for upstream package dependencies\n")
foreach(depPkg IN LISTS ${packageName}_LIB_DEFINED_DEPENDENCIES)
if (${packageName}_ENABLE_${depPkg})
set(enableVal ON)
else()
set(enableVal OFF)
endif()
string(APPEND configFileStr
"set(${EXPORT_FILE_VAR_PREFIX}_ENABLE_${depPkg} ${enableVal})\n")
endforeach()
# Put in set() statements for exported cache vars
string(APPEND configFileStr
"\n# Exported cache variables\n")
tribits_pkg_append_set_commands_for_exported_vars(${packageName} configFileStr)
# Include configurations of dependent packages
string(APPEND configFileStr
"\n# Include configuration of dependent packages\n")
foreach(depPkg IN LISTS ${packageName}_LIB_ENABLED_DEPENDENCIES)
set(packageConfigBaseDir "") # Initially, no add include()
if (${depPkg}_PACKAGE_BUILD_STATUS STREQUAL "INTERNAL")
set(packageConfigBaseDir "\${CMAKE_CURRENT_LIST_DIR}/../${depPkg}")
elseif (${depPkg}_PACKAGE_BUILD_STATUS STREQUAL "EXTERNAL")
if (NOT "${${depPkg}_TRIBITS_COMPLIANT_PACKAGE_CONFIG_FILE_DIR}" STREQUAL "")
set(packageConfigBaseDir "${${depPkg}_TRIBITS_COMPLIANT_PACKAGE_CONFIG_FILE_DIR}")
else()
set(packageConfigBaseDir
"\${CMAKE_CURRENT_LIST_DIR}/../../${${PROJECT_NAME}_BUILD_DIR_EXTERNAL_PKGS_DIR}/${depPkg}")
endif()
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"
"endif()\n"
)
endif()
endforeach()
# Set the output
set(${PARSE_CONFIG_FILE_STR_INOUT} "${configFileStr}" PARENT_SCOPE)
endfunction()
# Function to return the full path the targets file for the
# <Package>Config.cmake file in the build tree.
#
function(tribits_get_package_config_build_dir_targets_file PACKAGE_NAME
packageConfigForBuildBaseDir packageConfigBuildDirTargetsFileOut
)
set(${packageConfigBuildDirTargetsFileOut}
"${PACKAGE_CONFIG_FOR_BUILD_BASE_DIR}/${PACKAGE_NAME}Targets.cmake"
PARENT_SCOPE )
endfunction()
macro(tribits_set_compiler_var_for_config_file LANG FOR_DIR)
if (NOT "${CMAKE_${LANG}_COMPILER_FOR_CONFIG_FILE_${FOR_DIR}}" STREQUAL "")
set(CMAKE_${LANG}_COMPILER_FOR_CONFIG_FILE
"${CMAKE_${LANG}_COMPILER_FOR_CONFIG_FILE_${FOR_DIR}}")
else()
set(CMAKE_${LANG}_COMPILER_FOR_CONFIG_FILE
"${CMAKE_${LANG}_COMPILER}")
endif()
#message("${FOR_DIR}: CMAKE_${LANG}_COMPILER_FOR_CONFIG_FILE='${CMAKE_${LANG}_COMPILER_FOR_CONFIG_FILE}'")
endmacro()
macro(tribits_set_compiler_vars_for_config_file FOR_DIR)
tribits_set_compiler_var_for_config_file(CXX ${FOR_DIR})
tribits_set_compiler_var_for_config_file(C ${FOR_DIR})
tribits_set_compiler_var_for_config_file(Fortran ${FOR_DIR})
endmacro()