mirror of
https://gitlab.redox-os.org/redox-os/redox.git
synced 2026-06-24 05:44:17 +08:00
Cleanup of llvm-config, enable LTO for llvm
This commit is contained in:
parent
b56cc3d68e
commit
7be5394da7
@ -1,11 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
||||
args = sys.argv[1:]
|
||||
prefix = os.path.realpath(os.path.dirname(os.path.abspath(sys.argv[0])) + "/sysroot")
|
||||
|
||||
# The values here are copied from the output of llvm-config running under Redox.
|
||||
# This is a hack, and should be replaced if possible.
|
||||
|
||||
@ -80,9 +74,29 @@ components = {
|
||||
"x86utils": "-lLLVMX86Utils -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle",
|
||||
}
|
||||
|
||||
if args == []:
|
||||
import os
|
||||
import sys
|
||||
|
||||
def fail(message):
|
||||
print("redox llvm-config failure", file=sys.stderr)
|
||||
print(message, file=sys.stderr)
|
||||
sys.exit(1)
|
||||
if args == ["--version"]:
|
||||
|
||||
prefix = os.environ["COOKBOOK_RECIPE"] + "/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("8.0.0svn")
|
||||
elif args == ["--cppflags"]:
|
||||
print("-I" + prefix + "/include -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS")
|
||||
@ -110,5 +124,4 @@ elif args[0] == "--libs":
|
||||
elif args[0] == "--shared-mode":
|
||||
print("static")
|
||||
else:
|
||||
print("\n".join(args), file=sys.stderr)
|
||||
sys.exit(1)
|
||||
fail("unknown arguments: " + " ".join(args))
|
||||
@ -15,16 +15,16 @@ REPO="$ROOT/repo/$TARGET"
|
||||
export PATH="${ROOT}/bin:$PATH"
|
||||
export XARGO_HOME="${ROOT}/xargo"
|
||||
|
||||
export AR="${HOST}-ar"
|
||||
export AR="${HOST}-gcc-ar"
|
||||
export AS="${HOST}-as"
|
||||
export CC="${HOST}-gcc"
|
||||
export CXX="${HOST}-g++"
|
||||
export LD="${HOST}-ld"
|
||||
export NM="${HOST}-nm"
|
||||
export NM="${HOST}-gcc-nm"
|
||||
export OBJCOPY="${HOST}-objcopy"
|
||||
export OBJDUMP="${HOST}-objdump"
|
||||
export PKG_CONFIG="${HOST}-pkg-config"
|
||||
export RANLIB="${HOST}-ranlib"
|
||||
export RANLIB="${HOST}-gcc-ranlib"
|
||||
export READELF="${HOST}-readelf"
|
||||
export STRIP="${HOST}-strip"
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
BUILD_DEPENDS=(liborbital mesa mesa_glu)
|
||||
BUILD_DEPENDS=(liborbital llvm mesa mesa_glu)
|
||||
|
||||
function recipe_version {
|
||||
printf "1.0.0"
|
||||
@ -19,7 +19,7 @@ function recipe_prepare {
|
||||
function recipe_build {
|
||||
sysroot="$(realpath ../sysroot)"
|
||||
set -x
|
||||
"${CXX}" -I "$sysroot/include" -L "$sysroot/lib" gears.c -o gears -lorbital -lOSMesa -lGLU -lglapi -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -lm
|
||||
"${CXX}" -I "$sysroot/include" -L "$sysroot/lib" gears.c -o gears -lorbital $("${PKG_CONFIG}" --libs glu)
|
||||
set +x
|
||||
skip=1
|
||||
}
|
||||
|
||||
@ -22,38 +22,42 @@ function recipe_build {
|
||||
source="$(realpath ../source)"
|
||||
sysroot="$(realpath ../sysroot)"
|
||||
CMAKE_ARGS=(
|
||||
-Wno-dev
|
||||
-DCMAKE_AR="$(which "${AR}")"
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DCMAKE_CROSSCOMPILING=True
|
||||
-DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$native"
|
||||
-DCMAKE_CXX_FLAGS="--std=gnu++11 -Wl,--whole-archive -lpthread -Wl,--no-whole-archive"
|
||||
-DCMAKE_RANLIB="$(which "${RANLIB}")"
|
||||
-DCMAKE_INSTALL_PREFIX="/"
|
||||
-DCMAKE_SYSTEM_NAME=Generic
|
||||
-DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$native"
|
||||
-DLLVM_BUILD_BENCHMARKS=Off
|
||||
-DLLVM_BUILD_EXAMPLES=Off
|
||||
-DLLVM_BUILD_TESTS=Off
|
||||
-DLLVM_BUILD_UTILS=Off
|
||||
-DLLVM_DEFAULT_TARGET_TRIPLE="$HOST"
|
||||
-DLLVM_ENABLE_LTO=On
|
||||
-DLLVM_ENABLE_THREADS=On
|
||||
-DLLVM_INCLUDE_BENCHMARKS=Off
|
||||
-DLLVM_INCLUDE_EXAMPLES=Off
|
||||
-DLLVM_INCLUDE_TESTS=Off
|
||||
-DLLVM_INCLUDE_UTILS=Off
|
||||
-DLLVM_OPTIMIZED_TABLEGEN=On
|
||||
#-DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-8"
|
||||
-DLLVM_TARGET_ARCH="$ARCH"
|
||||
-DLLVM_TARGETS_TO_BUILD=X86
|
||||
-DCMAKE_SYSTEM_NAME=Generic
|
||||
-DLLVM_TOOL_LLVM_COV_BUILD=Off
|
||||
-DLLVM_TOOL_LLVM_LTO_BUILD=Off
|
||||
-DLLVM_TOOL_LLVM_LTO2_BUILD=Off
|
||||
-DLLVM_TOOL_LLVM_PROFDATA_BUILD=Off
|
||||
-DLLVM_TOOL_LLVM_RTDYLD_BUILD=Off
|
||||
-DLLVM_TOOL_LLVM_XRAY_BUILD=Off
|
||||
-DLLVM_TOOL_LLI_BUILD=Off
|
||||
-DLLVM_TOOL_LTO_BUILD=Off
|
||||
-DPYTHON_EXECUTABLE="/usr/bin/python2"
|
||||
#-DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-8"
|
||||
-DUNIX=1
|
||||
-DLLVM_ENABLE_THREADS=On
|
||||
-DLLVM_BUILD_BENCHMARKS=Off
|
||||
-DLLVM_INCLUDE_BENCHMARKS=Off
|
||||
-DLLVM_BUILD_EXAMPLES=Off
|
||||
-DLLVM_INCLUDE_EXAMPLES=Off
|
||||
-DLLVM_BUILD_TESTS=Off
|
||||
-DLLVM_INCLUDE_TESTS=Off
|
||||
-DLLVM_BUILD_UTILS=Off
|
||||
-DLLVM_INCLUDE_UTILS=Off
|
||||
-target="$HOST"
|
||||
-I"$sysroot/include"
|
||||
-DCMAKE_CXX_FLAGS='--std=gnu++11 -Wl,--whole-archive -lpthread -Wl,--no-whole-archive'
|
||||
-DLLVM_TOOL_LTO_BUILD=Off
|
||||
-DLLVM_TOOL_LLVM_PROFDATA_BUILD=Off
|
||||
-DLLVM_TOOL_LLI_BUILD=Off
|
||||
-DLLVM_TOOL_RDOBJ_BUILD=Off
|
||||
-DLLVM_TOOL_LLVM_COV_BUILD=Off
|
||||
-DLLVM_TOOL_LLVM_XRAY_BUILD=Off
|
||||
-DLLVM_TOOL_LLVM_LTO2_BUILD=Off
|
||||
-DLLVM_TOOL_LLVM_LTO_BUILD=Off
|
||||
-DLLVM_TOOL_LLVM_RTDYLD_BUILD=Off
|
||||
-Wno-dev
|
||||
)
|
||||
cmake "${CMAKE_ARGS[@]}" "$source"
|
||||
make -j$(nproc)
|
||||
@ -73,6 +77,6 @@ function recipe_clean {
|
||||
function recipe_stage {
|
||||
dest="$(realpath $1)"
|
||||
make DESTDIR="$dest" install
|
||||
find "$dest"/{bin,lib} -exec $STRIP {} ';' 2> /dev/null
|
||||
find "$dest"/bin -exec $STRIP {} ';' 2> /dev/null
|
||||
skip=1
|
||||
}
|
||||
|
||||
@ -19,8 +19,8 @@ function recipe_build {
|
||||
export CPPFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1"
|
||||
export LDFLAGS="-L$sysroot/lib"
|
||||
export LIBS="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive"
|
||||
export LLVM_CONFIG="$(realpath ../llvm-config)"
|
||||
NOCONFIGURE=1 ./autogen.sh
|
||||
export LLVM_CONFIG="x86_64-unknown-redox-llvm-config"
|
||||
#NOCONFIGURE=1 ./autogen.sh
|
||||
./configure \
|
||||
--host="${HOST}" \
|
||||
--prefix=/ \
|
||||
@ -50,12 +50,7 @@ function recipe_clean {
|
||||
}
|
||||
|
||||
function recipe_stage {
|
||||
sysroot="$(realpath ../sysroot)"
|
||||
export CFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1"
|
||||
export CPPFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1"
|
||||
export LDFLAGS="-L$sysroot/lib"
|
||||
export LIBS="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive"
|
||||
export LLVM_CONFIG="$(realpath ../llvm-config)"
|
||||
export LLVM_CONFIG="x86_64-unknown-redox-llvm-config"
|
||||
dest="$(realpath $1)"
|
||||
make DESTDIR="$dest" install
|
||||
rm -f "$dest/lib/"*.la
|
||||
|
||||
@ -19,5 +19,5 @@ cc = "x86_64-unknown-redox-gcc"
|
||||
cxx = "x86_64-unknown-redox-g++"
|
||||
ar = "x86_64-unknown-redox-ar"
|
||||
linker = "x86_64-unknown-redox-gcc"
|
||||
llvm-config = "../llvm-config"
|
||||
llvm-config = "x86_64-unknown-redox-llvm-config"
|
||||
crt-static = true
|
||||
|
||||
@ -1,42 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
||||
args = sys.argv[1:]
|
||||
prefix = os.path.realpath(os.path.dirname(os.path.abspath(sys.argv[0])) + "/sysroot")
|
||||
|
||||
# The values here are copied from the output of llvm-config running under Redox.
|
||||
# This is a hack, and should be replaced if possible.
|
||||
|
||||
if args == ["--version"]:
|
||||
print("8.0.0svn")
|
||||
elif args == ["--cxxflags"]:
|
||||
print("-I" + prefix + "/include --std=gnu++11 -fPIC -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-comment -g -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS")
|
||||
elif args == ["--components"]:
|
||||
print(
|
||||
"aggressiveinstcombine all all-targets analysis asmparser asmprinter binaryformat bitreader"
|
||||
+ " bitwriter codegen core coroutines coverage debuginfocodeview debuginfodwarf debuginfomsf"
|
||||
+ " debuginfopdb demangle dlltooldriver engine executionengine fuzzmutate globalisel instcombine"
|
||||
+ " instrumentation interpreter ipo irreader libdriver lineeditor linker lto mc mcdisassembler"
|
||||
+ " mcjit mcparser mirparser native nativecodegen objcarcopts object objectyaml option orcjit"
|
||||
+ " passes profiledata runtimedyld scalaropts selectiondag support symbolize tablegen target"
|
||||
+ " transformutils vectorize windowsmanifest x86 x86asmparser x86asmprinter x86codegen x86desc"
|
||||
+ " x86disassembler x86info x86utils")
|
||||
elif args == ["--link-static", "--libs", "asmparser", "bitreader", "bitwriter", "instrumentation", "interpreter", "ipo", "linker", "lto", "mcjit", "x86"]:
|
||||
print(
|
||||
"-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG"
|
||||
+ " -lLLVMAsmPrinter -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter"
|
||||
+ " -lLLVMX86Utils -lLLVMMCJIT -lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMipo -lLLVMVectorize"
|
||||
+ " -lLLVMLinker -lLLVMIRReader -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld"
|
||||
+ " -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine"
|
||||
+ " -lLLVMInstrumentation -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData"
|
||||
+ " -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader"
|
||||
+ " -lLLVMAsmParser -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle"
|
||||
+ " -lstdc++ -lgcc"
|
||||
)
|
||||
# FIXME last two -l are a hack
|
||||
elif args == ["--link-static", "--ldflags"]:
|
||||
print("-L" + prefix + "/lib");
|
||||
else:
|
||||
sys.exit(1)
|
||||
Loading…
Reference in New Issue
Block a user