termux-packages/packages/ldc/llvm-config.in
Martin Kinkelin 6d50ac0afd LDC: Upgrade from v1.13 to v1.17 (#4246)
* LDC: Upgrade from v1.13 to v1.17

* LDC: Fix missing symbols in druntime's core.sys.posix.unistd

* LDC: Fix repeated llvm-config help output

* LDC: Revise build script

1) Use an 'installed' (ninja install) LLVM for LDC.
2) Cross-compile LLVM before invoking CMake for LDC, so that the LLVM
   dir is actually populated (previously: just fake bin/llvm-config).
3) Include dlang tools ddemangle and dustmite in the final package too,
   just like official LDC packages. Cmdline flags have been synced with
   upstream.

* Add hello-world smoke test

* LDC: Upgrade LLVM from v7.0.1 to v8.0.1
2019-09-03 20:06:03 +03:00

122 lines
7.0 KiB
Bash

#!/bin/bash
show_help () {
echo "usage: llvm-config <OPTION>... [<COMPONENT>...]
Get various configuration information needed to compile programs which use
LLVM. Typically called from 'configure' scripts. Examples:
llvm-config --cxxflags
llvm-config --ldflags
llvm-config --libs engine bcreader scalaropts
Options:
--version Print LLVM version.
--prefix Print the installation prefix.
--src-root Print the source root LLVM was built from.
--obj-root Print the object root used to build LLVM.
--bindir Directory containing LLVM executables.
--includedir Directory containing LLVM headers.
--libdir Directory containing LLVM libraries.
--cppflags C preprocessor flags for files that include LLVM headers.
--cflags C compiler flags for files that include LLVM headers.
--cxxflags C++ compiler flags for files that include LLVM headers.
--ldflags Print Linker flags.
--system-libs System Libraries needed to link against LLVM components.
--libs Libraries needed to link against LLVM components.
--libnames Bare library names for in-tree builds.
--libfiles Fully qualified library filenames for makefile depends.
--components List of all possible components.
--targets-built List of all targets currently built.
--host-target Target triple used to configure LLVM.
--build-mode Print build mode of LLVM tree (e.g. Debug or Release).
--assertion-mode Print assertion mode of LLVM tree (ON or OFF).
--build-system Print the build system used to build LLVM (always cmake).
--has-rtti Print whether or not LLVM was built with rtti (YES or NO).
--has-global-isel Print whether or not LLVM was built with global-isel support (YES or NO).
--shared-mode Print how the provided components can be collectively linked (\`shared\` or \`static\`).
--link-shared Link the components as shared libraries.
--link-static Link the component libraries statically.
Typical components:
all All LLVM libraries (default).
engine Either a native JIT or a bitcode interpreter."
}
version=@LLVM_VERSION@
prefix=@LLVM_INSTALL_DIR@
has_rtti=NO
CPPFLAGS="-I@TERMUX_PKG_SRCDIR@/llvm/include -I${prefix}/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS"
CFLAGS="${CPPFLAGS} ${CFLAGS} -fPIC -Werror=date-time -Wall -W -Wno-unused-parameter -Wwrite-strings -Wmissing-field-initializers -pedantic \
-Wno-long-long -Wcovered-switch-default -Wdelete-non-virtual-dtor -Wstring-conversion \
-ffunction-sections -fdata-sections -Os -DNDEBUG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
CXXFLAGS="${CFLAGS} -fvisibility-inlines-hidden -Wcast-qual -Wnon-virtual-dtor -std=c++11 -fno-exceptions"
if [ "$has_rtti" != "YES" ]; then CXXFLAGS="$CXXFLAGS -fno-rtti"; fi
LDFLAGS="-L${prefix}/lib"
LIBFILE="${prefix}/lib/libLLVM-$version.so"
components="aarch64 aarch64asmparser aarch64asmprinter aarch64codegen aarch64desc aarch64disassembler \
aarch64info aarch64utils aggressiveinstcombine all all-targets analysis arm armasmparser armasmprinter \
armcodegen armdesc armdisassembler arminfo armutils asmparser asmprinter binaryformat bitreader bitwriter \
codegen core coroutines coverage debuginfocodeview debuginfodwarf debuginfomsf debuginfopdb demangle \
dlltooldriver engine executionengine fuzzmutate globalisel gtest gtest_main instcombine instrumentation \
interpreter ipo irreader libdriver lineeditor linker lto mc mca mcdisassembler mcjit mcparser mirparser \
native nativecodegen objcarcopts object objectyaml option optremarks orcjit passes profiledata runtimedyld \
scalaropts selectiondag support symbolize tablegen target testingsupport textapi transformutils vectorize \
webassembly webassemblyasmparser webassemblyasmprinter webassemblycodegen webassemblydesc \
webassemblydisassembler webassemblyinfo windowsmanifest x86 x86asmparser x86asmprinter x86codegen x86desc \
x86disassembler x86info x86utils xray"
static_libs="-lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoDWARF -lLLVMCoverage -lLLVMDlltoolDriver \
-lLLVMLineEditor -lLLVMOrcJIT -lLLVMMCA -lLLVMWindowsManifest -lLLVMTextAPI \
-lLLVMFuzzMutate -lLLVMMCJIT -lLLVMCoroutines -lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMipo \
-lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMMIRParser -lLLVMAsmParser \
-lLLVMTableGen -lLLVMXRay -lLLVMWebAssemblyDisassembler -lLLVMWebAssemblyCodeGen -lLLVMWebAssemblyDesc \
-lLLVMWebAssemblyAsmPrinter -lLLVMWebAssemblyAsmParser -lLLVMWebAssemblyInfo -lLLVMX86Disassembler \
-lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils \
-lLLVMARMDisassembler -lLLVMARMCodeGen -lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMInfo -lLLVMARMAsmPrinter \
-lLLVMARMUtils -lLLVMAArch64Disassembler -lLLVMMCDisassembler -lLLVMAArch64CodeGen -lLLVMGlobalISel \
-lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMAArch64AsmParser -lLLVMAArch64Desc -lLLVMAArch64Info \
-lLLVMAArch64AsmPrinter -lLLVMAArch64Utils -lLLVMObjectYAML -lLLVMLibDriver -lLLVMOption -lLLVMOptRemarks \
-lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts \
-lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis \
-lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF \
-lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle"
shared_libs="-lLLVM-$version"
libs=$shared_libs
handle_args () {
if [ "${1:0:2}" != "--" ]; then return 0; fi
case "${1:2}" in
link-shared) libs=$shared_libs ;;
link-static) libs=$static_libs ;;
version) echo "$version";;
prefix) echo "$prefix";;
src-root) echo "@TERMUX_PKG_SRCDIR@";;
obj-root) echo "$prefix";;
bindir) echo "$prefix/bin";;
includedir) echo "$prefix/include";;
libdir) echo "$prefix/lib";;
cppflags) echo "$CPPFLAGS";;
cflags) echo "$CFLAGS";;
cxxflags) echo "$CXXFLAGS";;
ldflags) echo "$LDFLAGS";;
system-libs) echo "-lc -ldl -lz -lm";;
libs) echo "$static_libs";;
libnames) echo "libLLVM-$version.so";;
libfiles) echo "$LIBFILE";;
components) echo "$components";;
targets-built) echo "@LLVM_TARGETS@";;
host-target) echo "@LLVM_DEFAULT_TARGET_TRIPLE@";;
build-mode) echo "Release";;
assertion-mode) echo "OFF";;
build-system) echo "cmake";;
has-rtti) echo "$has_rtti";;
has-global-isel) echo "ON";;
shared-mode) echo "static";;
cmakedir) echo "$prefix/lib/cmake/llvm";;
*) echo "Unsupported llvm-config switch: ${1}" >&2; exit 1;;
esac
}
if [ "$#" -eq 0 ]; then
show_help >&2
else
for arg in $@; do handle_args $arg; done
fi