.PHONY: all f2c bin \
clean cleanf2c cleanobj cleanbin cleanout \
check-env check-env-mk check-env-fragments check-env-make-defs \
run check
ifneq ($(strip $(BLIS_INSTALL_PATH)),)
LIB_PATH := $(BLIS_INSTALL_PATH)/lib
INC_PATH := $(BLIS_INSTALL_PATH)/include/blis
SHARE_PATH := $(BLIS_INSTALL_PATH)/share/blis
else
DIST_PATH := ..
LIB_PATH = ../lib/$(CONFIG_NAME)
INC_PATH = ../include/$(CONFIG_NAME)
SHARE_PATH := ..
endif
-include $(SHARE_PATH)/common.mk
TEST_OBJ_PATH := obj
F2C_LIB := libf2c.a
F2C_PATH := f2c
DRIVER_PATH := src
BLIS_H_PATH := $(BUILD_PATH)/$(BASE_INC_PATH)
INPUT_DIR := input
F2C_OBJS := $(sort $(patsubst $(F2C_PATH)/%.c, \
$(TEST_OBJ_PATH)/%.o, \
$(wildcard $(F2C_PATH)/*.c)))
DRIVER_OBJS := $(sort $(patsubst $(DRIVER_PATH)/%.c, \
$(TEST_OBJ_PATH)/%.o, \
$(wildcard $(DRIVER_PATH)/*.c)))
DRIVER_BASES := $(basename $(notdir $(DRIVER_OBJS)))
DRIVER_BINS := $(addsuffix .x,$(DRIVER_BASES))
DRIVER_BINS_R := $(addprefix run-,$(DRIVER_BASES))
DRIVER1_BASES := $(filter %1,$(DRIVER_BASES))
DRIVER2_BASES := $(filter %2,$(DRIVER_BASES))
DRIVER3_BASES := $(filter %3,$(DRIVER_BASES))
CINCFLAGS := -I$(INC_PATH)
CFLAGS := $(call get-user-cflags-for,$(CONFIG_NAME))
CFLAGS += -Wno-maybe-uninitialized -Wno-parentheses -Wfatal-errors \
-I$(F2C_PATH) \
-I$(INC_PATH) -DHAVE_BLIS_H
TESTSUITE_WRAPPER ?=
all: check-env f2c bin
f2c: check-env $(F2C_LIB)
bin: check-env $(DRIVER_BINS)
$(TEST_OBJ_PATH)/%.o: $(F2C_PATH)/%.c
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(CFLAGS) -c $< -o $@
else
@echo "Compiling $@"
@$(CC) $(CFLAGS) -c $< -o $@
endif
$(TEST_OBJ_PATH)/%.o: $(DRIVER_PATH)/%.c
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(CFLAGS) -c $< -o $@
else
@echo "Compiling $@"
@$(CC) $(CFLAGS) -c $< -o $@
endif
$(F2C_LIB): $(F2C_OBJS)
ifeq ($(ENABLE_VERBOSE),yes)
$(AR) $(ARFLAGS) $@ $?
$(RANLIB) $@
else
@echo "Archiving $@"
@$(AR) $(ARFLAGS) $@ $?
@$(RANLIB) $@
endif
define make-blat-rule
$(1).x: $(TEST_OBJ_PATH)/$(1).o $(F2C_LIB) $(LIBBLIS_LINK)
ifeq ($(ENABLE_VERBOSE),yes)
$(LINKER) $(TEST_OBJ_PATH)/$(1).o $(F2C_OBJS) $(LIBBLIS_LINK) $(LDFLAGS) -o $$@
else
@echo "Linking $$@ against '$(F2C_LIB) $(LIBBLIS_LINK) $(LDFLAGS)'"
@$(LINKER) $(TEST_OBJ_PATH)/$(1).o $(F2C_LIB) $(LIBBLIS_LINK) $(LDFLAGS) -o $$@
endif
endef
$(foreach name, $(DRIVER_BASES), $(eval $(call make-blat-rule,$(name))))
run: $(DRIVER_BINS_R)
define make-run-blat1-rule
run-$(1): $(1).x
ifeq ($(ENABLE_VERBOSE),yes)
$(TESTSUITE_WRAPPER) ./$(1).x > out.$(1)
else
@echo "Running $(1).x > 'out.$(1)'"
@$(TESTSUITE_WRAPPER) ./$(1).x > out.$(1)
endif
endef
$(foreach name, $(DRIVER1_BASES), $(eval $(call make-run-blat1-rule,$(name))))
define make-run-blat23-rule
run-$(1): $(1).x
ifeq ($(ENABLE_VERBOSE),yes)
$(TESTSUITE_WRAPPER) ./$(1).x < $(INPUT_DIR)/$(1).in
else
@echo "Running $(1).x < '$(INPUT_DIR)/$(1).in' (output to 'out.$(1)')"
@$(TESTSUITE_WRAPPER) ./$(1).x < $(INPUT_DIR)/$(1).in
endif
endef
$(foreach name, $(DRIVER2_BASES), $(eval $(call make-run-blat23-rule,$(name))))
$(foreach name, $(DRIVER3_BASES), $(eval $(call make-run-blat23-rule,$(name))))
check: run
ifeq ($(ENABLE_VERBOSE),yes)
- $(BLASTEST_CHECK)
else
@- $(BLASTEST_CHECK)
endif
cleanf2c:
- $(RM_F) $(F2C_OBJS) $(F2C_LIB)
cleanobj:
- $(RM_F) $(DRIVER_OBJS)
cleanbin:
- $(RM_F) $(DRIVER_BINS)
cleanout:
- $(RM_F) $(addprefix out.,$(DRIVER_BASES))
clean: cleanf2c cleanobj cleanbin cleanout