10825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci# Copyright (C) 2017 The Android Open Source Project 20825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci# 30825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci# Licensed under the Apache License, Version 2.0 (the "License"); 40825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci# you may not use this file except in compliance with the License. 50825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci# You may obtain a copy of the License at 60825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci# 70825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci# http://www.apache.org/licenses/LICENSE-2.0 80825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci# 90825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci# Unless required by applicable law or agreed to in writing, software 100825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci# distributed under the License is distributed on an "AS IS" BASIS, 110825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 120825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci# See the License for the specific language governing permissions and 130825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci# limitations under the License. 140825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci 150825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucciimport os 160825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucciimport subprocess 170825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucciimport sys 180825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci 190825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tuccidef main(): 207278deabe0baf4c1ac08d21ffe400ebe1e820d6aPrimiano Tucci devnull = open(os.devnull, 'w') 217278deabe0baf4c1ac08d21ffe400ebe1e820d6aPrimiano Tucci for clang in ('clang', 'clang-3.8', 'clang-3.5'): 227278deabe0baf4c1ac08d21ffe400ebe1e820d6aPrimiano Tucci if subprocess.call(['which', clang], stdout=devnull, stderr=devnull) != 0: 230825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci continue 247278deabe0baf4c1ac08d21ffe400ebe1e820d6aPrimiano Tucci res = subprocess.check_output([clang, '-print-search-dirs']) 257278deabe0baf4c1ac08d21ffe400ebe1e820d6aPrimiano Tucci for line in res.splitlines(): 267278deabe0baf4c1ac08d21ffe400ebe1e820d6aPrimiano Tucci if not line.startswith('libraries:'): 270825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci continue 287278deabe0baf4c1ac08d21ffe400ebe1e820d6aPrimiano Tucci libs = line.split('=', 1)[1].split(':') 297278deabe0baf4c1ac08d21ffe400ebe1e820d6aPrimiano Tucci for lib in libs: 307278deabe0baf4c1ac08d21ffe400ebe1e820d6aPrimiano Tucci if '/clang/' not in lib or not os.path.isdir(lib + '/lib'): 317278deabe0baf4c1ac08d21ffe400ebe1e820d6aPrimiano Tucci continue 327278deabe0baf4c1ac08d21ffe400ebe1e820d6aPrimiano Tucci print os.path.abspath(lib) 337278deabe0baf4c1ac08d21ffe400ebe1e820d6aPrimiano Tucci print clang 347278deabe0baf4c1ac08d21ffe400ebe1e820d6aPrimiano Tucci print clang.replace('clang', 'clang++') 357278deabe0baf4c1ac08d21ffe400ebe1e820d6aPrimiano Tucci return 0 360825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci print 'Could not find the LLVM lib dir' 370825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci return 1 380825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci 390825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucciif __name__ == '__main__': 400825bc835bd954784adee5a1c563c0b8d1cac664Primiano Tucci sys.exit(main()) 41