Skip to content

Commit

Permalink
Merge pull request #49 from keystone-enclave/dev-unified-builds
Browse files Browse the repository at this point in the history
Unified the hifive and qemu build repos. This now supports building f…
  • Loading branch information
dkohlbre committed Feb 12, 2019
2 parents 959f77d + 34007fe commit 6dcc2d0
Show file tree
Hide file tree
Showing 19 changed files with 1,116 additions and 44 deletions.
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,6 @@
[submodule "linux-keystone-driver"]
path = linux-keystone-driver
url = https://github.com/keystone-enclave/linux-keystone-driver
[submodule "buildroot"]
path = buildroot
url = https://github.com/keystone-enclave/buildroot.git
34 changes: 22 additions & 12 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,23 @@ addons:
apt:
packages:
- expect
- autoconf
- automake
- autotools-dev
- bc
- bison
- build-essential
- curl
- expat
- libexpat-dev
- flex
- autoconf
- automake
- autotools-dev
- bc
- bison
- build-essential
- curl
- expat
- libexpat-dev
- flex
- gawk
- gcc
- git
- gperf
- libgmp-dev
- libmpc-dev
- libmpfr-dev
- libmpfr-dev
- libtool
- texinfo
- tmux
Expand All @@ -44,11 +44,14 @@ addons:
- pkg-config
- libglib2.0-dev
- libpixman-1-dev
- libssl-dev

branches:
only:
- dev
- master


before_install:
- git submodule init -- riscv-linux
- git submodule init -- riscv-qemu
Expand All @@ -63,8 +66,15 @@ jobs:
- stage: build everything & test
script:
- source ./source.sh
- travis_wait 120 make
- travis_wait 120 make -j2
- travis_wait 10 ./scripts/travis.sh
after_failure:
- cat screenlog.0
- cat output.log
- stage: build hifive & test
script:
- source ./source.sh
- travis_wait 120 make -j2 hifive
after_failure:
- cat screenlog.0
- cat output.log
53 changes: 31 additions & 22 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,71 +1,80 @@
LINUX_DIR=riscv-linux
LINUX_SRC_DIR=riscv-linux
BUSYBEAR_DIR=busybear-linux
BOOTROM_DIR=bootrom
SM_DIR=riscv-pk
SM_BUILD_DIR=$(SM_DIR)/build
DRIVER_DIR=linux-keystone-driver
DRIVER_DIR=$(shell pwd)/linux-keystone-driver
SDK_DIR=sdk
QEMU_DIR=riscv-qemu
QEMU_WORK=$(shell pwd)/qemu-work
LINUX_QEMU_OUT=$(QEMU_WORK)/linux

BOOTROM=$(BOOTROM_DIR)/bootrom.elf
VMLINUX=$(LINUX_DIR)/vmlinux
VMLINUX=$(LINUX_QEMU_OUT)/vmlinux
SM=$(SM_DIR)/build/bbl

DISK=$(BUSYBEAR_DIR)/busybear.bin
DRIVER=$(DRIVER_DIR)/keystone-driver.ko
LINUX_CONFIG=$(LINUX_DIR)/.config
LINUX_CONFIG=$(LINUX_QEMU_OUT)/.config
QEMU=$(QEMU_DIR)/riscv64-softmmu/qemu-system-riscv64

NPROC=$(shell nproc)

all: $(BOOTROM) $(VMLINUX) $(SM) $(DISK) $(DRIVER) $(QEMU)
make -C $(SM_BUILD_DIR)
make -C $(SDK_DIR)
make -C $(SDK_DIR) copy-tests
make -C $(DRIVER_DIR) copy
$(MAKE) -C $(SM_BUILD_DIR)
$(MAKE) -C $(SDK_DIR)
$(MAKE) -C $(SDK_DIR) copy-tests
$(MAKE) -C $(DRIVER_DIR) copy

qemu: all
./scripts/run-qemu.sh

hifive: hifive.mk
$(MAKE) -f hifive.mk

$(QEMU):
./scripts/apply-patch.sh
cd $(QEMU_DIR); ./configure --target-list=riscv64-softmmu,riscv32-softmmu;
make -C $(QEMU_DIR)
$(MAKE) -C $(QEMU_DIR)

$(SM): $(VMLINUX) $(SM_BUILD_DIR)
make -C $(SM_BUILD_DIR)
$(MAKE) -C $(SM_BUILD_DIR)

$(SM_BUILD_DIR): $(VMLINUX)
mkdir -p $(SM_BUILD_DIR)
cd $(SM_BUILD_DIR); ../configure \
--enable-logo \
--host=riscv64-unknown-elf \
--with-payload=../../$(VMLINUX) \
--with-payload=$(VMLINUX) \
--enable-sm

$(DRIVER): $(VMLINUX) $(LINUX_CONFIG)
make -C $(DRIVER_DIR)
$(MAKE) -C $(LINUX_SRC_DIR) O=$(LINUX_QEMU_OUT) ARCH=riscv SUBDIRS=$(DRIVER_DIR) modules

$(DISK):
make -C $(BUSYBEAR_DIR)
$(MAKE) -C $(BUSYBEAR_DIR)
sudo chmod og+w $(DISK)

$(LINUX_CONFIG):
cp $(BUSYBEAR_DIR)/conf/linux.config $(LINUX_DIR)/.config
make -C $(LINUX_DIR) ARCH=riscv olddefconfig
mkdir -p $(LINUX_QEMU_OUT)
cp $(BUSYBEAR_DIR)/conf/linux.config $(LINUX_CONFIG)
$(MAKE) -C $(LINUX_SRC_DIR) O=$(LINUX_QEMU_OUT) ARCH=riscv olddefconfig

$(VMLINUX): $(LINUX_CONFIG)
./scripts/apply-patch.sh
make -C $(LINUX_DIR) ARCH=riscv -j$(NPROC) vmlinux
$(MAKE) -C $(LINUX_SRC_DIR) O=$(LINUX_QEMU_OUT) ARCH=riscv -j$(NPROC) vmlinux

$(BOOTROM):
cd bootrom; make; cd ..

clean:
rm -f $(LINUX_CONFIG)
make -C $(LINUX_DIR) ARCH=riscv clean
make -C $(BUSYBEAR_DIR) clean
make -C $(BOOTROM_DIR) clean
make -C $(SM_BUILD_DIR) clean
make -C $(DRIVER_DIR) clean
make -C $(QEMU_DIR) clean
$(MAKE) -C $(LINUX_SRC_DIR) O=$(LINUX_QEMU_OUT) ARCH=riscv clean
$(MAKE) -C $(BUSYBEAR_DIR) clean
$(MAKE) -C $(BOOTROM_DIR) clean
$(MAKE) -C $(SM_BUILD_DIR) clean
$(MAKE) -C $(DRIVER_DIR) clean
$(MAKE) -C $(QEMU_DIR) clean

hifive-clean:
$(MAKE) -f hifive.mk clean
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Setup Tools and Submodules
./fast-setup.sh
```

Build All
Build All for QEMU
```
make
```
Expand All @@ -37,7 +37,7 @@ Run QEMU
./scripts/run-qemu.sh
```

Test
Test

login with `root`/`busybear`.

Expand Down
1 change: 1 addition & 0 deletions buildroot
Submodule buildroot added at 355223
12 changes: 6 additions & 6 deletions fast-setup.sh
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
#!/bin/bash

echo "Starting..."
if ( $(command -v riscv64-unknown-linux-gnu-gcc > /dev/null) &&
if ( $(command -v riscv64-unknown-linux-gnu-gcc > /dev/null) &&
$(command -v riscv64-unknown-elf-gcc > /dev/null) )
then
echo "RISCV tools are already installed"
else
echo "Downloading Prebuilt RISC-V Toolchain... "
export RISCV=$(pwd)/riscv
export PATH=$PATH:$RISCV/bin
git clone https://github.com/keystone-enclave/firesim-riscv-tools-prebuilt.git --depth 1

cd firesim-riscv-tools-prebuilt
./installrelease.sh > riscv-tools-install.log
mv distrib riscv
wget https://github.com/keystone-enclave/firesim-riscv-tools-prebuilt/archive/1.0.tar.gz
tar -xzvf 1.0.tar.gz
cd firesim-riscv-tools-prebuilt-1.0
./installrelease.sh > riscv-tools-install.log
mv distrib riscv
cp -R riscv ../
cd ..
echo "Toolchain has been installed in $RISCV"
Expand Down
39 changes: 39 additions & 0 deletions hifive-conf/buildroot_initramfs_config
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
BR2_riscv64=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_PATH="$(RISCV)"
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="$(ARCH)-unknown-linux-gnu"
BR2_TOOLCHAIN_EXTERNAL_GCC_7=y
BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_6=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
BR2_TOOLCHAIN_EXTERNAL_INET_RPC=y
BR2_TOOLCHAIN_EXTERNAL_CXX=y
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y
BR2_TARGET_GENERIC_ROOT_PASSWD="sifive"
BR2_SYSTEM_DHCP="eth0"
BR2_PACKAGE_DHRYSTONE=y
BR2_PACKAGE_LMBENCH=y
BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_MTD=y
# BR2_PACKAGE_MTD_NANDDUMP is not set
# BR2_PACKAGE_MTD_NANDTEST is not set
# BR2_PACKAGE_MTD_NANDWRITE is not set
# BR2_PACKAGE_MTD_UBIATTACH is not set
# BR2_PACKAGE_MTD_UBICRC32 is not set
# BR2_PACKAGE_MTD_UBIDETACH is not set
# BR2_PACKAGE_MTD_UBIFORMAT is not set
# BR2_PACKAGE_MTD_UBIMKVOL is not set
# BR2_PACKAGE_MTD_UBINFO is not set
# BR2_PACKAGE_MTD_UBINIZE is not set
# BR2_PACKAGE_MTD_UBIRENAME is not set
# BR2_PACKAGE_MTD_UBIRMVOL is not set
# BR2_PACKAGE_MTD_UBIRSVOL is not set
# BR2_PACKAGE_MTD_UBIUPDATEVOL is not set
# BR2_PACKAGE_MTD_UBIBLOCK is not set
BR2_PACKAGE_GPTFDISK=y
BR2_PACKAGE_GPTFDISK_GDISK=y
BR2_PACKAGE_GPTFDISK_SGDISK=y
BR2_PACKAGE_PCIUTILS=y
BR2_PACKAGE_DROPBEAR=y
BR2_PACKAGE_SCREEN=y
BR2_PACKAGE_HTOP=y
BR2_PACKAGE_HOST_MKE2IMG=y
78 changes: 78 additions & 0 deletions hifive-conf/buildroot_rootfs_config
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
BR2_riscv64=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_PATH="$(RISCV)"
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="$(ARCH)-unknown-linux-gnu"
BR2_TOOLCHAIN_EXTERNAL_GCC_7=y
BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_6=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
# BR2_TOOLCHAIN_EXTERNAL_INET_RPC is not set
BR2_TOOLCHAIN_EXTERNAL_CXX=y
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y
BR2_TARGET_GENERIC_ROOT_PASSWD="sifive"
BR2_SYSTEM_DHCP="eth0"
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
BR2_PACKAGE_BONNIE=y
BR2_PACKAGE_CACHE_CALIBRATOR=y
BR2_PACKAGE_DHRYSTONE=y
BR2_PACKAGE_LMBENCH=y
BR2_PACKAGE_RAMSMP=y
BR2_PACKAGE_RAMSPEED=y
BR2_PACKAGE_STRESS_NG=y
BR2_PACKAGE_WHETSTONE=y
BR2_PACKAGE_PCIUTILS=y
BR2_PACKAGE_MSMTP=y
BR2_PACKAGE_MUTT=y
BR2_PACKAGE_MUTT_IMAP=y
BR2_PACKAGE_MUTT_POP3=y
BR2_PACKAGE_BASH=y
BR2_PACKAGE_WHICH=y
BR2_PACKAGE_COREUTILS=y
BR2_PACKAGE_UTIL_LINUX=y
BR2_PACKAGE_UTIL_LINUX_BINARIES=y
BR2_PACKAGE_UTIL_LINUX_AGETTY=y
BR2_PACKAGE_UTIL_LINUX_BFS=y
BR2_PACKAGE_UTIL_LINUX_CHFN_CHSH=y
BR2_PACKAGE_UTIL_LINUX_CRAMFS=y
BR2_PACKAGE_UTIL_LINUX_EJECT=y
BR2_PACKAGE_UTIL_LINUX_FALLOCATE=y
BR2_PACKAGE_UTIL_LINUX_FDFORMAT=y
BR2_PACKAGE_UTIL_LINUX_FINDFS=y
BR2_PACKAGE_UTIL_LINUX_FSCK=y
BR2_PACKAGE_UTIL_LINUX_HWCLOCK=y
BR2_PACKAGE_UTIL_LINUX_KILL=y
BR2_PACKAGE_UTIL_LINUX_LAST=y
BR2_PACKAGE_UTIL_LINUX_LINE=y
BR2_PACKAGE_UTIL_LINUX_LOGIN_UTILS=y
BR2_PACKAGE_UTIL_LINUX_LOSETUP=y
BR2_PACKAGE_UTIL_LINUX_LSBLK=y
BR2_PACKAGE_UTIL_LINUX_MESG=y
BR2_PACKAGE_UTIL_LINUX_MINIX=y
BR2_PACKAGE_UTIL_LINUX_MORE=y
BR2_PACKAGE_UTIL_LINUX_MOUNT=y
BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT=y
BR2_PACKAGE_UTIL_LINUX_NEWGRP=y
BR2_PACKAGE_UTIL_LINUX_NOLOGIN=y
BR2_PACKAGE_UTIL_LINUX_NSENTER=y
BR2_PACKAGE_UTIL_LINUX_PARTX=y
BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT=y
BR2_PACKAGE_UTIL_LINUX_RAW=y
BR2_PACKAGE_UTIL_LINUX_RENAME=y
BR2_PACKAGE_UTIL_LINUX_RESET=y
BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS=y
BR2_PACKAGE_UTIL_LINUX_SETPRIV=y
BR2_PACKAGE_UTIL_LINUX_SETTERM=y
BR2_PACKAGE_UTIL_LINUX_SWITCH_ROOT=y
BR2_PACKAGE_UTIL_LINUX_TUNELP=y
BR2_PACKAGE_UTIL_LINUX_UL=y
BR2_PACKAGE_UTIL_LINUX_UNSHARE=y
BR2_PACKAGE_UTIL_LINUX_UTMPDUMP=y
BR2_PACKAGE_UTIL_LINUX_UUIDD=y
BR2_PACKAGE_UTIL_LINUX_VIPW=y
BR2_PACKAGE_UTIL_LINUX_WALL=y
BR2_PACKAGE_UTIL_LINUX_WDCTL=y
BR2_PACKAGE_UTIL_LINUX_WRITE=y
BR2_PACKAGE_UTIL_LINUX_ZRAMCTL=y
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS=10240
# BR2_TARGET_ROOTFS_TAR is not set
4 changes: 4 additions & 0 deletions hifive-conf/initramfs.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
dir /dev 755 0 0
nod /dev/console 644 0 0 c 5 1
nod /dev/null 644 0 0 c 1 3
slink /init /bin/busybox 755 0 0

0 comments on commit 6dcc2d0

Please sign in to comment.