From 40d9117b17c787bf34f2f754ae4c997fffd0b398 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 16 Mar 2019 19:50:08 -0600 Subject: [PATCH] Makefile cleanup, default to binary prefix --- Makefile | 4 ++-- mk/config.mk | 43 +++++++++++++++++++++++-------------------- mk/prefix.mk | 28 ++++++++++++++-------------- mk/virtualbox.mk | 5 ++--- 4 files changed, 41 insertions(+), 39 deletions(-) diff --git a/Makefile b/Makefile index e033f08..9d994ee 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ clean: rm -rf build distclean: - make clean + $(MAKE) clean cd cookbook && ./unfetch.sh pull: @@ -62,7 +62,7 @@ include mk/virtualbox.mk # CI image target ci-img: FORCE - make INSTALLER_FLAGS= \ + $(MAKE) INSTALLER_FLAGS= \ build/coreboot.elf.gz \ build/harddrive.bin.gz \ build/livedisk.iso.gz \ diff --git a/mk/config.mk b/mk/config.mk index 1929e7f..b9dc42c 100644 --- a/mk/config.mk +++ b/mk/config.mk @@ -1,34 +1,48 @@ # Configuration +## Architecture to build Redox for (aarch64 or x86_64) ARCH?=x86_64 +## Flags to pass to the installer (empty to download binary packages) 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 -# Filesystem Size in MB +## Filesystem size in MB (256 is the default) FILESYSTEM_SIZE?=256 # Per host variables UNAME := $(shell uname) ifeq ($(UNAME),Darwin) - ECHO=/bin/echo FUMOUNT=sudo umount export NPROC=sysctl -n hw.ncpu + PREFIX_BINARY=0 VB_AUDIO=coreaudio - VBM="/Applications/VirtualBox.app/Contents/MacOS/VBoxManage" + VBM=/Applications/VirtualBox.app/Contents/MacOS/VBoxManage else - ECHO=echo FUMOUNT=fusermount -u export NPROC=nproc - VB_AUDIO="pulse" + VB_AUDIO=pulse VBM=VBoxManage endif # Automatic variables -ROOT=$(PWD) +ROOT=$(CURDIR) export RUST_TARGET_PATH=$(ROOT)/kernel/targets export XARGO_HOME=$(ROOT)/build/xargo 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 AS=$(TARGET)-as CC=$(TARGET)-gcc @@ -41,18 +55,7 @@ RANLIB=$(TARGET)-gcc-ranlib READELF=$(TARGET)-readelf STRIP=$(TARGET)-strip -# Rust cross compile variables +## Rust cross compile variables export AR_$(subst -,_,$(TARGET))=$(TARGET)-ar export CC_$(subst -,_,$(TARGET))=$(TARGET)-gcc 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 diff --git a/mk/prefix.mk b/mk/prefix.mk index 4d2b673..537b6f4 100644 --- a/mk/prefix.mk +++ b/mk/prefix.mk @@ -21,8 +21,8 @@ $(PREFIX)/relibc-install: $(ROOT)/relibc | $(PREFIX)/gcc-install cd "$<" && \ export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \ export CARGO=xargo && \ - make -j `nproc` all && \ - make -j `nproc` install DESTDIR="$(ROOT)/$@.partial/$(TARGET)" + make -j `$(NPROC)` all && \ + make -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial/$(TARGET)" touch "$@.partial" mv "$@.partial" "$@" @@ -62,8 +62,8 @@ $(PREFIX)/binutils-install: $(PREFIX)/binutils --prefix="" \ --disable-werror \ && \ - make -j `nproc` all && \ - make -j `nproc` install DESTDIR="$(ROOT)/$@.partial" + make -j `$(NPROC)` all && \ + make -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial" touch "$@.partial" mv "$@.partial" "$@" @@ -93,8 +93,8 @@ $(PREFIX)/gcc-freestanding-install: $(PREFIX)/gcc | $(PREFIX)/binutils-install --enable-languages=c,c++ \ --without-headers \ && \ - make -j `nproc` all-gcc all-target-libgcc && \ - make -j `nproc` install-gcc install-target-libgcc DESTDIR="$(ROOT)/$@.partial" + make -j `$(NPROC)` all-gcc all-target-libgcc && \ + make -j `$(NPROC)` install-gcc install-target-libgcc DESTDIR="$(ROOT)/$@.partial" touch "$@.partial" mv "$@.partial" "$@" @@ -105,8 +105,8 @@ $(PREFIX)/rust-freestanding-install: $(ROOT)/rust | $(PREFIX)/gcc-freestanding-i cd "$(PREFIX)/rust-freestanding-build" && \ export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \ "$