#!/usr/bin/env python3 # The values here are copied from the output of llvm-config running under Redox. # This is a hack, and should be replaced if possible. # This list can be generated with this ion script: # for component in @(llvm-config --components) # echo -e \"$component\": \"$(llvm-config --libs $component)\", # end components = { 'aggressiveinstcombine': '-lLLVM-21', 'all': '-lLLVM-21', 'all-targets': '-lLLVM-21', 'analysis': '-lLLVM-21', 'asmparser': '-lLLVM-21', 'asmprinter': '-lLLVM-21', 'binaryformat': '-lLLVM-21', 'bitreader': '-lLLVM-21', 'bitstreamreader': '-lLLVM-21', 'bitwriter': '-lLLVM-21', 'cfguard': '-lLLVM-21', 'cgdata': '-lLLVM-21', 'codegen': '-lLLVM-21', 'codegentypes': '-lLLVM-21', 'core': '-lLLVM-21', 'coroutines': '-lLLVM-21', 'coverage': '-lLLVM-21', 'debuginfobtf': '-lLLVM-21', 'debuginfocodeview': '-lLLVM-21', 'debuginfodwarf': '-lLLVM-21', 'debuginfodwarflowlevel': '-lLLVM-21', 'debuginfogsym': '-lLLVM-21', 'debuginfologicalview': '-lLLVM-21', 'debuginfomsf': '-lLLVM-21', 'debuginfopdb': '-lLLVM-21', 'demangle': '-lLLVM-21', 'dlltooldriver': '-lLLVM-21', 'dwarfcfichecker': '-lLLVM-21', 'dwarflinker': '-lLLVM-21', 'dwarflinkerclassic': '-lLLVM-21', 'dwarflinkerparallel': '-lLLVM-21', 'dwp': '-lLLVM-21', 'engine': '-lLLVM-21', 'executionengine': '-lLLVM-21', 'extensions': '-lLLVM-21', 'filecheck': '-lLLVM-21', 'frontendatomic': '-lLLVM-21', 'frontenddirective': '-lLLVM-21', 'frontenddriver': '-lLLVM-21', 'frontendhlsl': '-lLLVM-21', 'frontendoffloading': '-lLLVM-21', 'frontendopenacc': '-lLLVM-21', 'frontendopenmp': '-lLLVM-21', 'fuzzercli': '-lLLVM-21', 'fuzzmutate': '-lLLVM-21', 'globalisel': '-lLLVM-21', 'hipstdpar': '-lLLVM-21', 'instcombine': '-lLLVM-21', 'instrumentation': '-lLLVM-21', 'interfacestub': '-lLLVM-21', 'interpreter': '-lLLVM-21', 'ipo': '-lLLVM-21', 'irprinter': '-lLLVM-21', 'irreader': '-lLLVM-21', 'jitlink': '-lLLVM-21', 'libdriver': '-lLLVM-21', 'lineeditor': '-lLLVM-21', 'linker': '-lLLVM-21', 'lto': '-lLLVM-21', 'mc': '-lLLVM-21', 'mca': '-lLLVM-21', 'mcdisassembler': '-lLLVM-21', 'mcjit': '-lLLVM-21', 'mcparser': '-lLLVM-21', 'mirparser': '-lLLVM-21', 'native': '-lLLVM-21', 'nativecodegen': '-lLLVM-21', 'objcarcopts': '-lLLVM-21', 'objcopy': '-lLLVM-21', 'object': '-lLLVM-21', 'objectyaml': '-lLLVM-21', 'option': '-lLLVM-21', 'orcdebugging': '-lLLVM-21', 'orcjit': '-lLLVM-21', 'orcshared': '-lLLVM-21', 'orctargetprocess': '-lLLVM-21', 'passes': '-lLLVM-21', 'profiledata': '-lLLVM-21', 'remarks': '-lLLVM-21', 'runtimedyld': '-lLLVM-21', 'sandboxir': '-lLLVM-21', 'scalaropts': '-lLLVM-21', 'selectiondag': '-lLLVM-21', 'support': '-lLLVM-21', 'symbolize': '-lLLVM-21', 'tablegen': '-lLLVM-21', 'target': '-lLLVM-21', 'targetparser': '-lLLVM-21', 'telemetry': '-lLLVM-21', 'textapi': '-lLLVM-21', 'textapibinaryreader': '-lLLVM-21', 'transformutils': '-lLLVM-21', 'vectorize': '-lLLVM-21', 'windowsdriver': '-lLLVM-21', 'windowsmanifest': '-lLLVM-21', 'x86': '-lLLVM-21', 'x86asmparser': '-lLLVM-21', 'x86codegen': '-lLLVM-21', 'x86desc': '-lLLVM-21', 'x86disassembler': '-lLLVM-21', 'x86info': '-lLLVM-21', 'x86targetmca': '-lLLVM-21', 'xray': '-lLLVM-21', } import os import sys def fail(message): print("redox llvm-config failure", file=sys.stderr) print(message, file=sys.stderr) sys.exit(1) prefix = os.environ["COOKBOOK_SYSROOT"] args = [] link_static = False for arg in sys.argv[1:]: if arg == "--link-static": link_static = True elif arg == "--link-shared": fail("shared linking disabled") else: args.append(arg) if args == []: fail("no arguments") elif args == ["--version"]: print("21.1.2") elif args == ["--bindir"]: print(prefix + "/bin") elif args == ["--cppflags"]: print("-I" + prefix + "/include -DEXPERIMENTAL_KEY_INSTRUCTIONS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") elif args == ["--cxxflags"]: print("-I" + prefix + "/include -std=c++17 -fno-exceptions -funwind-tables -DEXPERIMENTAL_KEY_INSTRUCTIONS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS") elif args == ["--components"]: print(" ".join(components.keys())) elif args == ["--includedir"]: print(prefix + "/include") elif args == ["--ldflags"]: print("-L" + prefix + "/lib"); elif args == ["--libdir"]: print(prefix + "/lib") elif args == ["--system-libs"]: print("") elif args == ["--targets-built"]: print("X86") elif args[0] == "--libs": libs = [] if len(args) == 1: args.append("all") for component in args[1:]: for lib in components[component].split(" "): libs.append(lib) print(" ".join(libs)) elif args[0] == "--libfiles": libs = [] if len(args) == 1: args.append("all") for component in args[1:]: for lib in components[component].split(" "): file = prefix + "/lib/lib" + lib[2:] + ".a" libs.append(file) print(" ".join(libs)) elif args == ["--has-rtti"]: print("YES") elif args[0] == "--shared-mode": print("shared") else: fail("unknown arguments: " + " ".join(args))