Backport prefix changes from aarch64
This commit is contained in:
parent
baf61349bd
commit
9cece170b1
2
Makefile
2
Makefile
|
@ -86,7 +86,7 @@ FORCE:
|
||||||
|
|
||||||
# A method of creating a listing for any binary
|
# A method of creating a listing for any binary
|
||||||
%.list: %
|
%.list: %
|
||||||
objdump -C -M intel -D $< > $@
|
$(OBJDUMP) -C -M intel -D $< > $@
|
||||||
|
|
||||||
# Wireshark
|
# Wireshark
|
||||||
wireshark: FORCE
|
wireshark: FORCE
|
||||||
|
|
23
mk/config.mk
23
mk/config.mk
|
@ -1,23 +1,20 @@
|
||||||
# Configuration
|
# Configuration
|
||||||
ARCH?=x86_64
|
ARCH?=x86_64
|
||||||
INSTALLER_FLAGS?=--cookbook=cookbook
|
INSTALLER_FLAGS?=--cookbook=cookbook
|
||||||
|
PREFIX_RUSTC?=0
|
||||||
|
|
||||||
# Per host variables
|
# Per host variables
|
||||||
UNAME := $(shell uname)
|
UNAME := $(shell uname)
|
||||||
ifeq ($(UNAME),Darwin)
|
ifeq ($(UNAME),Darwin)
|
||||||
ECHO=/bin/echo
|
ECHO=/bin/echo
|
||||||
FUMOUNT=sudo umount
|
FUMOUNT=sudo umount
|
||||||
export LD=$(ARCH)-elf-ld
|
|
||||||
export NPROC=sysctl -n hw.ncpu
|
export NPROC=sysctl -n hw.ncpu
|
||||||
export STRIP=$(ARCH)-elf-strip
|
|
||||||
VB_AUDIO=coreaudio
|
VB_AUDIO=coreaudio
|
||||||
VBM="/Applications/VirtualBox.app/Contents/MacOS/VBoxManage"
|
VBM="/Applications/VirtualBox.app/Contents/MacOS/VBoxManage"
|
||||||
else
|
else
|
||||||
ECHO=echo
|
ECHO=echo
|
||||||
FUMOUNT=fusermount -u
|
FUMOUNT=fusermount -u
|
||||||
export LD=ld
|
|
||||||
export NPROC=nproc
|
export NPROC=nproc
|
||||||
export STRIP=strip
|
|
||||||
VB_AUDIO="pulse"
|
VB_AUDIO="pulse"
|
||||||
VBM=VBoxManage
|
VBM=VBoxManage
|
||||||
endif
|
endif
|
||||||
|
@ -28,6 +25,24 @@ 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
|
||||||
|
AR=$(TARGET)-ar
|
||||||
|
AS=$(TARGET)-as
|
||||||
|
CC=$(TARGET)-gcc
|
||||||
|
CXX=$(TARGET)-g++
|
||||||
|
LD=$(TARGET)-ld
|
||||||
|
NM=$(TARGET)-nm
|
||||||
|
OBJCOPY=$(TARGET)-objcopy
|
||||||
|
OBJDUMP=$(TARGET)-objdump
|
||||||
|
RANLIB=$(TARGET)-ranlib
|
||||||
|
READELF=$(TARGET)-readelf
|
||||||
|
STRIP=$(TARGET)-strip
|
||||||
|
|
||||||
|
# Rust cross compile variables
|
||||||
|
export AR_$(subst -,_,$(TARGET))=$(TARGET)-ar
|
||||||
|
export CC_$(subst -,_,$(TARGET))=$(TARGET)-gcc
|
||||||
|
export CXX_$(subst -,_,$(TARGET))=$(TARGET)-g++
|
||||||
|
|
||||||
# Kernel variables
|
# Kernel variables
|
||||||
KTARGET=$(ARCH)-unknown-none
|
KTARGET=$(ARCH)-unknown-none
|
||||||
KBUILD=build/kernel
|
KBUILD=build/kernel
|
||||||
|
|
15
mk/kernel.mk
15
mk/kernel.mk
|
@ -1,27 +1,22 @@
|
||||||
build/libkernel.a: kernel/Cargo.lock kernel/Cargo.toml kernel/src/* kernel/src/*/* kernel/src/*/*/* kernel/src/*/*/*/* build/initfs.tag
|
build/libkernel.a: kernel/Cargo.lock kernel/Cargo.toml kernel/src/* kernel/src/*/* kernel/src/*/*/* kernel/src/*/*/*/* build/initfs.tag
|
||||||
# Temporary fix for https://gitlab.redox-os.org/redox-os/redox/issues/963 allowing to build on macOS
|
|
||||||
ifeq ($(UNAME),Darwin)
|
|
||||||
cd kernel && CC=$(ARCH)-elf-gcc AR=$(ARCH)-elf-ar CFLAGS=-ffreestanding INITFS_FOLDER=$(ROOT)/build/initfs xargo rustc --lib --target $(KTARGET) --release -- -C soft-float -C debuginfo=2 --emit link=../$@
|
|
||||||
else
|
|
||||||
cd kernel && INITFS_FOLDER=$(ROOT)/build/initfs xargo rustc --lib --target $(KTARGET) --release -- -C soft-float -C debuginfo=2 --emit link=../$@
|
cd kernel && INITFS_FOLDER=$(ROOT)/build/initfs xargo rustc --lib --target $(KTARGET) --release -- -C soft-float -C debuginfo=2 --emit link=../$@
|
||||||
endif
|
|
||||||
|
|
||||||
build/libkernel_live.a: kernel/Cargo.toml kernel/src/* kernel/src/*/* kernel/src/*/*/* kernel/src/*/*/*/* build/initfs_live.tag
|
build/libkernel_live.a: kernel/Cargo.toml kernel/src/* kernel/src/*/* kernel/src/*/*/* kernel/src/*/*/*/* build/initfs_live.tag
|
||||||
cd kernel && INITFS_FOLDER=$(ROOT)/build/initfs_live xargo rustc --lib --features live --target $(KTARGET) --release -- -C soft-float -C debuginfo=2 --emit link=../$@
|
cd kernel && INITFS_FOLDER=$(ROOT)/build/initfs_live xargo rustc --lib --features live --target $(KTARGET) --release -- -C soft-float -C debuginfo=2 --emit link=../$@
|
||||||
|
|
||||||
build/kernel: kernel/linkers/$(ARCH).ld build/libkernel.a
|
build/kernel: kernel/linkers/$(ARCH).ld build/libkernel.a
|
||||||
$(LD) --gc-sections -z max-page-size=0x1000 -T $< -o $@ build/libkernel.a
|
$(LD) --gc-sections -z max-page-size=0x1000 -T $< -o $@ build/libkernel.a
|
||||||
objcopy --only-keep-debug $@ $@.sym
|
$(OBJCOPY) --only-keep-debug $@ $@.sym
|
||||||
objcopy --strip-debug $@
|
$(OBJCOPY) --strip-debug $@
|
||||||
|
|
||||||
build/kernel_live: kernel/linkers/$(ARCH).ld build/libkernel_live.a build/live.o
|
build/kernel_live: kernel/linkers/$(ARCH).ld build/libkernel_live.a build/live.o
|
||||||
$(LD) --gc-sections -z max-page-size=0x1000 -T $< -o $@ build/libkernel_live.a build/live.o
|
$(LD) --gc-sections -z max-page-size=0x1000 -T $< -o $@ build/libkernel_live.a build/live.o
|
||||||
objcopy --only-keep-debug $@ $@.sym
|
$(OBJCOPY) --only-keep-debug $@ $@.sym
|
||||||
objcopy --strip-debug $@
|
$(OBJCOPY) --strip-debug $@
|
||||||
|
|
||||||
build/live.o: build/filesystem.bin
|
build/live.o: build/filesystem.bin
|
||||||
#TODO: More general use of $(ARCH)
|
#TODO: More general use of $(ARCH)
|
||||||
objcopy -I binary -O elf64-x86-64 -B i386:x86-64 $< $@ \
|
$(OBJCOPY) -I binary -O elf64-x86-64 -B i386:x86-64 $< $@ \
|
||||||
--redefine-sym _binary_build_filesystem_bin_start=__live_start \
|
--redefine-sym _binary_build_filesystem_bin_start=__live_start \
|
||||||
--redefine-sym _binary_build_filesystem_bin_end=__live_end \
|
--redefine-sym _binary_build_filesystem_bin_end=__live_end \
|
||||||
--redefine-sym _binary_build_filesystem_bin_size=__live_size
|
--redefine-sym _binary_build_filesystem_bin_size=__live_size
|
||||||
|
|
76
mk/prefix.mk
76
mk/prefix.mk
|
@ -1,25 +1,22 @@
|
||||||
PREFIX=$(ROOT)/prefix
|
PREFIX=$(ROOT)/prefix/$(TARGET)
|
||||||
|
|
||||||
PREFIX_BINUTILS_PATH=$(PREFIX)/binutils-install/bin
|
PREFIX_FREESTANDING_INSTALL=$(PREFIX)/gcc-freestanding-install
|
||||||
PREFIX_FREESTANDING_PATH=$(PREFIX_BINUTILS_PATH):$(PREFIX)/gcc-freestanding-install/bin
|
PREFIX_INSTALL=$(PREFIX)/gcc-install
|
||||||
PREFIX_PATH=$(PREFIX_BINUTILS_PATH):$(PREFIX)/gcc-install/bin
|
|
||||||
|
|
||||||
PREFIX_FREESTANDING_TARGETS=\
|
ifeq ($(PREFIX_RUSTC),1)
|
||||||
$(PREFIX)/binutils-install \
|
PREFIX_FREESTANDING_INSTALL=$(PREFIX)/rust-freestanding-install
|
||||||
$(PREFIX)/gcc-freestanding-install
|
export RUSTUP_TOOLCHAIN=$(PREFIX)/rust-freestanding-install
|
||||||
|
endif
|
||||||
|
|
||||||
PREFIX_TARGETS=\
|
PREFIX_PATH=$(PREFIX_INSTALL)/bin
|
||||||
$(PREFIX)/binutils-install \
|
|
||||||
$(PREFIX)/gcc-install
|
|
||||||
|
|
||||||
prefix-freestanding: $(PREFIX_FREESTANDING_TARGETS)
|
prefix-freestanding: $(PREFIX_FREESTANDING_INSTALL)
|
||||||
|
|
||||||
prefix: $(PREFIX_TARGETS)
|
prefix: $(PREFIX_INSTALL)
|
||||||
touch "$@"
|
|
||||||
|
|
||||||
$(PREFIX)/binutils.tar.bz2:
|
$(PREFIX)/binutils.tar.bz2:
|
||||||
mkdir -p "$(@D)"
|
mkdir -p "$(@D)"
|
||||||
wget -O $@.partial "https://gitlab.redox-os.org/redox-os/binutils-gdb/-/archive/master/binutils-gdb-master.tar.bz2"
|
wget -O $@.partial "https://gitlab.redox-os.org/redox-os/binutils-gdb/-/archive/redox/binutils-gdb-redox.tar.bz2"
|
||||||
mv $@.partial $@
|
mv $@.partial $@
|
||||||
|
|
||||||
$(PREFIX)/binutils: $(PREFIX)/binutils.tar.bz2
|
$(PREFIX)/binutils: $(PREFIX)/binutils.tar.bz2
|
||||||
|
@ -32,7 +29,7 @@ $(PREFIX)/binutils-install: $(PREFIX)/binutils
|
||||||
rm -rf "$<-build" "$@"
|
rm -rf "$<-build" "$@"
|
||||||
mkdir -p "$<-build" "$@"
|
mkdir -p "$<-build" "$@"
|
||||||
cd "$<-build" && \
|
cd "$<-build" && \
|
||||||
"$</configure" --target="$(TARGET)" --disable-werror --prefix="$@" && \
|
"$</configure" --target="$(TARGET)" --program-prefix="$(TARGET)-" --prefix="$@" --disable-werror && \
|
||||||
make all -j `nproc` && \
|
make all -j `nproc` && \
|
||||||
make install -j `nproc`
|
make install -j `nproc`
|
||||||
touch "$@"
|
touch "$@"
|
||||||
|
@ -49,36 +46,61 @@ $(PREFIX)/gcc: $(PREFIX)/gcc.tar.bz2
|
||||||
mv "$@.partial" "$@"
|
mv "$@.partial" "$@"
|
||||||
touch "$@"
|
touch "$@"
|
||||||
|
|
||||||
$(PREFIX)/gcc-freestanding-install: $(PREFIX)/gcc
|
$(PREFIX)/gcc-freestanding-install: $(PREFIX)/gcc | $(PREFIX)/binutils-install
|
||||||
rm -rf "$<-freestanding-build" "$@"
|
rm -rf "$<-freestanding-build" "$@"
|
||||||
mkdir -p "$<-freestanding-build" "$@"
|
mkdir -p "$<-freestanding-build"
|
||||||
|
cp -r "$(PREFIX)/binutils-install" "$@"
|
||||||
cd "$<-freestanding-build" && \
|
cd "$<-freestanding-build" && \
|
||||||
export PATH="$(PREFIX_BINUTILS_PATH):$$PATH" && \
|
export PATH="$@/bin:$$PATH" && \
|
||||||
"$</configure" --target="$(TARGET)" --prefix="$@" --disable-nls --enable-languages=c,c++ --without-headers && \
|
"$</configure" --target="$(TARGET)" --program-prefix="$(TARGET)-" --prefix="$@" --disable-nls --enable-languages=c,c++ --without-headers && \
|
||||||
make all-gcc -j `nproc` && \
|
make all-gcc -j `nproc` && \
|
||||||
make all-target-libgcc -j `nproc` && \
|
make all-target-libgcc -j `nproc` && \
|
||||||
make install-gcc -j `nproc` && \
|
make install-gcc -j `nproc` && \
|
||||||
make install-target-libgcc -j `nproc`
|
make install-target-libgcc -j `nproc`
|
||||||
touch "$@"
|
touch "$@"
|
||||||
|
|
||||||
$(PREFIX)/relibc-install: $(ROOT)/relibc | $(PREFIX_FREESTANDING_TARGETS)
|
$(PREFIX)/rust-freestanding-install: $(ROOT)/rust | $(PREFIX)/gcc-freestanding-install
|
||||||
|
rm -rf "$(PREFIX)/rust-freestanding-build" "$@"
|
||||||
|
mkdir -p "$(PREFIX)/rust-freestanding-build"
|
||||||
|
cp -r "$(PREFIX)/gcc-freestanding-install" "$@"
|
||||||
|
cd "$(PREFIX)/rust-freestanding-build" && \
|
||||||
|
export PATH="$@/bin:$$PATH" && \
|
||||||
|
"$</configure" --prefix="$@" --disable-docs && \
|
||||||
|
make -j `nproc` && \
|
||||||
|
make install -j `nproc`
|
||||||
|
touch "$@"
|
||||||
|
|
||||||
|
$(PREFIX)/relibc-install: $(ROOT)/relibc | $(PREFIX_FREESTANDING_INSTALL)
|
||||||
rm -rf "$@"
|
rm -rf "$@"
|
||||||
|
mkdir -p "$@"
|
||||||
cd "$<" && \
|
cd "$<" && \
|
||||||
export PATH="$(PREFIX_FREESTANDING_PATH):$$PATH" && \
|
export PATH="$@/bin:$$PATH" && \
|
||||||
make CARGO=xargo all && \
|
make CARGO=xargo all && \
|
||||||
make CARGO=xargo DESTDIR="$@/usr" install
|
make CARGO=xargo DESTDIR="$@/usr" install
|
||||||
touch "$@"
|
touch "$@"
|
||||||
|
|
||||||
$(PREFIX)/gcc-install: $(PREFIX)/gcc | $(PREFIX)/relibc-install
|
$(PREFIX)/gcc-install: $(PREFIX)/gcc | $(PREFIX)/relibc-install
|
||||||
rm -rf "$<-build" "$@"
|
rm -rf "$<-build" "$@"
|
||||||
mkdir -p "$<-build" "$@"
|
mkdir -p "$<-build"
|
||||||
|
cp -r "$(PREFIX_FREESTANDING_INSTALL)" "$@"
|
||||||
cd "$<-build" && \
|
cd "$<-build" && \
|
||||||
export PATH="$(PREFIX_FREESTANDING_PATH):$$PATH" && \
|
export PATH="$@/bin:$$PATH" && \
|
||||||
"$</configure" --target="$(TARGET)" --disable-werror --prefix="$@" --with-sysroot="$(PREFIX)/relibc-install" --disable-nls --enable-languages=c,c++ && \
|
"$</configure" --target="$(TARGET)" --program-prefix="$(TARGET)-" --prefix="$@" --with-sysroot="$(PREFIX)/relibc-install" --disable-nls --disable-werror --enable-languages=c,c++ && \
|
||||||
make all-gcc -j `nproc` && \
|
make all-gcc -j `nproc` && \
|
||||||
make all-target-libgcc -j `nproc` && \
|
make all-target-libgcc -j `nproc` && \
|
||||||
make install-gcc -j `nproc` && \
|
make install-gcc -j `nproc` && \
|
||||||
make install-target-libgcc -j `nproc` && \
|
make install-target-libgcc -j `nproc` # && \
|
||||||
make all-target-libstdc++-v3 -j `nproc` && \
|
#make all-target-libstdc++-v3 -j `nproc` && \
|
||||||
make install-target-libstdc++-v3 -j `nproc`
|
#make install-target-libstdc++-v3 -j `nproc`
|
||||||
touch "$@"
|
touch "$@"
|
||||||
|
|
||||||
|
# Building full rustc may not be required
|
||||||
|
# $(PREFIX)/rust-install: $(ROOT)/rust | $(PREFIX)/gcc-install
|
||||||
|
# rm -rf "$(PREFIX)/rust-build" "$@"
|
||||||
|
# mkdir -p "$(PREFIX)/rust-build" "$@"
|
||||||
|
# cd "$(PREFIX)/rust-build" && \
|
||||||
|
# export PATH="$(PREFIX_PATH):$$PATH" && \
|
||||||
|
# "$</configure" --target="$(TARGET)" --prefix="$@" --disable-docs && \
|
||||||
|
# make -j `nproc` && \
|
||||||
|
# make install -j `nproc`
|
||||||
|
# touch "$@"
|
||||||
|
|
Loading…
Reference in a new issue