#!/usr/bin/cmake -P
## Copyright(c) 2020, Intel Corporation
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted provided that the following conditions are met:
##
## * Redistributions of source code must retain the above copyright notice,
## this list of conditions and the following disclaimer.
## * 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.
## * Neither the name of Intel Corporation nor the names of its contributors
## may be used to endorse or promote products derived from this software
## without specific prior written permission.
##
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER OR 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
cmake_minimum_required (VERSION 2.8.12)
macro(opae_external_project_add)
set(options EXCLUDE_FROM_ALL NO_ADD_SUBDIRECTORY)
set(oneValueArgs PROJECT_NAME GIT_URL GIT_TAG PRESERVE_REPOS)
set(multiValueArgs)
cmake_parse_arguments(OPAE_EXTERNAL_PROJECT_ADD "${options}"
"${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if(NOT OPAE_EXTERNAL_PROJECT_ADD_GIT_TAG)
set(OPAE_EXTERNAL_PROJECT_ADD_GIT_TAG "master")
endif(NOT OPAE_EXTERNAL_PROJECT_ADD_GIT_TAG)
set(${OPAE_EXTERNAL_PROJECT_ADD_PROJECT_NAME}_ROOT
${CMAKE_SOURCE_DIR}/external/${OPAE_EXTERNAL_PROJECT_ADD_PROJECT_NAME}
CACHE PATH "Root directory to ${OPAE_EXTERNAL_PROJECT_ADD_PROJECT_NAME} external" FORCE)
set(download_dir
${CMAKE_CURRENT_BINARY_DIR}/${OPAE_EXTERNAL_PROJECT_ADD_PROJECT_NAME}/download)
file(WRITE ${download_dir}/CMakeLists.txt
"cmake_minimum_required(VERSION 2.8.12)\n"
"include(ExternalProject)\n"
"ExternalProject_Add(${OPAE_EXTERNAL_PROJECT_ADD_PROJECT_NAME}\n"
" GIT_REPOSITORY ${OPAE_EXTERNAL_PROJECT_ADD_GIT_URL}\n"
" GIT_TAG ${OPAE_EXTERNAL_PROJECT_ADD_GIT_TAG}\n"
" SOURCE_DIR ${CMAKE_SOURCE_DIR}/external/${OPAE_EXTERNAL_PROJECT_ADD_PROJECT_NAME}\n"
" BINARY_DIR ${CMAKE_BINARY_DIR}/external/${OPAE_EXTERNAL_PROJECT_ADD_PROJECT_NAME}\n"
" CONFIGURE_COMMAND \"\"\n"
" BUILD_COMMAND \"\"\n"
" INSTALL_COMMAND \"\"\n"
" TEST_COMMAND \"\"\n"
" COMMENT \"adding ${OPAE_EXTERNAL_PROJECT_ADD_PROJECT_NAME}\"\n"
")\n"
)
if(NOT EXISTS ${CMAKE_SOURCE_DIR}/external/${OPAE_EXTERNAL_PROJECT_ADD_PROJECT_NAME} OR NOT ${OPAE_EXTERNAL_PROJECT_ADD_PRESERVE_REPOS})
execute_process(
COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
RESULT_VARIABLE result
WORKING_DIRECTORY ${download_dir})
if(result)
message(FATAL_ERROR "CMake step for ${OPAE_EXTERNAL_PROJECT_ADD_PROJECT_NAME} failed: ${result}")
endif(result)
execute_process(
COMMAND ${CMAKE_COMMAND} --build .
RESULT_VARIABLE result
WORKING_DIRECTORY ${download_dir})
if(result)
message(FATAL_ERROR "Build step for ${OPAE_EXTERNAL_PROJECT_ADD_PROJECT_NAME} failed: ${result}")
endif(result)
endif()
set(src_dir
${CMAKE_SOURCE_DIR}/external/${OPAE_EXTERNAL_PROJECT_ADD_PROJECT_NAME})
set(bin_dir
${CMAKE_BINARY_DIR}/external/${OPAE_EXTERNAL_PROJECT_ADD_PROJECT_NAME})
if(NOT ${OPAE_EXTERNAL_PROJECT_ADD_NO_ADD_SUBDIRECTORY} AND EXISTS ${src_dir}/CMakeLists.txt)
if(${OPAE_EXTERNAL_PROJECT_ADD_EXCLUDE_FROM_ALL})
add_subdirectory(${src_dir} ${bin_dir} EXCLUDE_FROM_ALL)
else(${OPAE_EXTERNAL_PROJECT_ADD_EXCLUDE_FROM_ALL})
add_subdirectory(${src_dir} ${bin_dir})
endif(${OPAE_EXTERNAL_PROJECT_ADD_EXCLUDE_FROM_ALL})
endif(NOT ${OPAE_EXTERNAL_PROJECT_ADD_NO_ADD_SUBDIRECTORY} AND EXISTS ${src_dir}/CMakeLists.txt)
endmacro(opae_external_project_add)