410 kx
410 kx COMPONENT_TARGETS = $(HARDWARE_INTEL_PC64)
410 kx COMPONENT_TARGETS += $(HARDWARE_BAIKAL_M1)
410 kx
410 kx include ../../../build-system/constants.mk
410 kx
410 kx # ======= __END_OF_REQUIRES__ =======
410 kx
410 kx bin_src = package/src/main.rs
410 kx cargo_toml = package/Cargo.toml
410 kx
410 kx build_dir = $(TARGET_BUILD_DIR)/build
410 kx bin_target = $(TARGET_BUILD_DIR)/main
410 kx info_target = $(TARGET_BUILD_DIR)/.info-done
410 kx
410 kx cross_file = $(CURDIR)/$(TARGET_BUILD_DIR)/$(TARGET)-config.toml
410 kx
410 kx BUILD_TARGETS = $(bin_target) $(info_target)
410 kx
410 kx #
410 kx # The user may reject the sysroot usage. For this the user have to declare
410 kx # the USE_TARGET_DEST_DIR_SYSROOT variable with value 'no':
410 kx #
410 kx # USE_TARGET_DEST_DIR_SYSROOT = no
410 kx #
410 kx USE_TARGET_DEST_DIR_SYSROOT = no
410 kx
410 kx
410 kx include ../../../build-system/core.mk
410 kx
410 kx
410 kx ARCH = $(shell echo $(TARGET) | cut -f1 -d'-')
410 kx
410 kx cargo-flags = +$(RUST_TOOLCHAIN) --config $(cross_file)
410 kx cargo-target-dir = $(CURDIR)/$(TARGET_BUILD_DIR)/target
410 kx rust-target = $(TARGET)
410 kx
410 kx $(bin_target): $(cargo_toml) $(bin_src)
410 kx @mkdir -p $(build_dir)/
410 kx @cp -a package/* $(build_dir)/
410 kx @echo "======= Create cross file: ======="
410 kx @echo '' > $(cross_file)
410 kx @echo '[target.$(rust-target)]' >> $(cross_file)
410 kx @echo 'rustflags = [' >> $(cross_file)
410 kx @echo ' "-C", "linker=$(CROSS_PREFIX)gcc",' >> $(cross_file)
410 kx @echo ' "--cap-lints", "allow",' >> $(cross_file)
410 kx @echo ']' >> $(cross_file)
410 kx #
410 kx # RUSTFLAGS='-C linker=$(CROSS_PREFIX)gcc --cap-lints allow'
410 kx #
410 kx @echo "======= Build the `basename $(bin_target)` executable: ======="
410 kx @cd $(build_dir) && CARGO_HOME=$(CARGO_HOME) \
410 kx RUSTUP_HOME=$(RUSTUP_HOME) \
410 kx CARGO_BUILD_RUSTC=$(RUSTC) \
410 kx CARGO_BUILD_TARGET='$(rust-target)' \
410 kx CARGO_TARGET_DIR='$(cargo-target-dir)' \
410 kx $(CARGO) $(cargo-flags) build --verbose --release --bin main
410 kx @cp $(TARGET_BUILD_DIR)/target/$(TARGET)/release/main $(TARGET_BUILD_DIR)/
410 kx @touch $@
410 kx
410 kx $(info_target): $(bin_target)
410 kx @echo "==================================="
410 kx @echo "======= Environment: ======="
410 kx @echo "==================================="
410 kx @echo "======= RUST_TOOLCHAIN = '$(RUST_TOOLCHAIN)'"
410 kx @echo "======= CARGO_HOME = '$(CARGO_HOME)'"
410 kx @echo "======= RUSTUP_HOME = '$(RUSTUP_HOME)'"
410 kx @echo "======= RUSTC = '$(RUSTC)'"
410 kx @echo "======= RUSTDOC = '$(RUSTDOC)'"
410 kx @echo "======= RUSTFMT = '$(RUSTFMT)'"
410 kx @echo "======= CBINDGEN = '$(CBINDGEN)'"
410 kx @echo "======= RUST_PATH = '$(RUST_PATH)'"
410 kx @echo ""
410 kx @echo "#"
410 kx @echo "# Please find the `basename $(bin_target)` executable in the $(TARGET_BUILD_DIR)/ directory."
410 kx @echo "#"
410 kx @echo "# Run the `basename $(bin_target)` executable:"
410 kx @echo ""
410 kx @$(BUILDSYSTEM)/usr/bin/qemu-$(ARCH) \
410 kx $(TOOLCHAIN_PATH)/$(TARGET)/sys-root/$(shell $(PATCHELF) --print-interpreter $(bin_target) | sed 's,^\/,,') \
410 kx --library-path $(TOOLCHAIN_PATH)/$(TARGET)/lib:$(TOOLCHAIN_PATH)/$(TARGET)/sys-root/lib:$(TOOLCHAIN_PATH)/$(TARGET)/sys-root/usr/lib \
410 kx $(bin_target)
410 kx @echo ""
410 kx @touch $@