| # Copyright 2016 The Weave Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Logic to easily run cross-compiling tests. |
| |
| CROSS_ROOT := $(PWD)/third_party/cross |
| CROSS_FLAGS := |
| DOWNLOAD_CROSS_TOOLCHAINS := no |
| QEMU_BASE := $(CROSS_ROOT)/app-emulation/qemu/usr/bin |
| |
| define cross-setup-gcc |
| .PHONY: $(1) |
| ifneq (,$$(findstring $(1),$$(MAKECMDGOALS))) |
| DOWNLOAD_CROSS_TOOLCHAINS := yes |
| CHOST := $(2) |
| BOARD := $(3) |
| CROSS := $$(CROSS_ROOT)/$$(CHOST)/bin/$$(CHOST)- |
| CC := $$(CROSS)gcc |
| CXX := $$(CROSS)g++ |
| AR := $$(CROSS)ar |
| CROSS_FLAGS += $(5) |
| QEMU := $$(QEMU_BASE)/$(4) -L $$(CROSS_ROOT)/$$(BOARD) |
| endif |
| endef |
| |
| # Whitespace matters with arguments, so we can't make this more readable :/. |
| $(eval $(call cross-setup-gcc,cross-arm,armv7a-cros-linux-gnueabi,arm-generic-full,qemu-arm,-mhard-float)) |
| $(eval $(call cross-setup-gcc,cross-mipsel,mipsel-cros-linux-gnu,mipsel-o32-generic-full,qemu-mipsel)) |
| $(eval $(call cross-setup-gcc,cross-x86,i686-pc-linux-gnu,x86-generic-full,qemu-i386)) |
| $(eval $(call cross-setup-gcc,cross-x86_64,x86_64-cros-linux-gnu,amd64-generic-full,qemu-x86_64)) |
| |
| ifeq ($(DOWNLOAD_CROSS_TOOLCHAINS),yes) |
| ifeq (,$(wildcard third_party/cross/$(BOARD))) |
| CROSS_FETCH_OUT := $(shell ./third_party/get_cross.sh >&2) |
| endif |
| CROSS_FLAGS += --sysroot $(CROSS_ROOT)/$(BOARD) |
| CC += $(CROSS_FLAGS) |
| CXX += $(CROSS_FLAGS) |
| endif |