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