mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-21 22:47:50 +00:00
d182b20705
.SHELLFLAGS is extended by option pipefail to make pipes fail if any pipe element fails. As .SHELLFLAGS is exported into sub-make instances it must be unexported before calling third-party build systems recursively.
65 lines
1.5 KiB
PHP
65 lines
1.5 KiB
PHP
#
|
|
# Utility for building L4 contrib packages
|
|
#
|
|
# Variables that steer the behaviour of this makefile:
|
|
#
|
|
# TARGET - name of target
|
|
# PKGS - list of L4 packages to visit in order to create
|
|
# the target
|
|
#
|
|
|
|
ifeq ($(filter-out $(SPECS),x86_32),)
|
|
L4_BUILD_ARCH := x86_586
|
|
endif
|
|
|
|
ifeq ($(filter-out $(SPECS),x86_64),)
|
|
L4_BUILD_ARCH := amd_k9
|
|
endif
|
|
|
|
ifeq ($(filter-out $(SPECS),arm_v7a),)
|
|
L4_BUILD_ARCH := arm_armv7a
|
|
endif
|
|
|
|
ifeq ($(filter-out $(SPECS),arm_v6),)
|
|
L4_BUILD_ARCH := arm_armv6
|
|
endif
|
|
|
|
ifeq ($(filter-out $(SPECS),arm_v8),)
|
|
L4_BUILD_ARCH := arm64_armv8a
|
|
endif
|
|
|
|
|
|
ifeq ($(L4_BUILD_ARCH),)
|
|
$(error L4_BUILD_ARCH undefined, architecture not supported)
|
|
endif
|
|
|
|
L4_BUILD_OPT = CROSS_COMPILE=$(CROSS_DEV_PREFIX)
|
|
L4_PKG_DIR := $(call select_from_ports,foc)/src/kernel/foc/l4/pkg
|
|
PKG_TAGS = $(addsuffix .tag,$(addsuffix .$(BOARD),$(PKGS)))
|
|
|
|
BUILD_OUTPUT_FILTER = 2>&1 | sed "s~^~ [$*] ~"
|
|
|
|
# do not confuse third-party sub-makes
|
|
unexport .SHELLFLAGS
|
|
|
|
#
|
|
# Execute the rules in this file only at the second build stage when we know
|
|
# about the complete build settings, e.g., 'CROSS_DEV_PREFIX'.
|
|
#
|
|
ifeq ($(called_from_lib_mk),yes)
|
|
all: $(PKG_TAGS)
|
|
endif
|
|
|
|
#
|
|
# We preserve the order of processing 'l4/pkg/' directories because of
|
|
# inter-package dependencies. However, within each directory, make is working
|
|
# in parallel.
|
|
#
|
|
.NOTPARALLEL: $(PKG_TAGS)
|
|
|
|
%.$(BOARD).tag:
|
|
$(VERBOSE_MK) $(MAKE) $(VERBOSE_DIR) O=$(L4_BUILD_DIR) -C $(L4_PKG_DIR)/$* \
|
|
"$(L4_BUILD_OPT)" WARNINGS=$(WARNINGS) $(BUILD_OUTPUT_FILTER)
|
|
$(VERBOSE)mkdir -p $(dir $@) && touch $@
|
|
|