# 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)