1# @HEADER 2# ************************************************************************ 3# 4# TriBITS: Tribal Build, Integrate, and Test System 5# Copyright 2013 Sandia Corporation 6# 7# Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, 8# the U.S. Government retains certain rights in this software. 9# 10# Redistribution and use in source and binary forms, with or without 11# modification, are permitted provided that the following conditions are 12# met: 13# 14# 1. Redistributions of source code must retain the above copyright 15# notice, this list of conditions and the following disclaimer. 16# 17# 2. Redistributions in binary form must reproduce the above copyright 18# notice, this list of conditions and the following disclaimer in the 19# documentation and/or other materials provided with the distribution. 20# 21# 3. Neither the name of the Corporation nor the names of the 22# contributors may be used to endorse or promote products derived from 23# this software without specific prior written permission. 24# 25# THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY 26# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 27# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 28# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE 29# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 30# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 31# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 32# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 33# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 34# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 35# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36# 37# ************************************************************************ 38# @HEADER 39 40INCLUDE(CMakeParseArguments) 41INCLUDE(PrintNonemptyVar) 42 43# 44# Finds the absolute path for a program given optionally just the program name 45# 46# Input keyword arguments: 47# 48# NAMES name1 name2 ... 49# List of default names that will be search 50# 51# PATHS path1 path2 ... 52# List of paths 53# 54# DOC docStr 55# Documentation string 56# 57 58FUNCTION(FIND_PROGRAM_PLUS PROG_VAR) 59 60 CMAKE_PARSE_ARGUMENTS( 61 #prefix 62 PARSE 63 #options 64 "" 65 #one_value_keywords 66 "" 67 #multi_value_keywords 68 "NAMES;PATHS;DOC" 69 ${ARGN} 70 ) 71 72 TRIBITS_CHECK_FOR_UNPARSED_ARGUMENTS() 73 74 PRINT_NONEMPTY_VAR(${PROG_VAR}) 75 76 IF (IS_ABSOLUTE ${PROG_VAR}) 77 #MESSAGE(STATUS "Is Absoute") 78 SET(NAMES_ARGS ${PARSE_NAMES}) 79 ELSE() 80 #MESSAGE(STATUS "Is Not Absolute") 81 SET(NAMES_ARGS ${${PROG_VAR}} ${PARSE_NAMES}) 82 SET(${PROG_VAR} "${PROG_VAR}-NOTFOUND" CACHE FILEPATH "" FORCE) 83 ENDIF() 84 #PRINT_VAR(NAMES_ARGS) 85 86 SET(DOC "${PARSE_DOC} Can be full path or just exec name.") 87 88 # Look for program in given paths first! 89 FIND_PROGRAM( ${PROG_VAR} 90 NAMES ${NAMES_ARGS} 91 PATHS ${PARSE_PATHS} 92 DOC ${DOC} 93 NO_DEFAULT_PATH 94 ) 95 FIND_PROGRAM( ${PROG_VAR} 96 NAMES ${NAMES_ARGS} 97 DOC ${DOC} 98 ) 99 MARK_AS_ADVANCED(${PROG_VAR}) 100 101 PRINT_NONEMPTY_VAR(${PROG_VAR}) 102 103ENDFUNCTION() 104