MKDIR := mkdir -p
MV := mv
PRINTF := printf
+REALPATH := realpath
SED := sed
TEST := test
TIME := time
$(MKDIR) $1
endef
+
+# ファイル1からファイル2への相対パス
+# 引数は、ファイル名1、ファイル名2
+# 用例: $(call rel_to,file1,file2)
+define rel_to
+ $(strip $(shell $(REALPATH) --relative-to=$1 $2))
+endef
+
# テストディレクトリーのMakefileを作成
# 引数は、Makefile名、依存ファイル群
# 用例: $(call create_makefile,file,list_include_file)
# テストのターゲットを定義したMakefile
TEST_MAKEFILE := Test.mk
-# すべてのMakefile群
-MAKEFILES := $(DEFINE_FILE) $(TEST_MAKEFILE)
+# テストグループのMakefileとしてコピーされるファイル
+GROUP_MAKEFILE := Group.mk
+
+# DEFINE_FILEの相対パス
+DEFINE_FILE_REL = $(call rel_to,$(GROUPDIR),$(DEFINE_FILE))
+
+# TEST_MAKEFILEの相対パス
+TEST_MAKEFILE_REL = $(call rel_to,$(GROUPDIR),$(TEST_MAKEFILE))
-# すべてのMakefile群の絶対パス
-MAKEFILES_ABS := $(foreach file,$(MAKEFILES),$(CURDIR)/$(file))
+# GROUP_MAKEFILEの相対パス
+GROUP_MAKEFILE_REL = $(call rel_to,$(GROUPDIR),$(GROUP_MAKEFILE))
######################################################################
# テストのディレクトリー
# 変数やマクロの定義
include Define.mk
-# テストグループのMakefileとしてコピーされるファイル
-GROUP_MAKEFILE := Group.mk
-
.PHONY: group groupdir copymk linkmk
MKFILE_METHOD = $(if $(LINKMK),linkmk,copymk)
copymk:
@$(CP) $(GROUP_MAKEFILE) $(GROUPDIR)/Makefile
- @$(CP) $(MAKEFILES) $(GROUPDIR)/
+ @$(CP) $(DEFINE_FILE) $(TEST_MAKEFILE) $(GROUPDIR)/
linkmk:
- @$(LN) $(CURDIR)/$(GROUP_MAKEFILE) $(GROUPDIR)/Makefile
- @$(LN) $(MAKEFILES_ABS) $(GROUPDIR)/
+ @$(LN) $(DEFINE_FILE_REL) $(TEST_MAKEFILE) $(GROUPDIR)/
+ @$(LN) $(GROUP_MAKEFILE_REL) $(GROUPDIR)/Makefile