Add OpenOCD (and libusb) as another target
You can now ask to build "*-gcc" to just get the GCC builds, or "*-openocd" to just get the OpenOCD builds.
This commit is contained in:
parent
259941f5c8
commit
774b491d06
|
@ -4,3 +4,9 @@
|
|||
[submodule "src/libexpat"]
|
||||
path = src/libexpat
|
||||
url = git://github.com/libexpat/libexpat
|
||||
[submodule "src/riscv-openocd"]
|
||||
path = src/riscv-openocd
|
||||
url = git://github.com/riscv/riscv-openocd.git
|
||||
[submodule "src/libusb"]
|
||||
path = src/libusb
|
||||
url = git://github.com/libusb/libusb.git
|
||||
|
|
89
Makefile
89
Makefile
|
@ -17,20 +17,30 @@ OBJ_UBUNTU := $(OBJDIR)/$(UBUNTU)
|
|||
OBJ_WIN64 := $(OBJDIR)/$(WIN64)
|
||||
|
||||
SRC_RGT := $(SRCDIR)/riscv-gnu-toolchain
|
||||
SRC_ROCD := $(SRCDIR)/riscv-openocd
|
||||
SRC_EXPAT := $(SRCDIR)/libexpat/expat
|
||||
SRC_ZLIB := $(SRCDIR)/zlib
|
||||
SRC_LIBUSB := $(SRCDIR)/libusb
|
||||
|
||||
# The version that will be appended to the various tool builds.
|
||||
RGT_VERSION ?= $(shell cd $(SRC_RGT); git describe --tags | sed s/^v//g)
|
||||
ROCD_VERSION ?= $(shell cd $(SRC_ROCD); git describe --tags | sed s/^v//g)
|
||||
|
||||
# The actual output of this repository is a set of tarballs.
|
||||
.PHONY: win64
|
||||
win64: $(BINDIR)/riscv64-unknown-elf-gcc-$(RGT_VERSION)-$(WIN64).zip
|
||||
win64: $(BINDIR)/riscv64-unknown-elf-gcc-$(RGT_VERSION)-$(WIN64).tar.gz
|
||||
win64: $(BINDIR)/riscv64-unknown-elf-gcc-$(RGT_VERSION)-$(WI64).src.tar.gz
|
||||
.PHONY: ubuntu
|
||||
ubuntu: $(BINDIR)/riscv64-unknown-elf-gcc-$(RGT_VERSION)-$(UBUNTU).tar.gz
|
||||
ubuntu: $(BINDIR)/riscv64-unknown-elf-gcc-$(RGT_VERSION)-$(UBUNTU).src.tar.gz
|
||||
.PHONY: windows windows-openocd windows-gcc
|
||||
win64: win64-openocd win64-gcc
|
||||
win64-gcc: $(BINDIR)/riscv64-unknown-elf-gcc-$(RGT_VERSION)-$(WIN64).zip
|
||||
win64-gcc: $(BINDIR)/riscv64-unknown-elf-gcc-$(RGT_VERSION)-$(WIN64).tar.gz
|
||||
win64-gcc: $(BINDIR)/riscv64-unknown-elf-gcc-$(RGT_VERSION)-$(WIN64).src.tar.gz
|
||||
win64-openocd: $(BINDIR)/riscv-openocd-$(ROCD_VERSION)-$(WIN64).zip
|
||||
win64-openocd: $(BINDIR)/riscv-openocd-$(ROCD_VERSION)-$(WIN64).tar.gz
|
||||
win64-openocd: $(BINDIR)/riscv-openocd-$(ROCD_VERSION)-$(WIN64).src.tar.gz
|
||||
.PHONY: ubuntu ubuntu-gcc ubuntu-openocd
|
||||
ubuntu: ubuntu-gcc ubuntu-openocd
|
||||
ubuntu-gcc: $(BINDIR)/riscv64-unknown-elf-gcc-$(RGT_VERSION)-$(UBUNTU).tar.gz
|
||||
ubuntu-gcc: $(BINDIR)/riscv64-unknown-elf-gcc-$(RGT_VERSION)-$(UBUNTU).src.tar.gz
|
||||
ubuntu-openocd: $(BINDIR)/riscv-openocd-$(ROCD_VERSION)-$(UBUNTU).tar.gz
|
||||
ubuntu-openocd: $(BINDIR)/riscv-openocd-$(ROCD_VERSION)-$(UBUNTU).src.tar.gz
|
||||
|
||||
# FIXME: Check to see if the Windows tools should be built based on the
|
||||
# presence of the Windows cross compiler.
|
||||
|
@ -39,7 +49,7 @@ all: ubuntu
|
|||
|
||||
# Some special riscv-gnu-toolchain configure flags for specific targets.
|
||||
i686-w64-mingw32-rgt-configure := --without-system-zlib
|
||||
i686-w64-mingw32-rocd-vars := LIBUSB1_LIBS="-L$(abspath $(OBJ_WIN64)/install/riscv-openocd-$(RGT_VERSION)-$(WIN64))/lib"
|
||||
i686-w64-mingw32-rocd-vars := LIBUSB1_LIBS="-L$(abspath $(OBJ_WIN64)/install/riscv-openocd-$(ROCD_VERSION)-$(WIN64))/lib"
|
||||
|
||||
# There's enough % rules that make starts blowing intermediate files away.
|
||||
.SECONDARY:
|
||||
|
@ -108,6 +118,69 @@ $(OBJDIR)/%/build/expat/configure:
|
|||
cd $(dir $@); ./buildconf.sh
|
||||
touch -c $@
|
||||
|
||||
# The OpenOCD builds go here
|
||||
$(BINDIR)/riscv-openocd-$(ROCD_VERSION)-%.zip: \
|
||||
$(OBJDIR)/%/stamps/riscv-openocd/install.stamp
|
||||
$(eval $@_TARGET := $(patsubst $(BINDIR)/riscv-openocd-$(ROCD_VERSION)-%.zip,%,$@))
|
||||
mkdir -p $(dir $@)
|
||||
cd $(OBJDIR)/$($@_TARGET)/install; zip -r $(abspath $@) riscv-openocd-$(ROCD_VERSION)-$($@_TARGET)
|
||||
|
||||
$(BINDIR)/riscv-openocd-$(ROCD_VERSION)-%.tar.gz: \
|
||||
$(OBJDIR)/%/stamps/riscv-openocd/install.stamp
|
||||
$(eval $@_TARGET := $(patsubst $(BINDIR)/riscv-openocd-$(ROCD_VERSION)-%.tar.gz,%,$@))
|
||||
mkdir -p $(dir $@)
|
||||
tar -C $(OBJDIR)/$($@_TARGET)/install -c riscv-openocd-$(ROCD_VERSION)-$($@_TARGET) | gzip > $(abspath $@)
|
||||
|
||||
$(BINDIR)/riscv-openocd-$(ROCD_VERSION)-%.src.tar.gz: \
|
||||
$(OBJDIR)/%/stamps/riscv-openocd/install.stamp
|
||||
$(eval $@_TARGET := $(patsubst $(BINDIR)/riscv-openocd-$(ROCD_VERSION)-%.src.tar.gz,%,$@))
|
||||
mkdir -p $(dir $@)
|
||||
tar -C $(OBJDIR)/$($@_TARGET)/build -c . | gzip > $(abspath $@)
|
||||
|
||||
$(OBJDIR)/%/stamps/riscv-openocd/install.stamp: \
|
||||
$(OBJDIR)/%/stamps/libusb/install.stamp \
|
||||
$(OBJDIR)/%/build/riscv-openocd/configure
|
||||
$(eval $@_TARGET := $(patsubst $(OBJDIR)/%/stamps/riscv-openocd/install.stamp,%,$@))
|
||||
$(eval $@_BUILD := $(patsubst %/stamps/riscv-openocd/install.stamp,%/build/riscv-openocd,$@))
|
||||
$(eval $@_INSTALL := $(patsubst %/stamps/riscv-openocd/install.stamp,%/install/riscv-openocd-$(ROCD_VERSION)-$($@_TARGET),$@))
|
||||
mkdir -p $($@_BUILD)
|
||||
cd $($@_BUILD); $($($@_TARGET)-rocd-vars) ./configure --prefix=$(abspath $($@_INSTALL)) --host=$($@_TARGET) --enable-remote-bitbang --disable-werror --enable-ftdi
|
||||
$(MAKE) -C $($@_BUILD)
|
||||
$(MAKE) -C $($@_BUILD) install
|
||||
mkdir -p $(dir $@)
|
||||
date > $@
|
||||
|
||||
$(OBJDIR)/%/build/riscv-openocd/configure:
|
||||
rm -rf $(dir $@)
|
||||
mkdir -p $(dir $@)
|
||||
cp -r $(SRC_ROCD)/* $(dir $@)
|
||||
cd $(dir $@); autoreconf -i
|
||||
touch -c $@
|
||||
|
||||
# Use the host libusb unless we expect there to be none
|
||||
$(OBJ_WIN64)/stamps/riscv-openocd/install.stamp: \
|
||||
$(OBJ_WIN64)/stamps/libusb/install.stamp
|
||||
|
||||
# OpenOCD needs libusb
|
||||
$(OBJDIR)/%/stamps/libusb/install.stamp: \
|
||||
$(OBJDIR)/%/build/libusb/configure
|
||||
$(eval $@_TARGET := $(patsubst $(OBJDIR)/%/stamps/libusb/install.stamp,%,$@))
|
||||
$(eval $@_BUILD := $(patsubst %/stamps/libusb/install.stamp,%/build/libusb,$@))
|
||||
$(eval $@_INSTALL := $(patsubst %/stamps/libusb/install.stamp,%/install/riscv-openocd-$(ROCD_VERSION)-$($@_TARGET),$@))
|
||||
mkdir -p $($@_BUILD)
|
||||
cd $($@_BUILD); ./configure --prefix=$(abspath $($@_INSTALL)) --host=$($@_TARGET) --disable-udev
|
||||
$(MAKE) -C $($@_BUILD)
|
||||
$(MAKE) -C $($@_BUILD) install
|
||||
mkdir -p $(dir $@)
|
||||
date > $@
|
||||
|
||||
$(OBJDIR)/%/build/libusb/configure:
|
||||
rm -rf $(dir $@)
|
||||
mkdir -p $(dir $@)
|
||||
cp -r $(SRC_LIBUSB)/* $(dir $@)
|
||||
cd $(dir $@); ./autogen.sh --disable-udev
|
||||
touch -c $@
|
||||
|
||||
# Targets that don't build anything
|
||||
.PHONY: clean
|
||||
clean::
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 448eb4e38e8e3e1e2f0cd3ba8cefe64fcc6e1326
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 11008baee3c5e9b10056b28d5b1aac86e7eef37c
|
Loading…
Reference in New Issue