diff --git a/regression/apps/Makefile b/regression/apps/Makefile index ebca80147..54e96f473 100644 --- a/regression/apps/Makefile +++ b/regression/apps/Makefile @@ -8,9 +8,15 @@ REGRESSION_BUILD_DIR ?= $(INITRAMFS)/regression TEST_APPS := signal_c pthread network hello_world hello_pie hello_c fork_c fork execve pty .PHONY: all -all: - @mkdir -p $(REGRESSION_BUILD_DIR) - @for test_app in $(TEST_APPS); \ - do make --no-print-directory -C $${test_app}; \ - done +all: $(TEST_APPS) scripts + +.PHONY: $(TEST_APPS) +$(TEST_APPS): + @make --no-print-directory -C $@ + +$(REGRESSION_BUILD_DIR): + @mkdir -p $@ + +.PHONY: scripts +scripts: | $(REGRESSION_BUILD_DIR) @make --no-print-directory BUILD_DIR=$(REGRESSION_BUILD_DIR) -C scripts diff --git a/regression/apps/execve/Makefile b/regression/apps/execve/Makefile index bf39ea0bf..cd19ae20b 100644 --- a/regression/apps/execve/Makefile +++ b/regression/apps/execve/Makefile @@ -2,4 +2,4 @@ include ../test_common.mk -EXTRA_C_FLAGS :=-static +EXTRA_C_FLAGS := -static diff --git a/regression/apps/fork/Makefile b/regression/apps/fork/Makefile index 00cb44cdf..14c46e670 100644 --- a/regression/apps/fork/Makefile +++ b/regression/apps/fork/Makefile @@ -2,4 +2,4 @@ include ../test_common.mk -EXTRA_C_FLAGS :=-static -nostdlib +EXTRA_C_FLAGS := -static -nostdlib diff --git a/regression/apps/fork_c/Makefile b/regression/apps/fork_c/Makefile index bf39ea0bf..cd19ae20b 100644 --- a/regression/apps/fork_c/Makefile +++ b/regression/apps/fork_c/Makefile @@ -2,4 +2,4 @@ include ../test_common.mk -EXTRA_C_FLAGS :=-static +EXTRA_C_FLAGS := -static diff --git a/regression/apps/hello_c/Makefile b/regression/apps/hello_c/Makefile index e299341f1..37e7cb4c0 100644 --- a/regression/apps/hello_c/Makefile +++ b/regression/apps/hello_c/Makefile @@ -2,4 +2,4 @@ include ../test_common.mk -EXTRA_C_FLAGS :=-static -mno-sse +EXTRA_C_FLAGS := -static -mno-sse diff --git a/regression/apps/hello_world/Makefile b/regression/apps/hello_world/Makefile index 00cb44cdf..14c46e670 100644 --- a/regression/apps/hello_world/Makefile +++ b/regression/apps/hello_world/Makefile @@ -2,4 +2,4 @@ include ../test_common.mk -EXTRA_C_FLAGS :=-static -nostdlib +EXTRA_C_FLAGS := -static -nostdlib diff --git a/regression/apps/pthread/Makefile b/regression/apps/pthread/Makefile index 8f1ee0ae6..039e6e028 100644 --- a/regression/apps/pthread/Makefile +++ b/regression/apps/pthread/Makefile @@ -2,4 +2,4 @@ include ../test_common.mk -EXTRA_C_FLAGS :=-static -lpthread +EXTRA_C_FLAGS := -static -lpthread diff --git a/regression/apps/scripts/Makefile b/regression/apps/scripts/Makefile index e41e64e0e..85ccd0834 100644 --- a/regression/apps/scripts/Makefile +++ b/regression/apps/scripts/Makefile @@ -1,5 +1,10 @@ # SPDX-License-Identifier: MPL-2.0 +SOURCES := $(wildcard *.sh) +TARGETS := $(addprefix $(BUILD_DIR)/, $(SOURCES)) + .PHONY: all -all: ./*.sh - @cp ./*.sh $(BUILD_DIR) +all: $(TARGETS) + +$(BUILD_DIR)/%.sh: %.sh + @cp $< $@ diff --git a/regression/apps/signal_c/Makefile b/regression/apps/signal_c/Makefile index bf39ea0bf..cd19ae20b 100644 --- a/regression/apps/signal_c/Makefile +++ b/regression/apps/signal_c/Makefile @@ -2,4 +2,4 @@ include ../test_common.mk -EXTRA_C_FLAGS :=-static +EXTRA_C_FLAGS := -static diff --git a/regression/apps/test_common.mk b/regression/apps/test_common.mk index 8799e4f7d..373f7fc79 100644 --- a/regression/apps/test_common.mk +++ b/regression/apps/test_common.mk @@ -4,25 +4,30 @@ MAIN_MAKEFILE := $(firstword $(MAKEFILE_LIST)) INCLUDE_MAKEFILE := $(lastword $(MAKEFILE_LIST)) CUR_DIR := $(shell dirname $(realpath $(MAIN_MAKEFILE))) CUR_DIR_NAME := $(shell basename $(realpath $(CUR_DIR))) -REGRESSION_BUILD_DIR := $(CUR_DIR)/../../build/initramfs/regression -OBJ_OUTPUT_DIR := $(REGRESSION_BUILD_DIR)/$(CUR_DIR_NAME) +BUILD_DIR := $(CUR_DIR)/../../build +OBJ_OUTPUT_DIR := $(BUILD_DIR)/initramfs/regression/$(CUR_DIR_NAME) +DEP_OUTPUT_DIR := $(BUILD_DIR)/dep/$(CUR_DIR_NAME) C_SRCS := $(wildcard *.c) C_OBJS := $(addprefix $(OBJ_OUTPUT_DIR)/,$(C_SRCS:%.c=%)) +C_DEPS := $(addprefix $(DEP_OUTPUT_DIR)/,$(C_SRCS:%.c=%.d)) ASM_SRCS := $(wildcard *.s) ASM_OBJS := $(addprefix $(OBJ_OUTPUT_DIR)/,$(ASM_SRCS:%.s=%)) CC := gcc C_FLAGS := .PHONY: all -all: $(OBJ_OUTPUT_DIR) $(C_OBJS) $(ASM_OBJS) +all: $(C_OBJS) $(ASM_OBJS) -$(OBJ_OUTPUT_DIR): - @mkdir -p $(OBJ_OUTPUT_DIR) +$(OBJ_OUTPUT_DIR) $(DEP_OUTPUT_DIR): + @mkdir -p $@ -$(CUR_DIR)/../../build/initramfs/regression/$(CUR_DIR_NAME)/%: %.c - @$(CC) $(C_FLAGS) $(EXTRA_C_FLAGS) $< -o $@ +$(OBJ_OUTPUT_DIR)/%: %.c | $(OBJ_OUTPUT_DIR) $(DEP_OUTPUT_DIR) + @$(CC) $(C_FLAGS) $(EXTRA_C_FLAGS) $< -o $@ \ + -MMD -MF $(DEP_OUTPUT_DIR)/$*.d @echo "CC <= $@" -$(CUR_DIR)/../../build/initramfs/regression/$(CUR_DIR_NAME)/%: %.s +-include $(C_DEPS) + +$(OBJ_OUTPUT_DIR)/%: %.s | $(OBJ_OUTPUT_DIR) @$(CC) $(C_FLAGS) $(EXTRA_C_FLAGS) $< -o $@ @echo "CC <= $@"