| 1 | #!/bin/sh |
| 2 | show_help () { |
| 3 | echo "usage: llvm-config <OPTION>... [<COMPONENT>...] |
| 4 | |
| 5 | Get various configuration information needed to compile programs which use |
| 6 | LLVM. Typically called from 'configure' scripts. Examples: |
| 7 | llvm-config --cxxflags |
| 8 | llvm-config --ldflags |
| 9 | llvm-config --libs engine bcreader scalaropts |
| 10 | |
| 11 | Options: |
| 12 | --version Print LLVM version. |
| 13 | --prefix Print the installation prefix. |
| 14 | --src-root Print the source root LLVM was built from. |
| 15 | --obj-root Print the object root used to build LLVM. |
| 16 | --bindir Directory containing LLVM executables. |
| 17 | --includedir Directory containing LLVM headers. |
| 18 | --libdir Directory containing LLVM libraries. |
| 19 | --cppflags C preprocessor flags for files that include LLVM headers. |
| 20 | --cflags C compiler flags for files that include LLVM headers. |
| 21 | --cxxflags C++ compiler flags for files that include LLVM headers. |
| 22 | --ldflags Print Linker flags. |
| 23 | --system-libs System Libraries needed to link against LLVM components. |
| 24 | --libs Libraries needed to link against LLVM components. |
| 25 | --libnames Bare library names for in-tree builds. |
| 26 | --libfiles Fully qualified library filenames for makefile depends. |
| 27 | --components List of all possible components. |
| 28 | --targets-built List of all targets currently built. |
| 29 | --host-target Target triple used to configure LLVM. |
| 30 | --build-mode Print build mode of LLVM tree (e.g. Debug or Release). |
| 31 | --assertion-mode Print assertion mode of LLVM tree (ON or OFF). |
| 32 | --build-system Print the build system used to build LLVM (always cmake). |
| 33 | --has-rtti Print whether or not LLVM was built with rtti (YES or NO). |
| 34 | --has-global-isel Print whether or not LLVM was built with global-isel support (YES or NO). |
| 35 | --shared-mode Print how the provided components can be collectively linked (\`shared\` or \`static\`). |
| 36 | --link-shared Link the components as shared libraries. |
| 37 | --link-static Link the component libraries statically. |
| 38 | Typical components: |
| 39 | all All LLVM libraries (default). |
| 40 | engine Either a native JIT or a bitcode interpreter." |
| 41 | } |
| 42 | |
| 43 | arch=@TERMUX_ARCH@ |
| 44 | version=@TERMUX_PKG_VERSION@ |
| 45 | prefix=@TERMUX_PREFIX@ |
| 46 | has_rtti=NO |
| 47 | CPPFLAGS="-I${prefix}/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS" |
| 48 | CFLAGS="${CPPFLAGS} ${CFLAGS} -fPIC -Werror=date-time -Wall -W -Wno-unused-parameter -Wwrite-strings -Wmissing-field-initializers -pedantic \ |
| 49 | -Wno-long-long -Wcovered-switch-default -Wdelete-non-virtual-dtor -Wstring-conversion \ |
| 50 | -ffunction-sections -fdata-sections -Os -DNDEBUG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS \ |
| 51 | -D__STDC_LIMIT_MACROS" |
| 52 | CXXFLAGS="${CFLAGS} -fvisibility-inlines-hidden -Wcast-qual -Wnon-virtual-dtor -std=c++11 -fno-exceptions" |
| 53 | if [ "$has_rtti" != "YES" ]; then CXXFLAGS="$CXXFLAGS -fno-rtti"; fi |
| 54 | LDFLAGS="-L${prefix}/lib" |
| 55 | LIBFILE="${prefix}/lib/libLLVM-$version.so" |
| 56 | |
| 57 | components="aarch64 aarch64asmparser aarch64asmprinter aarch64codegen aarch64desc \ |
| 58 | aarch64disassembler aarch64info aarch64utils all all-targets amdgpu amdgpuasmparser amdgpuasmprinter \ |
| 59 | amdgpucodegen amdgpudesc amdgpudisassembler amdgpuinfo amdgpuutils analysis arm armasmparser armasmprinter \ |
| 60 | armcodegen armdesc armdisassembler arminfo armutils asmparser asmprinter binaryformat bitreader bitwriter \ |
| 61 | bpf bpfasmparser bpfasmprinter bpfcodegen bpfdesc bpfdisassembler bpfinfo codegen core coroutines coverage \ |
| 62 | debuginfocodeview debuginfodwarf debuginfomsf debuginfopdb demangle dlltooldriver engine executionengine \ |
| 63 | fuzzmutate globalisel hexagon hexagonasmparser hexagoncodegen hexagondesc hexagondisassembler hexagoninfo \ |
| 64 | instcombine instrumentation interpreter ipo irreader lanai lanaiasmparser lanaiasmprinter lanaicodegen \ |
| 65 | lanaidesc lanaidisassembler lanaiinfo libdriver lineeditor linker lto mc mcdisassembler mcjit mcparser \ |
| 66 | mips mipsasmparser mipsasmprinter mipscodegen mipsdesc mipsdisassembler mipsinfo mirparser msp430 \ |
| 67 | msp430asmprinter msp430codegen msp430desc msp430info native nativecodegen nvptx nvptxasmprinter \ |
| 68 | nvptxcodegen nvptxdesc nvptxinfo objcarcopts object objectyaml option orcjit passes powerpc powerpcasmparser \ |
| 69 | powerpcasmprinter powerpccodegen powerpcdesc powerpcdisassembler powerpcinfo profiledata runtimedyld scalaropts \ |
| 70 | selectiondag sparc sparcasmparser sparcasmprinter sparccodegen sparcdesc sparcdisassembler sparcinfo support symbolize \ |
| 71 | systemz systemzasmparser systemzasmprinter systemzcodegen systemzdesc systemzdisassembler systemzinfo tablegen target \ |
| 72 | transformutils vectorize webassembly webassemblyasmprinter webassemblycodegen webassemblydesc webassemblydisassembler \ |
| 73 | webassemblyinfo windowsmanifest x86 x86asmparser x86asmprinter x86codegen x86desc x86disassembler x86info x86utils xcore \ |
| 74 | xcoreasmprinter xcorecodegen xcoredesc xcoredisassembler xcoreinfo" |
| 75 | static_libs="-lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMMIRParser -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoDWARF \ |
| 76 | -lLLVMCoverage -lLLVMTableGen -lLLVMDlltoolDriver -lLLVMOrcJIT -lLLVMWebAssemblyDisassembler -lLLVMWebAssemblyCodeGen \ |
| 77 | -lLLVMWebAssemblyDesc -lLLVMWebAssemblyInfo -lLLVMWebAssemblyAsmPrinter -lLLVMXCoreDisassembler -lLLVMXCoreCodeGen \ |
| 78 | -lLLVMXCoreDesc -lLLVMXCoreInfo -lLLVMXCoreAsmPrinter -lLLVMSystemZDisassembler -lLLVMSystemZCodeGen -lLLVMSystemZAsmParser \ |
| 79 | -lLLVMSystemZDesc -lLLVMSystemZInfo -lLLVMSystemZAsmPrinter -lLLVMSparcDisassembler -lLLVMSparcCodeGen -lLLVMSparcAsmParser \ |
| 80 | -lLLVMSparcDesc -lLLVMSparcInfo -lLLVMSparcAsmPrinter -lLLVMPowerPCDisassembler -lLLVMPowerPCCodeGen -lLLVMPowerPCAsmParser \ |
| 81 | -lLLVMPowerPCDesc -lLLVMPowerPCInfo -lLLVMPowerPCAsmPrinter -lLLVMNVPTXCodeGen -lLLVMNVPTXDesc -lLLVMNVPTXInfo -lLLVMNVPTXAsmPrinter \ |
| 82 | -lLLVMMSP430CodeGen -lLLVMMSP430Desc -lLLVMMSP430Info -lLLVMMSP430AsmPrinter -lLLVMMipsDisassembler -lLLVMMipsCodeGen -lLLVMMipsAsmParser \ |
| 83 | -lLLVMMipsDesc -lLLVMMipsInfo -lLLVMMipsAsmPrinter -lLLVMLanaiDisassembler -lLLVMLanaiCodeGen -lLLVMLanaiAsmParser -lLLVMLanaiDesc \ |
| 84 | -lLLVMLanaiAsmPrinter -lLLVMLanaiInfo -lLLVMHexagonDisassembler -lLLVMHexagonCodeGen -lLLVMHexagonAsmParser -lLLVMHexagonDesc -lLLVMHexagonInfo \ |
| 85 | -lLLVMBPFDisassembler -lLLVMBPFCodeGen -lLLVMBPFAsmParser -lLLVMBPFDesc -lLLVMBPFInfo -lLLVMBPFAsmPrinter -lLLVMARMDisassembler \ |
| 86 | -lLLVMARMCodeGen -lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMInfo -lLLVMARMAsmPrinter -lLLVMARMUtils -lLLVMAMDGPUDisassembler \ |
| 87 | -lLLVMAMDGPUCodeGen -lLLVMAMDGPUAsmParser -lLLVMAMDGPUDesc -lLLVMAMDGPUInfo -lLLVMAMDGPUAsmPrinter -lLLVMAMDGPUUtils \ |
| 88 | -lLLVMAArch64Disassembler -lLLVMAArch64CodeGen -lLLVMAArch64AsmParser -lLLVMAArch64Desc -lLLVMAArch64Info -lLLVMAArch64AsmPrinter \ |
| 89 | -lLLVMAArch64Utils -lLLVMObjectYAML -lLLVMLibDriver -lLLVMOption -lLLVMWindowsManifest -lLLVMFuzzMutate -lLLVMX86Disassembler \ |
| 90 | -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF \ |
| 91 | -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCJIT -lLLVMLineEditor -lLLVMInterpreter \ |
| 92 | -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize \ |
| 93 | -lLLVMScalarOpts -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis \ |
| 94 | -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle" |
| 95 | shared_libs="-lLLVM-$version" |
| 96 | libs=$shared_libs |
| 97 | handle_args () { |
| 98 | case "${1##--}" in |
| 99 | link-shared) libs=$shared_libs ;; |
| 100 | link-static) libs=$static_libs ;; |
| 101 | version) echo "$version\n";; |
| 102 | prefix) echo "$prefix";; |
| 103 | src-root) echo "@TERMUX_PKG_SRCDIR@";; |
| 104 | obj-root) echo "$prefix";; |
| 105 | bindir) echo "$prefix/bin";; |
| 106 | includedir) echo "$prefix/include";; |
| 107 | libdir) echo "$prefix/lib";; |
| 108 | cppflags) echo "$CPPFLAGS";; |
| 109 | cflags) echo "$CFLAGS";; |
| 110 | cxxflags) echo "$CXXFLAGS";; |
| 111 | ldflags) echo "$LDFLAGS";; |
| 112 | system-libs) echo "-lc -ldl -lcurses -lz -lm";; |
| 113 | libs) echo "$libs";; |
| 114 | libnames) echo "libLLVM-$version.so";; |
| 115 | libfiles) echo "$LIBFILE";; |
| 116 | components) echo "$components";; |
| 117 | targets-built) echo "AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430 NVPTX PowerPC Sparc SystemZ X86 XCore WebAssembly";; |
| 118 | host-target) echo "@LLVM_DEFAULT_TARGET_TRIPLE@";; |
| 119 | build-mode) echo "Release";; |
| 120 | assertion-mode) echo "OFF";; |
| 121 | build-system) echo "cmake";; |
| 122 | has-rtti) echo "$has_rtti";; |
| 123 | has-global-isel) echo "OFF";; |
| 124 | shared-mode) echo "shared";; |
| 125 | cmakedir) echo "$prefix/lib/cmake/llvm";; |
| 126 | *) show_help >&2;; |
| 127 | esac |
| 128 | } |
| 129 | |
| 130 | for arg in $@; do handle_args $arg; done |
| 131 | |