1*4882a593SmuzhiyunFrom 071a9d71bea91bbefcf15e061fc87e53568f3188 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Jose Quaresma <quaresma.jose@gmail.com>
3*4882a593SmuzhiyunDate: Sat, 13 Feb 2021 00:45:56 +0000
4*4882a593SmuzhiyunSubject: [PATCH 1/3] cmake: disable building external dependencies
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun- add cmake option to disable the build of the third_party dependencies
7*4882a593Smuzhiyun- change the update_build_version.py to use pkg-config when third_party dependencies not found
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunUpstream-Status: Inappropriate [OE-core specific]
10*4882a593Smuzhiyun
11*4882a593SmuzhiyunSigned-off-by: Jose Quaresma <quaresma.jose@gmail.com>
12*4882a593Smuzhiyun---
13*4882a593Smuzhiyun CMakeLists.txt                | 13 ++++++++++---
14*4882a593Smuzhiyun utils/update_build_version.py | 22 +++++++++++++++-------
15*4882a593Smuzhiyun 2 files changed, 25 insertions(+), 10 deletions(-)
16*4882a593Smuzhiyun
17*4882a593Smuzhiyundiff --git a/CMakeLists.txt b/CMakeLists.txt
18*4882a593Smuzhiyunindex 5c74cd8..b358f6b 100644
19*4882a593Smuzhiyun--- a/CMakeLists.txt
20*4882a593Smuzhiyun+++ b/CMakeLists.txt
21*4882a593Smuzhiyun@@ -41,6 +41,7 @@ else()
22*4882a593Smuzhiyun endif()
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun option(SHADERC_ENABLE_WERROR_COMPILE "Enable passing -Werror to compiler, if available" ON)
25*4882a593Smuzhiyun+option(BUILD_EXTERNAL "Build external dependencies in /third_party" ON)
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun set (CMAKE_CXX_STANDARD 11)
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun@@ -101,8 +102,14 @@ endif(MSVC)
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun # Configure subdirectories.
33*4882a593Smuzhiyun-# We depend on these for later projects, so they should come first.
34*4882a593Smuzhiyun-add_subdirectory(third_party)
35*4882a593Smuzhiyun+if(BUILD_EXTERNAL)
36*4882a593Smuzhiyun+    # We depend on these for later projects, so they should come first.
37*4882a593Smuzhiyun+    add_subdirectory(third_party)
38*4882a593Smuzhiyun+else()
39*4882a593Smuzhiyun+    find_package(PkgConfig REQUIRED)
40*4882a593Smuzhiyun+    pkg_check_modules (PKG_CHECK REQUIRED SPIRV-Tools)
41*4882a593Smuzhiyun+    pkg_check_modules (PKG_CHECK REQUIRED glslang)
42*4882a593Smuzhiyun+endif()
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun add_subdirectory(libshaderc_util)
45*4882a593Smuzhiyun add_subdirectory(libshaderc)
46*4882a593Smuzhiyun@@ -112,7 +119,7 @@ add_subdirectory(examples)
47*4882a593Smuzhiyun add_custom_target(build-version
48*4882a593Smuzhiyun   ${PYTHON_EXECUTABLE}
49*4882a593Smuzhiyun   ${CMAKE_CURRENT_SOURCE_DIR}/utils/update_build_version.py
50*4882a593Smuzhiyun-  ${shaderc_SOURCE_DIR} ${spirv-tools_SOURCE_DIR} ${glslang_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/build-version.inc
51*4882a593Smuzhiyun+  ${CMAKE_CURRENT_BINARY_DIR}/build-version.inc ${shaderc_SOURCE_DIR} ${spirv-tools_SOURCE_DIR} ${glslang_SOURCE_DIR}
52*4882a593Smuzhiyun   COMMENT "Update build-version.inc in the Shaderc build directory (if necessary).")
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun function(define_pkg_config_file NAME LIBS)
55*4882a593Smuzhiyundiff --git a/utils/update_build_version.py b/utils/update_build_version.py
56*4882a593Smuzhiyunindex 5785390..f72b762 100755
57*4882a593Smuzhiyun--- a/utils/update_build_version.py
58*4882a593Smuzhiyun+++ b/utils/update_build_version.py
59*4882a593Smuzhiyun@@ -30,6 +30,7 @@ import re
60*4882a593Smuzhiyun import subprocess
61*4882a593Smuzhiyun import sys
62*4882a593Smuzhiyun import time
63*4882a593Smuzhiyun+import itertools
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun def mkdir_p(directory):
66*4882a593Smuzhiyun     """Make the directory, and all its ancestors as required.  Any of the
67*4882a593Smuzhiyun@@ -121,25 +122,32 @@ def get_version_string(project, directory):
68*4882a593Smuzhiyun     directory, which consists of software version string and git description
69*4882a593Smuzhiyun     string."""
70*4882a593Smuzhiyun     detailed_version_string_lst = [project]
71*4882a593Smuzhiyun-    if project != 'glslang':
72*4882a593Smuzhiyun-        detailed_version_string_lst.append(deduce_software_version(directory))
73*4882a593Smuzhiyun-    detailed_version_string_lst.append(describe(directory).replace('"', '\\"'))
74*4882a593Smuzhiyun+    if isinstance(directory, str) and os.path.isdir(directory):
75*4882a593Smuzhiyun+        if project != 'glslang':
76*4882a593Smuzhiyun+            detailed_version_string_lst.append(deduce_software_version(directory))
77*4882a593Smuzhiyun+        detailed_version_string_lst.append(describe(directory).replace('"', '\\"'))
78*4882a593Smuzhiyun+    else:
79*4882a593Smuzhiyun+        if project == 'spirv-tools':
80*4882a593Smuzhiyun+            project = 'SPIRV-Tools'
81*4882a593Smuzhiyun+        pkgconfig = ['pkg-config', '--modversion', project]
82*4882a593Smuzhiyun+        version = subprocess.run(pkgconfig, capture_output=True, text=True).stdout.rstrip()
83*4882a593Smuzhiyun+        detailed_version_string_lst.append(version)
84*4882a593Smuzhiyun     return ' '.join(detailed_version_string_lst)
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun def main():
88*4882a593Smuzhiyun-    if len(sys.argv) != 5:
89*4882a593Smuzhiyun-        print(('usage: {} <shaderc-dir> <spirv-tools-dir> <glslang-dir> <output-file>'.format(
90*4882a593Smuzhiyun+    if len(sys.argv) < 3:
91*4882a593Smuzhiyun+        print(('usage: {} <output-file> <shaderc-dir> [spirv-tools-dir] [glslang-dir]'.format(
92*4882a593Smuzhiyun             sys.argv[0])))
93*4882a593Smuzhiyun         sys.exit(1)
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun     projects = ['shaderc', 'spirv-tools', 'glslang']
96*4882a593Smuzhiyun     new_content = ''.join([
97*4882a593Smuzhiyun         '"{}\\n"\n'.format(get_version_string(p, d))
98*4882a593Smuzhiyun-        for (p, d) in zip(projects, sys.argv[1:])
99*4882a593Smuzhiyun+        for (p, d) in itertools.zip_longest(projects, sys.argv[2:])
100*4882a593Smuzhiyun     ])
101*4882a593Smuzhiyun
102*4882a593Smuzhiyun-    output_file = sys.argv[4]
103*4882a593Smuzhiyun+    output_file = sys.argv[1]
104*4882a593Smuzhiyun     mkdir_p(os.path.dirname(output_file))
105*4882a593Smuzhiyun
106*4882a593Smuzhiyun     if os.path.isfile(output_file):
107*4882a593Smuzhiyun--
108*4882a593Smuzhiyun2.30.1
109*4882a593Smuzhiyun
110