Merge remote-tracking branch 'origin/freebsd'

This commit is contained in:
Jeremy Soller 2020-05-06 08:57:00 -06:00
commit 44388796d2
No known key found for this signature in database
GPG key ID: E988B49EE78A7FB1
6 changed files with 91 additions and 24 deletions

View file

@ -1,4 +1,4 @@
#! /bin/bash #!/usr/bin/env bash
########################################################## ##########################################################
# This function is simply a banner to introduce the script # This function is simply a banner to introduce the script
@ -12,12 +12,12 @@ banner()
################################################################################### ###################################################################################
# This function takes care of installing a dependency via package manager of choice # This function takes care of installing a dependency via package manager of choice
# for building redox on MacOS. # for building redox on BSDs (MacOS, FreeBSD, etc.).
# @params: $1 package manager # @params: $1 package manager
# $2 package name # $2 package name
# $3 binary name (optional) # $3 binary name (optional)
################################################################################### ###################################################################################
install_macos_pkg() install_bsd_pkg()
{ {
PKG_MANAGER=$1 PKG_MANAGER=$1
PKG_NAME=$2 PKG_NAME=$2
@ -37,17 +37,22 @@ install_macos_pkg()
install_macports_pkg() install_macports_pkg()
{ {
install_macos_pkg "sudo port" "$1" "$2" install_bsd_pkg "sudo port" "$1" "$2"
} }
install_brew_pkg() install_brew_pkg()
{ {
install_macos_pkg "brew" $@ install_bsd_pkg "brew" $@
} }
install_brew_cask_pkg() install_brew_cask_pkg()
{ {
install_macos_pkg "brew cask" $@ install_bsd_pkg "brew cask" $@
}
install_freebsd_pkg()
{
install_bsd_pkg "sudo pkg" $@
} }
############################################################################### ###############################################################################
@ -136,6 +141,43 @@ osx_homebrew()
install_brew_pkg "redox-os/gcc_cross_compilers/x86_64-elf-gcc" "x86_64-elf-gcc" install_brew_pkg "redox-os/gcc_cross_compilers/x86_64-elf-gcc" "x86_64-elf-gcc"
} }
###############################################################################
# This function takes care of installing all dependencies using pkg
# for building redox on FreeBSD
# @params: $1 the emulator to install, virtualbox or qemu
###############################################################################
freebsd()
{
set -xe
echo "FreeBSD detected!"
echo "Installing missing packages..."
install_freebsd_pkg "git"
if [ "$1" == "qemu" ]; then
install_freebsd_pkg "qemu" "qemu-system-x86_64"
else
install_freebsd_pkg "virtualbox"
fi
install_freebsd_pkg "coreutils"
install_freebsd_pkg "findutils"
install_freebsd_pkg "gcc"
install_freebsd_pkg "nasm"
install_freebsd_pkg "pkgconf"
install_freebsd_pkg "fusefs-libs"
install_freebsd_pkg "cmake"
install_freebsd_pkg "gmake"
install_freebsd_pkg "wget"
install_freebsd_pkg "texinfo"
install_freebsd_pkg "python"
install_freebsd_pkg "automake"
install_freebsd_pkg "gettext"
install_freebsd_pkg "bison"
install_freebsd_pkg "gperf"
set +xe
}
############################################################################### ###############################################################################
# This function takes care of installing all dependencies for building redox on # This function takes care of installing all dependencies for building redox on
# Arch linux # Arch linux
@ -506,8 +548,13 @@ boot()
statusCheck statusCheck
echo "Run the following commands to build redox:" echo "Run the following commands to build redox:"
echo "cd redox" echo "cd redox"
echo "make all" MAKE="make"
echo "make virtualbox or qemu" if [[ "$(uname)" -eq FreeBSD ]]; then
MAKE="gmake"
echo "kldload fuse.ko # This loads the kernel module for fuse"
fi
echo "$MAKE all"
echo "$MAKE virtualbox or qemu"
echo echo
echo " Good luck!" echo " Good luck!"
@ -574,6 +621,12 @@ else
# Arch linux # Arch linux
elif hash 2>/dev/null pacman; then elif hash 2>/dev/null pacman; then
archLinux "$emulator" archLinux "$emulator"
# FreeBSD
elif hash 2>/dev/null pkg; then
freebsd "$emulator"
# Unsupported platform
else
printf "\e[31;1mFatal error: \e[0;31mUnsupported platform, please open an issue\[0m"
fi fi
fi fi

View file

@ -86,7 +86,7 @@ logd = {}
#ncursesw = {} #ncursesw = {}
netdb = {} netdb = {}
netstack = {} netstack = {}
netsurf = {} #netsurf = {}
netutils = {} netutils = {}
#neverball = {} #neverball = {}
#newlib = {} #newlib = {}

@ -1 +1 @@
Subproject commit 50c3f8642cce2f541da9854a8e2c3bf677604269 Subproject commit 5097c70245514908477c1d032f7399390c089292

View file

@ -15,12 +15,21 @@ UNAME := $(shell uname)
ifeq ($(UNAME),Darwin) ifeq ($(UNAME),Darwin)
FUMOUNT=sudo umount FUMOUNT=sudo umount
export NPROC=sysctl -n hw.ncpu export NPROC=sysctl -n hw.ncpu
export REDOX_MAKE=make
PREFIX_BINARY=0 PREFIX_BINARY=0
VB_AUDIO=coreaudio VB_AUDIO=coreaudio
VBM=/Applications/VirtualBox.app/Contents/MacOS/VBoxManage VBM=/Applications/VirtualBox.app/Contents/MacOS/VBoxManage
else ifeq ($(UNAME),FreeBSD)
FUMOUNT=sudo umount
export NPROC=sysctl -n hw.ncpu
export REDOX_MAKE=gmake
PREFIX_BINARY=0
VB_AUDIO=pulse # To check, will probaly be OSS on most setups
VBM=VBoxManage
else else
FUMOUNT=fusermount -u FUMOUNT=fusermount -u
export NPROC=nproc export NPROC=nproc
export REDOX_MAKE=make
VB_AUDIO=pulse VB_AUDIO=pulse
VBM=VBoxManage VBM=VBoxManage
endif endif

View file

@ -38,8 +38,8 @@ $(PREFIX)/relibc-install: $(ROOT)/relibc | $(PREFIX)/gcc-install
cd "$<" && \ cd "$<" && \
export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \ export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \
export CARGO="env -u CARGO xargo" && \ export CARGO="env -u CARGO xargo" && \
make -j `$(NPROC)` all && \ $(MAKE) -j `$(NPROC)` all && \
make -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial/$(TARGET)" $(MAKE) -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial/$(TARGET)"
cd "$@.partial" && $(PREFIX_STRIP) cd "$@.partial" && $(PREFIX_STRIP)
touch "$@.partial" touch "$@.partial"
mv "$@.partial" "$@" mv "$@.partial" "$@"
@ -67,9 +67,9 @@ $(PREFIX)/rust-install: $(ROOT)/rust | $(PREFIX)/relibc-install
--tools=cargo \ --tools=cargo \
--target="$(TARGET)" \ --target="$(TARGET)" \
&& \ && \
make -j `$(NPROC)` && \ $(MAKE) -j `$(NPROC)` && \
rm -rf "$(ROOT)/$@.partial/lib/rustlib" "$(ROOT)/$@.partial/share/doc/rust" && \ rm -rf "$(ROOT)/$@.partial/lib/rustlib" "$(ROOT)/$@.partial/share/doc/rust" && \
make -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial" $(MAKE) -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial"
rm -rf "$(PREFIX)/rust-build" rm -rf "$(PREFIX)/rust-build"
mkdir -p "$@.partial/lib/rustlib/x86_64-unknown-linux-gnu/bin" mkdir -p "$@.partial/lib/rustlib/x86_64-unknown-linux-gnu/bin"
cd "$@.partial" && find . -name *.old -exec rm {} ';' && $(PREFIX_STRIP) cd "$@.partial" && find . -name *.old -exec rm {} ';' && $(PREFIX_STRIP)
@ -122,8 +122,8 @@ $(PREFIX)/binutils-install: $(PREFIX)/binutils
--prefix="" \ --prefix="" \
--disable-werror \ --disable-werror \
&& \ && \
make -j `$(NPROC)` all && \ $(MAKE) -j `$(NPROC)` all && \
make -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial" $(MAKE) -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial"
rm -rf "$<-build" rm -rf "$<-build"
cd "$@.partial" && $(PREFIX_STRIP) cd "$@.partial" && $(PREFIX_STRIP)
touch "$@.partial" touch "$@.partial"
@ -155,8 +155,8 @@ $(PREFIX)/gcc-freestanding-install: $(PREFIX)/gcc | $(PREFIX)/binutils-install
--enable-languages=c,c++ \ --enable-languages=c,c++ \
--without-headers \ --without-headers \
&& \ && \
make -j `$(NPROC)` all-gcc && \ $(MAKE) -j `$(NPROC)` all-gcc && \
make -j `$(NPROC)` install-gcc DESTDIR="$(ROOT)/$@.partial" $(MAKE) -j `$(NPROC)` install-gcc DESTDIR="$(ROOT)/$@.partial"
rm -rf "$<-freestanding-build" rm -rf "$<-freestanding-build"
cd "$@.partial" && $(PREFIX_STRIP) cd "$@.partial" && $(PREFIX_STRIP)
touch "$@.partial" touch "$@.partial"
@ -176,8 +176,8 @@ $(PREFIX)/rust-freestanding-install: $(ROOT)/rust | $(PREFIX)/binutils-install
--enable-llvm-static-stdcpp \ --enable-llvm-static-stdcpp \
--tools=cargo \ --tools=cargo \
&& \ && \
make -j `$(NPROC)` && \ $(MAKE) -j `$(NPROC)` && \
make -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial" $(MAKE) -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial"
rm -rf "$(PREFIX)/rust-freestanding-build" rm -rf "$(PREFIX)/rust-freestanding-build"
mkdir -p "$@.partial/lib/rustlib/x86_64-unknown-linux-gnu/bin" mkdir -p "$@.partial/lib/rustlib/x86_64-unknown-linux-gnu/bin"
cd "$@.partial" && $(PREFIX_STRIP) cd "$@.partial" && $(PREFIX_STRIP)
@ -191,8 +191,8 @@ $(PREFIX)/relibc-freestanding-install: $(ROOT)/relibc | $(PREFIX_BASE_INSTALL) $
export PATH="$(PREFIX_BASE_INSTALL):$(PREFIX_FREESTANDING_PATH):$$PATH" && \ export PATH="$(PREFIX_BASE_INSTALL):$(PREFIX_FREESTANDING_PATH):$$PATH" && \
export CARGO="env -u CARGO xargo" && \ export CARGO="env -u CARGO xargo" && \
export CC_$(subst -,_,$(TARGET))="$(TARGET)-gcc -isystem $(ROOT)/$@.partial/$(TARGET)/include" && \ export CC_$(subst -,_,$(TARGET))="$(TARGET)-gcc -isystem $(ROOT)/$@.partial/$(TARGET)/include" && \
make -j `$(NPROC)` all && \ $(MAKE) -j `$(NPROC)` all && \
make -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial/$(TARGET)" $(MAKE) -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial/$(TARGET)"
cd "$@.partial" && $(PREFIX_STRIP) cd "$@.partial" && $(PREFIX_STRIP)
touch "$@.partial" touch "$@.partial"
mv "$@.partial" "$@" mv "$@.partial" "$@"
@ -217,8 +217,8 @@ $(PREFIX)/gcc-install: $(PREFIX)/gcc | $(PREFIX)/relibc-freestanding-install
--enable-shared \ --enable-shared \
--enable-threads=posix \ --enable-threads=posix \
&& \ && \
make -j `$(NPROC)` all-gcc all-target-libgcc all-target-libstdc++-v3 && \ $(MAKE) -j `$(NPROC)` all-gcc all-target-libgcc all-target-libstdc++-v3 && \
make -j `$(NPROC)` install-gcc install-target-libgcc install-target-libstdc++-v3 DESTDIR="$(ROOT)/$@.partial" && \ $(MAKE) -j `$(NPROC)` install-gcc install-target-libgcc install-target-libstdc++-v3 DESTDIR="$(ROOT)/$@.partial" && \
rm $(ROOT)/$@.partial/$(TARGET)/lib/*.la rm $(ROOT)/$@.partial/$(TARGET)/lib/*.la
rm -rf "$<-build" rm -rf "$<-build"
cd "$@.partial" && $(PREFIX_STRIP) cd "$@.partial" && $(PREFIX_STRIP)

View file

@ -45,8 +45,13 @@ endif
#,int,pcall #,int,pcall
#-device intel-iommu #-device intel-iommu
ifeq ($(UNAME),Linux)
build/extra.bin: build/extra.bin:
fallocate --posix --length 1G $@ fallocate --posix --length 1G $@
else
build/extra.bin:
truncate -s 1g $@
endif
qemu: build/harddrive.bin build/extra.bin qemu: build/harddrive.bin build/extra.bin
$(QEMU) $(QEMUFLAGS) \ $(QEMU) $(QEMUFLAGS) \