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.
 
 
 
 
 
 

120 lines
4.2 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
include(TribitsCMakePolicies NO_POLICY_SCOPE)
include(AdvancedSet)
include(MessageWrapper)
advanced_set( ${PROJECT_NAME}_CMAKE_EXECUTABLE_SUFFIX ".exe"
CACHE STRING
"Default exec suffix on all platforms (can be overridden by each executable added)." )
#
# Process the COMM arguments
#
# NOTE: The COMM array arguments is passed as ${ARGN}
#
function( tribits_process_comm_args ADD_SERIAL_FEATURE_OUT ADD_MPI_FEATURE_OUT )
set(COMM_ARRAY ${ARGN})
if (COMM_ARRAY)
set(ADD_SERIAL_FEATURE OFF)
set(ADD_MPI_FEATURE OFF)
foreach(COMM ${COMM_ARRAY})
if(${COMM} STREQUAL "serial")
set(ADD_SERIAL_FEATURE ON)
elseif (${COMM} STREQUAL "mpi")
set(ADD_MPI_FEATURE ON)
else()
message(SEND_ERROR "Error, the COMM value '${COMM}' is not valid."
" Only 'mpi' and 'serial' are allowed.")
endif()
endforeach()
else()
set(ADD_MPI_FEATURE ON)
set(ADD_SERIAL_FEATURE ON)
endif()
if (TPL_ENABLE_MPI)
set(ADD_SERIAL_FEATURE OFF)
if (NOT ADD_MPI_FEATURE)
set(EXCLUDED_FEATURE TRUE)
endif()
else()
set(ADD_MPI_FEATURE OFF)
if (NOT ADD_SERIAL_FEATURE)
set(EXCLUDED_FEATURE TRUE)
endif()
endif()
if (TEST_NAME AND EXCLUDED_FEATURE)
message_wrapper(
"-- ${TEST_NAME}: NOT added test because TPL_ENABLE_MPI='${TPL_ENABLE_MPI}' and COMM='${COMM_ARRAY}'!"
)
endif()
set(${ADD_SERIAL_FEATURE_OUT} ${ADD_SERIAL_FEATURE} PARENT_SCOPE)
set(${ADD_MPI_FEATURE_OUT} ${ADD_MPI_FEATURE} PARENT_SCOPE)
endfunction()
function(tribits_create_name_from_current_source_directory directoryNameOut)
set(directoryName "")
#Get the unique part of the path for this test directory
string(REGEX REPLACE ${PACKAGE_SOURCE_DIR} "" unique_dir_path
${CMAKE_CURRENT_SOURCE_DIR})
#strip off the preceding "/"
string(LENGTH ${unique_dir_path} udp_length)
math(EXPR last_index "${udp_length}-1")
string(SUBSTRING ${unique_dir_path} 1 ${last_index} unique_dir_path)
# Make the name acceptable for filesystems. This may need to be made
# compatible with windows since they use a "\" instead of a "/" for
# directory delimiters. I'm not sure how this will react if we encounter a
# directory name with a space in it.
string(REGEX REPLACE "/" "_" directoryName "${unique_dir_path}")
set(${directoryNameOut} "${directoryName}" PARENT_SCOPE)
endfunction()