firmware: migrate last vestiges of the old runtime build system.

This commit is contained in:
whitequark 2017-02-03 12:53:25 +00:00
parent cde2054926
commit b9cbedceb1
13 changed files with 78 additions and 95 deletions

View File

@ -1,4 +1,3 @@
graft artiq/runtime
graft artiq/firmware graft artiq/firmware
graft artiq/examples graft artiq/examples
include artiq/gui/logo*.svg include artiq/gui/logo*.svg

View File

@ -0,0 +1,37 @@
include ../include/generated/variables.mak
include $(MISOC_DIRECTORY)/software/common.mak
CFLAGS += \
-I$(LIBUNWIND_DIRECTORY) \
-I$(LIBUNWIND_DIRECTORY)/../unwinder/include \
-I$(MISOC_DIRECTORY)/software/include/dyld
CFLAGS += -DNDEBUG
LDFLAGS += --eh-frame-hdr \
-L../libcompiler-rt \
-L../libbase \
-L../libm \
-L../libunwind \
-L../libdyld
RUSTFLAGS += -Cpanic=unwind
all: ksupport.elf
.PHONY: $(RUSTOUT)/libksupport.a
$(RUSTOUT)/libksupport.a:
$(cargo) --manifest-path $(KSUPPORT_DIRECTORY)/Cargo.toml
ksupport.elf: $(RUSTOUT)/libksupport.a glue.o artiq_personality.o
$(LD) $(LDFLAGS) -T $(KSUPPORT_DIRECTORY)/ksupport.ld -o $@ $^ \
-lbase -lm -lcompiler-rt -ldyld -lunwind
@chmod -x $@
%.o: $(KSUPPORT_DIRECTORY)/%.c
$(compile)
clean:
$(RM) *.o ksupport.elf
$(RM) -rf cargo
.PHONY: all clean

View File

@ -0,0 +1,32 @@
include ../include/generated/variables.mak
include $(MISOC_DIRECTORY)/software/common.mak
LDFLAGS += -L../libbase
RUSTFLAGS += -Cpanic=abort
all: runtime.bin runtime.fbi
.PHONY: $(RUSTOUT)/libruntime.a
$(RUSTOUT)/libruntime.a:
$(cargo) --manifest-path $(RUNTIME_DIRECTORY)/Cargo.toml
runtime.elf: $(RUSTOUT)/libruntime.a ksupport_data.o
$(LD) $(LDFLAGS) -T $(RUNTIME_DIRECTORY)/runtime.ld -o $@ $^
@chmod -x $@
ksupport_data.o: ../ksupport/ksupport.elf
$(LD) -r -b binary -o $@ $<
%.bin: %.elf
$(OBJCOPY) -O binary $< $@
@chmod -x $@
%.fbi: %.bin
@echo " MSCIMG " $@ && $(PYTHON) -m misoc.tools.mkmscimg -f -o $@ $<
clean:
$(RM) *.o runtime.elf runtime.bin runtime.fbi
$(RM) -rf cargo
.PHONY: all clean

View File

@ -13,11 +13,11 @@ pub unsafe fn start() {
stop(); stop();
extern { extern {
static _binary_ksupport_elf_start: u8; static _binary____ksupport_ksupport_elf_start: u8;
static _binary_ksupport_elf_end: u8; static _binary____ksupport_ksupport_elf_end: u8;
} }
let ksupport_start = &_binary_ksupport_elf_start as *const _; let ksupport_start = &_binary____ksupport_ksupport_elf_start as *const _;
let ksupport_end = &_binary_ksupport_elf_end as *const _; let ksupport_end = &_binary____ksupport_ksupport_elf_end as *const _;
ptr::copy_nonoverlapping(ksupport_start, ptr::copy_nonoverlapping(ksupport_start,
(KERNELCPU_EXEC_ADDRESS - KSUPPORT_HEADER_SIZE) as *mut u8, (KERNELCPU_EXEC_ADDRESS - KSUPPORT_HEADER_SIZE) as *mut u8,
ksupport_end as usize - ksupport_start as usize); ksupport_end as usize - ksupport_start as usize);

View File

@ -48,5 +48,6 @@ def build_artiq_soc(soc, argdict):
builder.add_software_package("libm") builder.add_software_package("libm")
builder.add_software_package("libdyld") builder.add_software_package("libdyld")
builder.add_software_package("libunwind") builder.add_software_package("libunwind")
builder.add_software_package("runtime", os.path.join(artiq_dir, "runtime")) builder.add_software_package("ksupport", os.path.join(artiq_dir, "firmware", "ksupport"))
builder.add_software_package("runtime", os.path.join(artiq_dir, "firmware", "runtime"))
builder.build() builder.build()

View File

@ -1,86 +0,0 @@
include ../include/generated/variables.mak
include $(MISOC_DIRECTORY)/software/common.mak
PYTHON ?= python3
CARGO_normal := env
CARGO_quiet = @echo " CARGO " $@ && $(CARGO_normal)
ifeq ($(V),1)
CARGO = $(CARGO_normal)
else
CARGO = $(CARGO_quiet)
endif
RUSTOUT := cargo/or1k-unknown-none/debug
RUSTOUT_KSUPPORT := cargo-ksupport/or1k-unknown-none/debug
CFLAGS += \
-I$(LIBUNWIND_DIRECTORY) \
-I$(LIBUNWIND_DIRECTORY)/../unwinder/include \
-I$(MISOC_DIRECTORY)/software/include/dyld
CFLAGS += -DNDEBUG
LDFLAGS += --gc-sections \
-L../libcompiler-rt \
-L../libbase \
-L../libm \
-L../libunwind \
-L../libdyld
RUSTFLAGS = \
-C target-feature=+mul,+div,+ffl1,+cmov,+addc \
-C relocation-model=static \
-C opt-level=s \
-C panic=abort
export RUSTFLAGS
all: runtime.bin runtime.fbi
.PHONY: $(RUSTOUT)/libruntime.a
$(RUSTOUT)/libruntime.a:
$(CARGO) \
CARGO_TARGET_DIR=$(realpath .)/cargo \
cargo build --target=or1k-unknown-none \
--manifest-path $(realpath $(RUNTIME_DIRECTORY)/../firmware/runtime/Cargo.toml)
runtime.elf: $(RUSTOUT)/libruntime.a ksupport_data.o
$(LD) $(LDFLAGS) -T $(RUNTIME_DIRECTORY)/runtime.ld -o $@ $^
@chmod -x $@
.PHONY: $(RUSTOUT_KSUPPORT)/libksupport.a
$(RUSTOUT_KSUPPORT)/libksupport.a:
$(CARGO) \
CARGO_TARGET_DIR=$(realpath .)/cargo-ksupport \
cargo build --target=or1k-unknown-none \
--manifest-path $(realpath $(RUNTIME_DIRECTORY)/../firmware/ksupport/Cargo.toml)
ksupport.elf: $(RUSTOUT_KSUPPORT)/libksupport.a ksupport_glue.o artiq_personality.o
$(LD) $(LDFLAGS) \
--eh-frame-hdr \
-T $(RUNTIME_DIRECTORY)/ksupport.ld \
-o $@ \
$^ \
-lbase -lm -lcompiler-rt -ldyld -lunwind
@chmod -x $@
%.o: $(RUNTIME_DIRECTORY)/%.c
$(compile)
%.bin: %.elf
$(OBJCOPY) -O binary $< $@
@chmod -x $@
%_data.o: %.elf
$(LD) -r -b binary -o $@ $<
%.fbi: %.bin
@echo " MSCIMG " $@ && $(PYTHON) -m misoc.tools.mkmscimg -f -o $@ $<
clean:
$(RM) $(OBJECTS) $(OBJECTS_KSUPPORT)
$(RM) runtime.elf runtime.bin runtime.fbi .*~ *~
$(RM) ksupport.elf ksupport.bin
$(RM) -rf cargo
.PHONY: all clean

View File

@ -1,4 +1,4 @@
CC ?= clang CC ?= clang
libartiq_support.so: ../../runtime/artiq_personality.c artiq_terminate.c artiq_time.c libartiq_support.so: ../../firmware/ksupport/artiq_personality.c artiq_terminate.c artiq_time.c
$(CC) -std=c99 -Wall -Werror -I. -I../../runtime -g -fPIC -shared -o $@ $^ $(CC) -std=c99 -Wall -Werror -I. -I../../firmware/ksupport -g -fPIC -shared -o $@ $^

View File

@ -15,7 +15,7 @@ requirements:
- python 3.5.2 - python 3.5.2
- setuptools - setuptools
- migen 0.5.dev py_54+git58e8f45 - migen 0.5.dev py_54+git58e8f45
- misoc 0.6.dev py_2+git02884fe - misoc 0.6.dev py_4+git40e9940
- jesd204b 0.2 - jesd204b 0.2
- binutils-or1k-linux >=2.27 - binutils-or1k-linux >=2.27
- llvm-or1k - llvm-or1k