mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-09-17 14:58:16 +00:00
Merge pull request #333 from jodh-intel/improve-toplevel-makefile
build: Improve top-level Makefile
This commit is contained in:
27
Makefile
27
Makefile
@@ -3,21 +3,28 @@
|
|||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
#
|
#
|
||||||
|
|
||||||
default: runtime agent
|
# List of available components
|
||||||
|
COMPONENTS =
|
||||||
|
|
||||||
runtime:
|
COMPONENTS += agent
|
||||||
make -C src/runtime
|
COMPONENTS += runtime
|
||||||
|
COMPONENTS += trace-forwarder
|
||||||
|
|
||||||
agent:
|
# List of available tools
|
||||||
make -C src/agent
|
TOOLS =
|
||||||
|
|
||||||
test-runtime:
|
TOOLS += agent-ctl
|
||||||
make -C src/runtime test
|
|
||||||
|
|
||||||
test-agent:
|
STANDARD_TARGETS = build check clean install test
|
||||||
make -C src/agent check
|
|
||||||
|
|
||||||
test: test-runtime test-agent
|
include utils.mk
|
||||||
|
|
||||||
|
# Create the rules
|
||||||
|
$(eval $(call create_all_rules,$(COMPONENTS),$(TOOLS),$(STANDARD_TARGETS)))
|
||||||
|
|
||||||
|
# Non-standard rules
|
||||||
|
|
||||||
generate-protocols:
|
generate-protocols:
|
||||||
make -C src/agent generate-protocols
|
make -C src/agent generate-protocols
|
||||||
|
|
||||||
|
.PHONY: all default
|
||||||
|
@@ -94,9 +94,11 @@ install: build-service
|
|||||||
clean:
|
clean:
|
||||||
@cargo clean
|
@cargo clean
|
||||||
|
|
||||||
check:
|
test:
|
||||||
@cargo test --all --target $(TRIPLE)
|
@cargo test --all --target $(TRIPLE)
|
||||||
|
|
||||||
|
check: test
|
||||||
|
|
||||||
run:
|
run:
|
||||||
@cargo run --target $(TRIPLE)
|
@cargo run --target $(TRIPLE)
|
||||||
|
|
||||||
|
107
utils.mk
Normal file
107
utils.mk
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
# Copyright (c) 2020 Intel Corporation
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
|
||||||
|
# Create a set of standard rules for a project such that:
|
||||||
|
#
|
||||||
|
# - The component depends on its Makefile.
|
||||||
|
# - "build-$(component)" is an alias for "$(component)".
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
#
|
||||||
|
# $1 - Directory component lives in.
|
||||||
|
# $2 - Name of component.
|
||||||
|
#
|
||||||
|
# Note: The "clean" rule is the "odd one out" - it only depends on the
|
||||||
|
# Makefile. This ensure that running clean won't first try to build the
|
||||||
|
# project.
|
||||||
|
|
||||||
|
define make_rules
|
||||||
|
$(2) : $(1)/$(2)/Makefile
|
||||||
|
make -C $(1)/$(2)
|
||||||
|
build-$(2) : $(2)
|
||||||
|
|
||||||
|
check-$(2) : $(2)
|
||||||
|
make -C $(1)/$(2) check
|
||||||
|
|
||||||
|
clean-$(2) : $(1)/$(2)/Makefile
|
||||||
|
make -C $(1)/$(2) clean
|
||||||
|
|
||||||
|
install-$(2) : $(2)
|
||||||
|
make -C $(1)/$(2) install
|
||||||
|
|
||||||
|
test-$(2) : $(2)
|
||||||
|
make -C $(1)/$(2) test
|
||||||
|
|
||||||
|
.PHONY: \
|
||||||
|
$(2) \
|
||||||
|
build-$(2) \
|
||||||
|
clean-$(2) \
|
||||||
|
check-$(2) \
|
||||||
|
test-$(2) \
|
||||||
|
install-$(2)
|
||||||
|
endef
|
||||||
|
|
||||||
|
# Define a set of rules for a source component.
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
#
|
||||||
|
# $1 - Name of component.
|
||||||
|
|
||||||
|
define make_component_rules
|
||||||
|
$(eval $(call make_rules,src,$(1)))
|
||||||
|
endef
|
||||||
|
|
||||||
|
# Define a set of rules for a tool.
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
#
|
||||||
|
# $1 - name of tool
|
||||||
|
|
||||||
|
define make_tool_rules
|
||||||
|
$(eval $(call make_rules,tools,$(1)))
|
||||||
|
endef
|
||||||
|
|
||||||
|
# Create a "${target}-all" alias which will cause each component/tool
|
||||||
|
# rule to be called.
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
#
|
||||||
|
# $1 - List of targets to create rules for.
|
||||||
|
|
||||||
|
define make_all_rules
|
||||||
|
$(1)-all: $(foreach c,$(COMPONENTS) $(TOOLS),$(1)-$(c))
|
||||||
|
|
||||||
|
.PHONY: $(1) $(1)-all
|
||||||
|
endef
|
||||||
|
|
||||||
|
# Create all rules for the caller.
|
||||||
|
#
|
||||||
|
# Entry point to this file.
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
#
|
||||||
|
# $1 - List of components.
|
||||||
|
# $2 - List of tools.
|
||||||
|
# $3 - List of standard targets.
|
||||||
|
define create_all_rules
|
||||||
|
|
||||||
|
default: all
|
||||||
|
|
||||||
|
all: $(1) $(2)
|
||||||
|
|
||||||
|
# Create rules for all components.
|
||||||
|
$(foreach c,$(1),$(eval $(call make_component_rules,$(c))))
|
||||||
|
|
||||||
|
# Create rules for all tools.
|
||||||
|
$(foreach c,$(2),$(eval $(call make_tool_rules,$(c))))
|
||||||
|
|
||||||
|
# Create the "-all" rules.
|
||||||
|
$(foreach a,$(3),$(eval $(call make_all_rules,$(a))))
|
||||||
|
|
||||||
|
# Support "make ${target}"
|
||||||
|
# (which is an alias for "make ${target}-all").
|
||||||
|
$(3) : % : %-all
|
||||||
|
|
||||||
|
endef
|
Reference in New Issue
Block a user