/indra/cmake/Prebuilt.cmake
CMake | 53 lines | 39 code | 5 blank | 9 comment | 9 complexity | c06933a02bd1ffdf05cdf601454df10a MD5 | raw file
Possible License(s): LGPL-2.1
- # -*- cmake -*-
- include(FindAutobuild)
- if(INSTALL_PROPRIETARY)
- include(FindSCP)
- endif(INSTALL_PROPRIETARY)
- # The use_prebuilt_binary macro handles automated installation of package
- # dependencies using autobuild. The goal is that 'autobuild install' should
- # only be run when we know we need to install a new package. This should be
- # the case in a clean checkout, or if autobuild.xml has been updated since the
- # last run (encapsulated by the file ${CMAKE_BINARY_DIR}/temp/sentinel_installed),
- # or if a previous attempt to install the package has failed (the exit status
- # of previous attempts is serialized in the file
- # ${CMAKE_BINARY_DIR}/temp/${_binary}_installed)
- macro (use_prebuilt_binary _binary)
- if (NOT DEFINED STANDALONE_${_binary})
- set(STANDALONE_${_binary} ${STANDALONE})
- endif (NOT DEFINED STANDALONE_${_binary})
- if (NOT STANDALONE_${_binary})
- if("${${_binary}_installed}" STREQUAL "" AND EXISTS "${CMAKE_BINARY_DIR}/temp/${_binary}_installed")
- file(READ ${CMAKE_BINARY_DIR}/temp/${_binary}_installed "${_binary}_installed")
- if(DEBUG_PREBUILT)
- message(STATUS "${_binary}_installed: \"${${_binary}_installed}\"")
- endif(DEBUG_PREBUILT)
- endif("${${_binary}_installed}" STREQUAL "" AND EXISTS "${CMAKE_BINARY_DIR}/temp/${_binary}_installed")
- if(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed OR NOT ${${_binary}_installed} EQUAL 0)
- if(DEBUG_PREBUILT)
- message("cd ${CMAKE_SOURCE_DIR} && ${AUTOBUILD_EXECUTABLE} install
- --install-dir=${AUTOBUILD_INSTALL_DIR}
- --skip-license-check
- ${_binary} ")
- endif(DEBUG_PREBUILT)
- execute_process(COMMAND "${AUTOBUILD_EXECUTABLE}"
- install
- --install-dir=${AUTOBUILD_INSTALL_DIR}
- --skip-license-check
- ${_binary}
- WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
- RESULT_VARIABLE ${_binary}_installed
- )
- file(WRITE ${CMAKE_BINARY_DIR}/temp/${_binary}_installed "${${_binary}_installed}")
- endif(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed OR NOT ${${_binary}_installed} EQUAL 0)
- if(NOT ${_binary}_installed EQUAL 0)
- message(FATAL_ERROR
- "Failed to download or unpack prebuilt '${_binary}'."
- " Process returned ${${_binary}_installed}.")
- endif (NOT ${_binary}_installed EQUAL 0)
- endif (NOT STANDALONE_${_binary})
- endmacro (use_prebuilt_binary _binary)