2025-06-04 11:04:30 +08:00

53 lines
1.7 KiB
Makefile

# SPDX-License-Identifier: MPL-2.0
LTP_DIR ?= /opt/ltp
MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
CUR_DIR := $(patsubst %/,%,$(dir $(MKFILE_PATH)))
INITRAMFS ?= $(CUR_DIR)/../../build/initramfs
TARGET_DIR := $(INITRAMFS)/opt/ltp
RUN_BASH := $(CUR_DIR)/run_ltp_test.sh
ALL_TESTS := $(CUR_DIR)/testcases/all.txt
EXT2_BLOCKLIST := $(CUR_DIR)/testcases/blocked/ext2.txt
EXFAT_BLOCKLIST := $(CUR_DIR)/testcases/blocked/exfat.txt
.PHONY: all
all: $(TARGET_DIR)
$(TARGET_DIR): $(RUN_BASH) $(ALL_TESTS) $(EXT2_BLOCKLIST) $(EXFAT_BLOCKLIST)
@rm -rf $@ && mkdir -p $@
@# Prepare tests dir for test binaries
@mkdir -p $@/testcases/bin
@mkdir -p $@/runtest
@awk '!/^#/ && NF' $(ALL_TESTS) > $@/all.txt
@if [ "$(SYSCALL_TEST_WORKDIR)" = "/ext2" ]; then \
grep -vxF -f $(EXT2_BLOCKLIST) $@/all.txt > $@/filtered.txt; \
elif [ "$(SYSCALL_TEST_WORKDIR)" = "/exfat" ]; then \
grep -vxF -f $(EXFAT_BLOCKLIST) $@/all.txt > $@/filtered.txt; \
else \
cp -f $@/all.txt $@/filtered.txt; \
fi;
@# Process syscall testcases and copy binaries
@while read -r syscall binary params; do \
if grep -q "^$$syscall$$" $@/filtered.txt; then \
if [ -f $(LTP_DIR)/testcases/bin/$$binary ]; then \
cp -f $(LTP_DIR)/testcases/bin/$$binary $@/testcases/bin; \
echo "$$syscall $$binary $$params" >> $@/runtest/syscalls; \
else \
echo "Warning: $$binary not found (skipping)"; \
fi; \
fi; \
done < $(LTP_DIR)/runtest/syscalls
@# Remove intermediate files
@rm -f $@/all.txt $@/filtered.txt
@# Copy bash scripts
@cp -r $(LTP_DIR)/bin $@
@cp -f $(LTP_DIR)/runltp $@
@cp -f $(LTP_DIR)/Version $@
@cp -f $(LTP_DIR)/ver_linux $@
@cp -f $(LTP_DIR)/IDcheck.sh $@
@cp -f $(RUN_BASH) $@
.PHONY: clean
clean:
@rm -rf $(TARGET_DIR)