CMAKE: moved GNA var setting to proper place; removed find_package when build python...
[platform/upstream/dldt.git] / inference-engine / cmake / dependency_solver.cmake
1 # Copyright (C) 2018-2019 Intel Corporation
2 # SPDX-License-Identifier: Apache-2.0
3 #
4
5 include ("download")
6
7 function (resolve_archive_dependency VAR COMPONENT ARCHIVE ARCHIVE_UNIFIED ARCHIVE_WIN ARCHIVE_LIN ARCHIVE_MAC TARGET_PATH FOLDER ENVIRONMENT)
8
9   if (ENVIRONMENT AND (DEFINED ENV{${ENVIRONMENT}}))
10     set(HAS_ENV "TRUE")
11   endif()
12
13   if (NOT DEFINED HAS_ENV)
14     if (ARCHIVE)
15       #TODO: check whether this is platform specific binary with same name per or it is in common folder
16       DownloadAndExtract(${COMPONENT} ${ARCHIVE} ${TARGET_PATH} result_path ${FOLDER})
17     else()
18       DownloadAndExtractPlatformSpecific(${COMPONENT} ${ARCHIVE_UNIFIED} ${ARCHIVE_WIN} ${ARCHIVE_LIN} ${ARCHIVE_MAC} ${TARGET_PATH} result_path  ${FOLDER})
19     endif()
20
21     set (${VAR} ${result_path} PARENT_SCOPE)
22   else()
23     set (${VAR} $ENV{${ENVIRONMENT}} PARENT_SCOPE)
24   endif()
25
26 endfunction(resolve_archive_dependency)
27
28 function(resolve_pull_request GITHUB_PULL_REQUEST TARGET_PATH)
29     get_filename_component(FILE_NAME ${GITHUB_PULL_REQUEST} NAME)
30     set (PATCH_URL "")
31     DownloadAndApply("${PATCH_URL}/${GITHUB_PULL_REQUEST}" "${IE_MAIN_SOURCE_DIR}/${TARGET_PATH}/${FILE_NAME}")
32 endfunction(resolve_pull_request)
33
34 function(extract_version_from_filename filename regex version)
35     string(REGEX MATCH ${regex} match ${filename})
36
37     if (CMAKE_MATCH_1)
38         set(${version} ${CMAKE_MATCH_1} PARENT_SCOPE)
39     else()
40         set(${version} ${filename} PARENT_SCOPE)
41     endif()
42 endfunction(extract_version_from_filename)
43
44 function(read_version archive regex version_var)
45     extract_version_from_filename(${archive} ${regex} version)
46     set(${version_var} "${version}" CACHE INTERNAL "" FORCE)
47     debug_message(STATUS "${version_var} = " ${version})
48 endfunction(read_version)
49
50 function (RESOLVE_DEPENDENCY NAME_OF_CMAKE_VAR)
51
52   list(REMOVE_AT ARGV 0)
53   set(SUPPORTED_ARGS FOLDER ARCHIVE ARCHIVE_UNIFIED ARCHIVE_WIN ARCHIVE_LIN ARCHIVE_MAC TARGET_PATH ENVIRONMENT GITHUB_PULL_REQUEST VERSION_REGEX)
54
55
56   #unnecessary vars
57   foreach(arg ${ARGV})
58     #message("one_arg=" ${one_arg})
59     #message("arg=" ${arg})
60     #parse no arg vars
61     if (";${SUPPORTED_ARGS};" MATCHES ";${arg};")
62       if(DEFINED one_arg)
63         set(${one_arg} TRUE)
64       endif()
65       set (one_arg ${arg})
66     elseif(DEFINED one_arg)
67       set(${one_arg} ${arg})
68       unset(one_arg)
69     else()
70       message(FATAL_ERROR "invalid argument passed to resolve dependency: " ${arg})
71     endif()
72   endforeach(arg)
73
74   #if last token was bool
75   if(DEFINED one_arg)
76     set(${one_arg} TRUE)
77   endif()
78
79
80   if (NOT DEFINED ARCHIVE)
81     SET(ARCHIVE "OFF")
82   endif()
83
84   if (NOT DEFINED ARCHIVE_UNIFIED)
85     SET(ARCHIVE_UNIFIED "OFF")
86   endif()
87
88   if (NOT DEFINED ARCHIVE_WIN)
89     SET(ARCHIVE_WIN "OFF")
90   endif()
91
92   if (NOT DEFINED ARCHIVE_LIN)
93     SET(ARCHIVE_LIN "OFF")
94   endif()
95
96   if (NOT DEFINED ARCHIVE_MAC)
97     SET(ARCHIVE_MAC "OFF")
98   endif()
99
100   if (NOT DEFINED ENVIRONMENT)
101     set (ENVIRONMENT "OFF")
102   endif()
103
104   if (NOT DEFINED FOLDER)
105     set (FOLDER FALSE)
106   endif()
107
108
109
110   #for each dependency type have to do separate things
111   if (ARCHIVE_WIN OR ARCHIVE_LIN OR ARCHIVE_MAC OR ARCHIVE OR ARCHIVE_UNIFIED)
112     if (NOT DEFINED TARGET_PATH)
113       message(FATAL_ERROR "TARGET_PATH should be defined for every dependency")
114     endif()
115
116     resolve_archive_dependency(RESULT ${NAME_OF_CMAKE_VAR} ${ARCHIVE} ${ARCHIVE_UNIFIED} ${ARCHIVE_WIN} ${ARCHIVE_LIN} ${ARCHIVE_MAC} ${TARGET_PATH} ${FOLDER} ${ENVIRONMENT})
117     set(${NAME_OF_CMAKE_VAR} ${RESULT} PARENT_SCOPE)
118     if (VERSION_REGEX)
119         GetNameAndUrlToDownload(archive RELATIVE_URL ${ARCHIVE_UNIFIED} ${ARCHIVE_WIN} ${ARCHIVE_LIN} ${ARCHIVE_MAC})
120         if (archive)
121             read_version(${archive} ${VERSION_REGEX} "${NAME_OF_CMAKE_VAR}_VERSION")
122         endif()
123     endif()
124
125   elseif (DEFINED GITHUB_PULL_REQUEST)
126     resolve_pull_request(${GITHUB_PULL_REQUEST} ${TARGET_PATH})
127   else()
128     message(FATAL_ERROR "Dependency of unknowntype, SHOULD set one of ARCHIVE_WIN, ARCHIVE, ARCHIVE_LIN, ARCHIVE_MAC, GITHUB_PULL_REQUEST")
129   endif()
130
131 endfunction(RESOLVE_DEPENDENCY)