diff --git a/recipes/mesa/llvm-config b/bin/x86_64-unknown-redox-llvm-config similarity index 97% rename from recipes/mesa/llvm-config rename to bin/x86_64-unknown-redox-llvm-config index 20cc72a92cd528dbfc1bb29001c4134163063d5c..fdb2a68f5db6d83440757505eee805455fe3f5e2 100755 --- a/recipes/mesa/llvm-config +++ b/bin/x86_64-unknown-redox-llvm-config @@ -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)) diff --git a/config.sh b/config.sh index fb4c4eeb14c2c9efa56ff6cbe9cc576c54a70cb3..087774eb6643b9b18f1f1710fc6701f22f522f1e 100755 --- a/config.sh +++ b/config.sh @@ -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" diff --git a/recipes/gears/recipe.sh b/recipes/gears/recipe.sh index 6d0a6e1331f9504aefa4c5bd6aef7d2d470fab39..d5c268fe92755b3e694d9b5201e1e431e8f2be09 100644 --- a/recipes/gears/recipe.sh +++ b/recipes/gears/recipe.sh @@ -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 } diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh index a2c285b003137e549ff90c0648eb48dc14448141..cc2516257abede2a7698be1e99681c22b3208ca3 100644 --- a/recipes/llvm/recipe.sh +++ b/recipes/llvm/recipe.sh @@ -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="/" - -DLLVM_DEFAULT_TARGET_TRIPLE="$HOST" - -DLLVM_TARGET_ARCH="$ARCH" - -DLLVM_TARGETS_TO_BUILD=X86 -DCMAKE_SYSTEM_NAME=Generic - -DPYTHON_EXECUTABLE="/usr/bin/python2" - #-DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-8" - -DUNIX=1 - -DLLVM_ENABLE_THREADS=On + -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$native" -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_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 - -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_OPTIMIZED_TABLEGEN=On + #-DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-8" + -DLLVM_TARGET_ARCH="$ARCH" + -DLLVM_TARGETS_TO_BUILD=X86 -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_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" + -DUNIX=1 + -target="$HOST" + -I"$sysroot/include" + -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 } diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh index 5161b09903ca651f2d6d8170b31dcb8eb5080316..347551bdaac7a2afe1d31a73382e91978cfdd9d0 100644 --- a/recipes/mesa/recipe.sh +++ b/recipes/mesa/recipe.sh @@ -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 diff --git a/recipes/rust/config.toml b/recipes/rust/config.toml index e4b39ee1c06fda24f3f2bf4928c651fc7851e648..fe2b8ec4a7791fce0aa9dbe7929a040dc246dd1d 100644 --- a/recipes/rust/config.toml +++ b/recipes/rust/config.toml @@ -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 diff --git a/recipes/rust/llvm-config b/recipes/rust/llvm-config deleted file mode 100755 index e387d06602961590d98703a957ae096d05c334c6..0000000000000000000000000000000000000000 --- a/recipes/rust/llvm-config +++ /dev/null @@ -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)