diff --git a/recipes/gears/recipe.sh b/recipes/gears/recipe.sh index 9dba93e37dd2d33022867d6f6b7e02ab9075742d..2b8dc8c9b59e397e3a9b9d32e539dd43221e14fd 100644 --- a/recipes/gears/recipe.sh +++ b/recipes/gears/recipe.sh @@ -1,4 +1,4 @@ -BUILD_DEPENDS=(liborbital mesa mesa_glu zlib) +BUILD_DEPENDS=(liborbital llvm mesa mesa_glu zlib) function recipe_version { printf "1.0.0" diff --git a/recipes/llvm/recipe.sh b/recipes/llvm/recipe.sh deleted file mode 100644 index fc0e4370d4b0cca71cfc43a4a8ff71a60a743e24..0000000000000000000000000000000000000000 --- a/recipes/llvm/recipe.sh +++ /dev/null @@ -1,92 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/llvm-project.git -GIT_UPSTREAM=https://github.com/rust-lang/llvm-project.git -BRANCH=redox-2022-03-18 - -function recipe_version { - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_prepare { - mkdir -p build - skip=1 -} - -function recipe_build { - native="$(realpath ../native.cmake)" - source="$(realpath ../source/llvm)" - sysroot="$(realpath ../sysroot)" - CMAKE_ARGS=( - -DCMAKE_AR="$(which "${AR}")" - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CROSSCOMPILING=True - -DCMAKE_CXX_FLAGS="--std=gnu++11" - -DCMAKE_EXE_LINKER_FLAGS="-static" - -DCMAKE_RANLIB="$(which "${RANLIB}")" - -DCMAKE_INSTALL_PREFIX="/" - -DCMAKE_INSTALL_INCLUDEDIR="include" - -DCMAKE_INSTALL_OLDINCLUDEDIR="/include" - -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=Off - -DLLVM_ENABLE_RTTI=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_TARGET_ARCH="$ARCH" - -DLLVM_TARGETS_TO_BUILD=X86 - -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 - -DLLVM_TOOLS_INSTALL_DIR=bin - -DLLVM_UTILS_INSTALL_DIR=bin - -DPYTHON_EXECUTABLE="/usr/bin/python2" - -DUNIX=1 - -Wno-dev - ) - set -x - cmake "${CMAKE_ARGS[@]}" "$source" - "$REDOX_MAKE" -j$(nproc) - set +x - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - set -x - "$REDOX_MAKE" DESTDIR="$dest" install - mv -vT "$dest"/usr/include "$dest/include" - mv -vT "$dest"/usr/share "$dest/share" - rmdir -v "$dest"/usr - find "$dest"/bin -exec "$STRIP" -v {} ';' 2> /dev/null - set +x - skip=1 -} diff --git a/recipes/llvm/recipe.toml b/recipes/llvm/recipe.toml new file mode 100644 index 0000000000000000000000000000000000000000..d7902daaeff237e7072a8f7967d6eec13840d88a --- /dev/null +++ b/recipes/llvm/recipe.toml @@ -0,0 +1,59 @@ +[source] +git = "https://gitlab.redox-os.org/redox-os/llvm-project.git" +upstream = "https://github.com/rust-lang/llvm-project.git" +branch = "redox-2022-03-18" + +[build] +template = "custom" +dependencies = [] +script = """ +COOKBOOK_CONFIGURE="cmake" +COOKBOOK_CONFIGURE_FLAGS=( + -DCMAKE_AR="$(which "${TARGET}-ar")" + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CROSSCOMPILING=True + -DCMAKE_CXX_FLAGS="--std=gnu++11" + -DCMAKE_EXE_LINKER_FLAGS="-static" + -DCMAKE_RANLIB="$(which "${TARGET}-ranlib")" + -DCMAKE_INSTALL_PREFIX="/" + -DCMAKE_INSTALL_INCLUDEDIR="include" + -DCMAKE_INSTALL_OLDINCLUDEDIR="/include" + -DCMAKE_SYSTEM_NAME=Generic + -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$(realpath ../native.cmake)" + -DLLVM_BUILD_BENCHMARKS=Off + -DLLVM_BUILD_EXAMPLES=Off + -DLLVM_BUILD_TESTS=Off + -DLLVM_BUILD_UTILS=Off + -DLLVM_DEFAULT_TARGET_TRIPLE="${TARGET}" + -DLLVM_ENABLE_LTO=Off + -DLLVM_ENABLE_RTTI=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_TARGET_ARCH="$(echo "${TARGET}" | cut -d - -f1)" + -DLLVM_TARGETS_TO_BUILD=X86 # TODO: get from TARGET + -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 + -DLLVM_TOOLS_INSTALL_DIR=bin + -DLLVM_UTILS_INSTALL_DIR=bin + -DPYTHON_EXECUTABLE="/usr/bin/python2" + -DUNIX=1 + -Wno-dev + "${COOKBOOK_SOURCE}/llvm" +) +set -x +cookbook_configure +mv -vT "${COOKBOOK_STAGE}"/usr/include "${COOKBOOK_STAGE}/include" +mv -vT "${COOKBOOK_STAGE}"/usr/share "${COOKBOOK_STAGE}/share" +rmdir -v "${COOKBOOK_STAGE}"/usr +set +x +""" diff --git a/recipes/mesa/recipe.sh b/recipes/mesa/recipe.sh deleted file mode 100644 index 22a33f8602f152fcf1585ba85f26a71289a42079..0000000000000000000000000000000000000000 --- a/recipes/mesa/recipe.sh +++ /dev/null @@ -1,89 +0,0 @@ -GIT=https://gitlab.redox-os.org/redox-os/mesa.git -GIT_UPSTREAM=https://gitlab.freedesktop.org/mesa/mesa -BRANCH=redox -BUILD_DEPENDS=(expat zlib) - -function recipe_version { - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" - skip=1 -} - -function recipe_update { - echo "skipping update" - skip=1 -} - -function recipe_build { - sysroot="$(realpath ../sysroot)" - export CFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" - export CPPFLAGS="-I$sysroot/include -DHAVE_PTHREAD=1" - export LDFLAGS="-L$sysroot/lib --static" - #export LLVM_CONFIG="x86_64-unknown-redox-llvm-config" - - # TODO: Fix this annoying shite - echo "[binaries]" > cross_file.txt - echo "c = '${CC}'" >> cross_file.txt - echo "cpp = '${CXX}'" >> cross_file.txt - echo "ar = '${AR}'" >> cross_file.txt - echo "strip = '${STRIP}'" >> cross_file.txt - echo "pkgconfig = '${PKG_CONFIG}'" >> cross_file.txt - #echo "llvm-config = '${TARGET}-llvm-config'" >> cross_file.txt - - echo "[host_machine]" >> cross_file.txt - echo "system = 'redox'" >> cross_file.txt - echo "cpu_family = 'x86_64'" >> cross_file.txt - echo "cpu = 'x86_64'" >> cross_file.txt - echo "endian = 'little'" >> cross_file.txt - - echo "[paths]" >> cross_file.txt - echo "prefix = '/'" >> cross_file.txt - echo "libdir = 'lib'" >> cross_file.txt - echo "bindir = 'bin'" >> cross_file.txt - - unset AR - unset AS - unset CC - unset CXX - unset LD - unset NM - unset OBJCOPY - unset OBJDUMP - unset PKG_CONFIG - unset PKG_CONFIG_PATH - unset RANLIB - unset READELF - unset STRIP - - meson . _build \ - --cross-file cross_file.txt \ - --buildtype release \ - --strip \ - -Ddefault_library=static \ - -Dglx=disabled \ - -Dllvm=disabled \ - -Dosmesa=gallium \ - -Dplatforms= \ - -Dshader-cache=disabled \ - -Dshared-llvm=disabled \ - -Dshared-glapi=disabled - - ninja -C _build -v - skip=1 -} - -function recipe_test { - echo "skipping test" - skip=1 -} - -function recipe_clean { - "$REDOX_MAKE" clean - skip=1 -} - -function recipe_stage { - dest="$(realpath $1)" - DESTDIR="$dest" ninja -C _build install - rm -f "$dest/lib/"*.la - skip=1 -} diff --git a/recipes/mesa/recipe.toml b/recipes/mesa/recipe.toml new file mode 100644 index 0000000000000000000000000000000000000000..2366d4e3bed2afb3726fd2974fe8dbd737ba320e --- /dev/null +++ b/recipes/mesa/recipe.toml @@ -0,0 +1,57 @@ +#TODO: TEST +[source] +git = "https://gitlab.redox-os.org/redox-os/mesa.git" +upstream = "https://gitlab.freedesktop.org/mesa/mesa" +branch = "redox" + +[build] +template = "custom" +dependencies = [ + "expat", + "llvm", + "zlib", +] +script = """ +export CFLAGS="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" +export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include -DHAVE_PTHREAD=1" +export LDFLAGS="-L${COOKBOOK_SYSROOT}/lib --static" +export LLVM_CONFIG="${TARGET}-llvm-config" + +# TODO: Fix this annoying shite +echo "[binaries]" > cross_file.txt +echo "c = '${TARGET}-gcc'" >> cross_file.txt +echo "cpp = '${TARGET}-g++'" >> cross_file.txt +echo "ar = '${TARGET}-ar'" >> cross_file.txt +echo "strip = '${TARGET}-strip'" >> cross_file.txt +echo "pkgconfig = '${TARGET}-pkg-config'" >> cross_file.txt +echo "llvm-config = '${TARGET}-llvm-config'" >> cross_file.txt + +echo "[host_machine]" >> cross_file.txt +echo "system = 'redox'" >> cross_file.txt +echo "cpu_family = 'x86_64'" >> cross_file.txt +echo "cpu = 'x86_64'" >> cross_file.txt +echo "endian = 'little'" >> cross_file.txt + +echo "[paths]" >> cross_file.txt +echo "prefix = '/'" >> cross_file.txt +echo "libdir = 'lib'" >> cross_file.txt +echo "bindir = 'bin'" >> cross_file.txt + +meson "${COOKBOOK_SOURCE}" . \ + --cross-file cross_file.txt \ + --buildtype release \ + --strip \ + -Ddefault_library=static \ + -Dglx=disabled \ + -Dllvm=enabled \ + -Dosmesa=gallium \ + -Dplatforms= \ + -Dshader-cache=disabled \ + -Dshared-llvm=disabled \ + -Dshared-glapi=disabled +ninja -v +DESTDIR="${COOKBOOK_STAGE}" ninja install +# Hack to add LLVM libs +#TODO: only add necessary LLVM libs, not all of them +sed -i "s/ -lOSMesa / -lOSMesa $("${TARGET}-llvm-config" --libs) /" "${COOKBOOK_STAGE}/lib/pkgconfig/osmesa.pc" +"""