summaryrefslogtreecommitdiff
path: root/infra/nncc/cmake/modules/ThirdPartyTools.cmake
blob: 8fbeacf6e4346b217d0408a2b64aaa5919129a29 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
function(ThirdParty_URL VARNAME)
  # PACKAGE (mandatory)
  # VERSION (mandatory)
  # ENV ... (optional, for backward compatibility)

  include(CMakeParseArguments)

  cmake_parse_arguments(ARG "" "PACKAGE;VERSION;ENV" "" ${ARGN})

  if(NOT ARG_PACKAGE)
    message(FATAL_ERROR "PACKAGE is missing")
  endif(NOT ARG_PACKAGE)

  if(NOT ARG_VERSION)
    message(FATAL_ERROR "VERSION is missing")
  endif(NOT ARG_VERSION)

  set(PACKAGE_INFO_DIR "${NNCC_PROJECT_SOURCE_DIR}/infra/nncc/3rdparty/${ARG_PACKAGE}/${ARG_VERSION}")
  set(PACKAGE_URL_FILE "${PACKAGE_INFO_DIR}/URL.default")
  set(PACKAGE_URL_LOCAL_FILE "${PACKAGE_INFO_DIR}/URL.local")

  if(NOT EXISTS "${PACKAGE_URL_FILE}")
    message(FATAL_ERROR "URL file does not exist")
  endif()

  # Read URL from "[PACKAGE NAME]/[PACKAGE VERSION]/URL.default"
  file(STRINGS "${PACKAGE_URL_FILE}" VALUE)

  # Read URL from "[PACKAGE NAME]/[PACAKGE VERSION]/URL.local" (if it exists)
  if(EXISTS "${PACKAGE_URL_LOCAL_FILE}")
    file(STRINGS "${PACKAGE_URL_LOCAL_FILE}" VALUE)
  endif()

  # Read URL from process environment (if ENV option is specified)
  if(ARG_ENV)
    if(DEFINED ENV{${ARG_ENV}})
      set(VALUE $ENV{${ARG_ENV}})
    endif()
  endif(ARG_ENV)

  set("${VARNAME}" "${VALUE}" PARENT_SCOPE)
endfunction(ThirdParty_URL)