Makefile cleanup, default to binary prefix

This commit is contained in:
Jeremy Soller 2019-03-16 19:50:08 -06:00
parent 7f9a82752d
commit 40d9117b17
No known key found for this signature in database
GPG key ID: E988B49EE78A7FB1
4 changed files with 41 additions and 39 deletions

View file

@ -20,7 +20,7 @@ clean:
rm -rf build rm -rf build
distclean: distclean:
make clean $(MAKE) clean
cd cookbook && ./unfetch.sh cd cookbook && ./unfetch.sh
pull: pull:
@ -62,7 +62,7 @@ include mk/virtualbox.mk
# CI image target # CI image target
ci-img: FORCE ci-img: FORCE
make INSTALLER_FLAGS= \ $(MAKE) INSTALLER_FLAGS= \
build/coreboot.elf.gz \ build/coreboot.elf.gz \
build/harddrive.bin.gz \ build/harddrive.bin.gz \
build/livedisk.iso.gz \ build/livedisk.iso.gz \

View file

@ -1,34 +1,48 @@
# Configuration # Configuration
## Architecture to build Redox for (aarch64 or x86_64)
ARCH?=x86_64 ARCH?=x86_64
## Flags to pass to the installer (empty to download binary packages)
INSTALLER_FLAGS?=--cookbook=cookbook INSTALLER_FLAGS?=--cookbook=cookbook
PREFIX_BINARY?=0 ## Enabled to use binary prefix (much faster)
PREFIX_BINARY?=1
## Enabled to build custom rustc
PREFIX_RUSTC?=0 PREFIX_RUSTC?=0
# Filesystem Size in MB ## Filesystem size in MB (256 is the default)
FILESYSTEM_SIZE?=256 FILESYSTEM_SIZE?=256
# Per host variables # Per host variables
UNAME := $(shell uname) UNAME := $(shell uname)
ifeq ($(UNAME),Darwin) ifeq ($(UNAME),Darwin)
ECHO=/bin/echo
FUMOUNT=sudo umount FUMOUNT=sudo umount
export NPROC=sysctl -n hw.ncpu export NPROC=sysctl -n hw.ncpu
PREFIX_BINARY=0
VB_AUDIO=coreaudio VB_AUDIO=coreaudio
VBM="/Applications/VirtualBox.app/Contents/MacOS/VBoxManage" VBM=/Applications/VirtualBox.app/Contents/MacOS/VBoxManage
else else
ECHO=echo
FUMOUNT=fusermount -u FUMOUNT=fusermount -u
export NPROC=nproc export NPROC=nproc
VB_AUDIO="pulse" VB_AUDIO=pulse
VBM=VBoxManage VBM=VBoxManage
endif endif
# Automatic variables # Automatic variables
ROOT=$(PWD) ROOT=$(CURDIR)
export RUST_TARGET_PATH=$(ROOT)/kernel/targets export RUST_TARGET_PATH=$(ROOT)/kernel/targets
export XARGO_HOME=$(ROOT)/build/xargo export XARGO_HOME=$(ROOT)/build/xargo
export XARGO_RUST_SRC=$(ROOT)/rust/src export XARGO_RUST_SRC=$(ROOT)/rust/src
# Cross compiler variables ## Kernel variables
KTARGET=$(ARCH)-unknown-none
KBUILD=build/kernel
## Userspace variables
export TARGET=$(ARCH)-unknown-redox
BUILD=build/userspace
## Bootloader variables
EFI_TARGET=$(ARCH)-efi-pe
## Cross compiler variables
AR=$(TARGET)-gcc-ar AR=$(TARGET)-gcc-ar
AS=$(TARGET)-as AS=$(TARGET)-as
CC=$(TARGET)-gcc CC=$(TARGET)-gcc
@ -41,18 +55,7 @@ RANLIB=$(TARGET)-gcc-ranlib
READELF=$(TARGET)-readelf READELF=$(TARGET)-readelf
STRIP=$(TARGET)-strip STRIP=$(TARGET)-strip
# Rust cross compile variables ## Rust cross compile variables
export AR_$(subst -,_,$(TARGET))=$(TARGET)-ar export AR_$(subst -,_,$(TARGET))=$(TARGET)-ar
export CC_$(subst -,_,$(TARGET))=$(TARGET)-gcc export CC_$(subst -,_,$(TARGET))=$(TARGET)-gcc
export CXX_$(subst -,_,$(TARGET))=$(TARGET)-g++ export CXX_$(subst -,_,$(TARGET))=$(TARGET)-g++
# Bootloader variables
EFI_TARGET=$(ARCH)-efi-pe
# Kernel variables
KTARGET=$(ARCH)-unknown-none
KBUILD=build/kernel
# Userspace variables
export TARGET=$(ARCH)-unknown-redox
BUILD=build/userspace

View file

@ -21,8 +21,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=xargo && \ export 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)"
touch "$@.partial" touch "$@.partial"
mv "$@.partial" "$@" mv "$@.partial" "$@"
@ -62,8 +62,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"
touch "$@.partial" touch "$@.partial"
mv "$@.partial" "$@" mv "$@.partial" "$@"
@ -93,8 +93,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 all-target-libgcc && \ make -j `$(NPROC)` all-gcc all-target-libgcc && \
make -j `nproc` install-gcc install-target-libgcc DESTDIR="$(ROOT)/$@.partial" make -j `$(NPROC)` install-gcc install-target-libgcc DESTDIR="$(ROOT)/$@.partial"
touch "$@.partial" touch "$@.partial"
mv "$@.partial" "$@" mv "$@.partial" "$@"
@ -105,8 +105,8 @@ $(PREFIX)/rust-freestanding-install: $(ROOT)/rust | $(PREFIX)/gcc-freestanding-i
cd "$(PREFIX)/rust-freestanding-build" && \ cd "$(PREFIX)/rust-freestanding-build" && \
export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \ export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \
"$</configure" --prefix="" --disable-docs && \ "$</configure" --prefix="" --disable-docs && \
make -j `nproc` && \ make -j `$(NPROC)` && \
make -j `nproc` install DESTDIR="$(ROOT)/$@.partial" make -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial"
mkdir -p "$@.partial/lib/rustlib/x86_64-unknown-linux-gnu/bin" mkdir -p "$@.partial/lib/rustlib/x86_64-unknown-linux-gnu/bin"
touch "$@.partial" touch "$@.partial"
mv "$@.partial" "$@" mv "$@.partial" "$@"
@ -118,8 +118,8 @@ $(PREFIX)/relibc-freestanding-install: $(ROOT)/relibc | $(PREFIX_FREESTANDING_IN
cd "$<" && \ cd "$<" && \
export PATH="$(PREFIX_FREESTANDING_PATH):$$PATH" && \ export PATH="$(PREFIX_FREESTANDING_PATH):$$PATH" && \
export CARGO=xargo && \ export 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)"
touch "$@.partial" touch "$@.partial"
mv "$@.partial" "$@" mv "$@.partial" "$@"
@ -141,8 +141,8 @@ $(PREFIX)/gcc-install: $(PREFIX)/gcc | $(PREFIX)/relibc-freestanding-install
--enable-languages=c,c++ \ --enable-languages=c,c++ \
--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"
touch "$@.partial" touch "$@.partial"
mv "$@.partial" "$@" mv "$@.partial" "$@"
@ -161,8 +161,8 @@ $(PREFIX)/gcc-install.tar.gz: $(PREFIX)/gcc-install
# cd "$(PREFIX)/rust-build" && \ # cd "$(PREFIX)/rust-build" && \
# export PATH="$(PREFIX_PATH):$$PATH" && \ # export PATH="$(PREFIX_PATH):$$PATH" && \
# "$</configure" --target="$(TARGET)" --prefix="$@" --disable-docs && \ # "$</configure" --target="$(TARGET)" --prefix="$@" --disable-docs && \
# make -j `nproc` && \ # make -j `$(NPROC)` && \
# make install -j `nproc` # make -j `$(NPROC)` install
# touch "$@" # touch "$@"
endif endif

View file

@ -1,4 +1,3 @@
BUILDDIR = $(abspath $(dir $(firstword $(MAKEFILE_LIST))))/build
virtualbox: build/harddrive.bin virtualbox: build/harddrive.bin
echo "Delete VM" echo "Delete VM"
-$(VBM) unregistervm Redox --delete; \ -$(VBM) unregistervm Redox --delete; \
@ -23,10 +22,10 @@ virtualbox: build/harddrive.bin
$(VBM) modifyvm Redox --nictype1 82540EM; \ $(VBM) modifyvm Redox --nictype1 82540EM; \
$(VBM) modifyvm Redox --cableconnected1 on; \ $(VBM) modifyvm Redox --cableconnected1 on; \
$(VBM) modifyvm Redox --nictrace1 on; \ $(VBM) modifyvm Redox --nictrace1 on; \
$(VBM) modifyvm Redox --nictracefile1 "$(BUILDDIR)/network.pcap"; \ $(VBM) modifyvm Redox --nictracefile1 "$(ROOT)/$(BUILD)/network.pcap"; \
fi fi
$(VBM) modifyvm Redox --uart1 0x3F8 4 $(VBM) modifyvm Redox --uart1 0x3F8 4
$(VBM) modifyvm Redox --uartmode1 file "$(BUILDDIR)/serial.log" $(VBM) modifyvm Redox --uartmode1 file "$(ROOT)/$(BUILD)/serial.log"
$(VBM) modifyvm Redox --usb off # on $(VBM) modifyvm Redox --usb off # on
$(VBM) modifyvm Redox --keyboard ps2 $(VBM) modifyvm Redox --keyboard ps2
$(VBM) modifyvm Redox --mouse ps2 $(VBM) modifyvm Redox --mouse ps2