Movatterモバイル変換


[0]ホーム

URL:


Google Git
Sign in
chromium /chromium /src /refs/heads/main /. /printing /cups_config_helper.py
blob: 4fa52cc87e07f439fc641ecb705e1169b7648abc [file] [log] [blame] [edit]
#!/usr/bin/env python
# Copyright 2011 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""cups-config wrapper.
cups-config, at least on Ubuntu Lucid and Natty, dumps all
cflags/ldflags/libs when passed the --libs argument. gyp would like
to keep these separate: cflags are only needed when compiling files
that use cups directly, while libs are only needed on the final link
line.
This can be dramatically simplified or maybe removed (depending on GN
requirements) when this is fixed:
https://bugs.launchpad.net/ubuntu/+source/cupsys/+bug/163704
is fixed.
"""
from __future__import print_function
import os
import subprocess
import sys
def usage():
print('usage: %s {--api-version|--cflags|--ldflags|--libs|--libs-for-gn} '
'[sysroot]'% sys.argv[0])
def run_cups_config(cups_config, mode):
"""Run cups-config with all --cflags etc modes, parse out the mode we want,
and return those flags as a list."""
cups= subprocess.Popen([cups_config,'--cflags','--ldflags','--libs'],
stdout=subprocess.PIPE, universal_newlines=True)
flags= cups.communicate()[0].strip()
flags_subset=[]
for flagin flags.split():
flag_mode=None
if flag.startswith('-l'):
flag_mode='--libs'
elif(flag.startswith('-L')or flag.startswith('-Wl,')):
flag_mode='--ldflags'
elif(flag.startswith('-I')or flag.startswith('-D')):
flag_mode='--cflags'
# Be conservative: for flags where we don't know which mode they
# belong in, always include them.
if flag_modeisNoneor flag_mode== mode:
flags_subset.append(flag)
# Note: cross build is confused by the option, and may trigger linker
# warning causing build error.
if'-lgnutls'in flags_subset:
flags_subset.remove('-lgnutls')
return flags_subset
def main():
if len(sys.argv)<2:
usage()
return1
mode= sys.argv[1]
if len(sys.argv)>2and sys.argv[2]:
sysroot= sys.argv[2]
cups_config= os.path.join(sysroot,'usr','bin','cups-config')
ifnot os.path.exists(cups_config):
print('cups-config not found: %s'% cups_config)
return1
else:
cups_config='cups-config'
if mode=='--api-version':
subprocess.call([cups_config,'--api-version'])
return0
# All other modes get the flags.
if modenotin('--cflags','--libs','--libs-for-gn','--ldflags'):
usage()
return1
if mode=='--libs-for-gn':
gn_libs_output=True
mode='--libs'
else:
gn_libs_output=False
flags= run_cups_config(cups_config, mode)
if gn_libs_output:
# Strip "-l" from beginning of libs, quote, and surround in [ ].
print('[')
for libin flags:
if lib[:2]=="-l":
print('"%s", '% lib[2:])
print(']')
else:
print(' '.join(flags))
return0
if __name__=='__main__':
sys.exit(main())

[8]ページ先頭

©2009-2025 Movatter.jp