.PHONY: all \
libs libblis \
check-env check-env-mk check-env-fragments check-env-make-defs \
flat-header flat-cblas-header \
test \
testblas blastest-f2c blastest-bin blastest-run \
testsuite testsuite-bin \
testsuite-run testsuite-run-fast testsuite-run-md testsuite-run-salt \
testblis testblis-fast testblis-md testblis-salt \
check checkblas \
checkblis checkblis-fast checkblis-md checkblis-salt \
install-headers install-helper-headers install-libs install-lib-symlinks \
showconfig \
clean cleanmk cleanh cleanlib distclean \
cleantest cleanblastest cleanblistest \
changelog \
symbols \
install uninstall uninstall-old \
uninstall-libs uninstall-lib-symlinks uninstall-headers \
uninstall-old-libs uninstall-lib-symlinks uninstall-old-headers
COMMON_MK_FILE := common.mk
-include $(COMMON_MK_FILE)
ifeq ($(strip $(COMMON_MK_INCLUDED)),yes)
COMMON_MK_PRESENT := yes
else
COMMON_MK_PRESENT := no
endif
BASE_OBJ_PATH := ./$(OBJ_DIR)/$(CONFIG_NAME)
BASE_OBJ_CONFIG_PATH := $(BASE_OBJ_PATH)/$(CONFIG_DIR)
BASE_OBJ_FRAME_PATH := $(BASE_OBJ_PATH)/$(FRAME_DIR)
BASE_OBJ_REFKERN_PATH := $(BASE_OBJ_PATH)/$(REFKERN_DIR)
BASE_OBJ_KERNELS_PATH := $(BASE_OBJ_PATH)/$(KERNELS_DIR)
BASE_OBJ_ADDON_PATH := $(BASE_OBJ_PATH)/$(ADDON_DIR)
BASE_OBJ_SANDBOX_PATH := $(BASE_OBJ_PATH)/$(SANDBOX_DIR)
LIBBLIS_A_INST := $(INSTALL_LIBDIR)/$(LIBBLIS_A)
LIBBLIS_SO_INST := $(INSTALL_LIBDIR)/$(LIBBLIS_SO)
LIBBLIS_SO_MAJ_INST := $(INSTALL_LIBDIR)/$(LIBBLIS_SONAME)
ifeq ($(IS_WIN),yes)
LIBBLIS_SO_MMB_INST :=
else
LIBBLIS_SO_MMB_INST := $(INSTALL_LIBDIR)/$(LIBBLIS).$(LIBBLIS_SO_MMB_EXT)
endif
MK_LIBS :=
MK_LIBS_INST :=
MK_LIBS_SYML :=
ifeq ($(MK_ENABLE_STATIC),yes)
MK_LIBS += $(LIBBLIS_A_PATH)
MK_LIBS_INST += $(LIBBLIS_A_INST)
MK_LIBS_SYML +=
endif
ifeq ($(MK_ENABLE_SHARED),yes)
MK_LIBS += $(LIBBLIS_SO_PATH) \
$(LIBBLIS_SO_MAJ_PATH)
MK_LIBS_INST += $(LIBBLIS_SO_MMB_INST)
MK_LIBS_SYML += $(LIBBLIS_SO_INST) \
$(LIBBLIS_SO_MAJ_INST)
endif
MK_LIBS_INST := $(strip $(MK_LIBS_INST))
MK_LIBS_SYML := $(strip $(MK_LIBS_SYML))
MK_INCL_DIR_INST := $(INSTALL_INCDIR)/blis
MK_SHARE_DIR_INST := $(INSTALL_SHAREDIR)/blis
PC_SHARE_DIR_INST := $(INSTALL_SHAREDIR)/pkgconfig
gen-obj-paths-from-src = $(foreach ch, $(1), \
$(patsubst $(3)/%.$(ch), \
$(4)/%.o, \
$(filter %.$(ch), $(2)) ) )
MK_CONFIG_OBJS := $(call gen-obj-paths-from-src,$(CONFIG_SRC_SUFS),$(MK_CONFIG_SRC),$(CONFIG_PATH),$(BASE_OBJ_CONFIG_PATH))
MK_KERNELS_OBJS := $(call gen-obj-paths-from-src,$(KERNELS_SRC_SUFS),$(MK_KERNELS_SRC),$(KERNELS_PATH),$(BASE_OBJ_KERNELS_PATH))
MK_REFKERN_C := $(filter %.c, $(MK_REFKERN_SRC))
MK_REFKERN_OBJS := $(foreach arch, $(CONFIG_LIST), \
$(patsubst $(REFKERN_PATH)/%_$(REFNM).c, \
$(BASE_OBJ_REFKERN_PATH)/$(arch)/%_$(arch)_$(REFNM).o, \
$(MK_REFKERN_C) \
) \
)
MK_FRAME_OBJS := $(call gen-obj-paths-from-src,$(FRAME_SRC_SUFS),$(MK_FRAME_SRC),$(FRAME_PATH),$(BASE_OBJ_FRAME_PATH))
MK_ADDON_KERS_SRC := $(foreach addon, $(ADDON_LIST), \
$(filter $(ADDON_PATH)/$(addon)/$(KERNELS_DIR)/%, \
$(MK_ADDON_SRC)) \
)
MK_ADDON_OTHER_SRC := $(foreach addon, $(ADDON_LIST), \
$(filter-out $(ADDON_PATH)/$(addon)/$(KERNELS_DIR)/%, \
$(MK_ADDON_SRC)) \
)
MK_ADDON_KERS_OBJS := $(call gen-obj-paths-from-src,$(ADDON_SRC_SUFS),$(MK_ADDON_KERS_SRC),$(ADDON_PATH),$(BASE_OBJ_ADDON_PATH))
MK_ADDON_OTHER_OBJS := $(call gen-obj-paths-from-src,$(ADDON_SRC_SUFS),$(MK_ADDON_OTHER_SRC),$(ADDON_PATH),$(BASE_OBJ_ADDON_PATH))
MK_ADDON_OBJS := $(MK_ADDON_KERS_OBJS) $(MK_ADDON_OTHER_OBJS)
MK_SANDBOX_OBJS := $(call gen-obj-paths-from-src,$(SANDBOX_SRC_SUFS),$(MK_SANDBOX_SRC),$(SANDBOX_PATH),$(BASE_OBJ_SANDBOX_PATH))
ifeq ($(ENABLE_AMD_FRAME_TWEAKS),yes)
MK_FRAME_AMD_OBJS := $(filter $(BASE_OBJ_FRAME_PATH)/%amd.o, $(MK_FRAME_OBJS))
FILES_TO_REMOVE := $(subst _amd.o,.o, $(MK_FRAME_AMD_OBJS))
MK_FRAME_OBJS := $(filter-out $(FILES_TO_REMOVE), $(MK_FRAME_OBJS))
else
MK_FRAME_AMD_OBJS := $(filter $(BASE_OBJ_FRAME_PATH)/%amd.o, $(MK_FRAME_OBJS))
MK_FRAME_OBJS := $(filter-out $(MK_FRAME_AMD_OBJS), $(MK_FRAME_OBJS))
endif
MK_BLIS_OBJS := $(MK_CONFIG_OBJS) \
$(MK_KERNELS_OBJS) \
$(MK_REFKERN_OBJS) \
$(MK_FRAME_OBJS) \
$(MK_ADDON_OBJS) \
$(MK_SANDBOX_OBJS)
BASE_OBJ_BLAS_PATH := $(BASE_OBJ_FRAME_PATH)/compat
BASE_OBJ_CBLAS_PATH := $(BASE_OBJ_FRAME_PATH)/compat/cblas
ifeq ($(MK_ENABLE_CBLAS),no)
MK_BLIS_OBJS := $(filter-out $(BASE_OBJ_CBLAS_PATH)/%.o, $(MK_BLIS_OBJS) )
endif
ifeq ($(MK_ENABLE_BLAS),no)
MK_BLIS_OBJS := $(filter-out $(BASE_OBJ_BLAS_PATH)/%.o, $(MK_BLIS_OBJS) )
endif
HEADERS_TO_INSTALL := $(BLIS_H_FLAT)
ifeq ($(MK_ENABLE_CBLAS),yes)
HEADERS_TO_INSTALL += $(CBLAS_H_FLAT)
endif
ifeq ($(INSTALL_HH),yes)
HEADERS_TO_INSTALL += $(wildcard $(VEND_CPP_PATH)/*.hh)
endif
HELP_HEADERS_TO_INSTALL := $(HELP_BLIS_H_PATH)
HELP_HEADERS_INSTALLED := $(INSTALL_INCDIR)/$(BLIS_H)
ifeq ($(MK_ENABLE_CBLAS),yes)
HELP_HEADERS_TO_INSTALL += $(HELP_CBLAS_H_PATH)
HELP_HEADERS_INSTALLED += $(INSTALL_INCDIR)/$(CBLAS_H)
endif
FRAGS_TO_INSTALL := $(CONFIG_MK_FILE) \
$(COMMON_MK_FILE)
PC_IN_FILE := blis.pc.in
PC_OUT_FILE := blis.pc
BLASTEST_INPUT_PATH := $(DIST_PATH)/$(BLASTEST_DIR)/input
BASE_OBJ_BLASTEST_PATH := $(BASE_OBJ_PATH)/$(BLASTEST_DIR)
BLASTEST_F2C_SRC_PATH := $(DIST_PATH)/$(BLASTEST_DIR)/f2c
BLASTEST_DRV_SRC_PATH := $(DIST_PATH)/$(BLASTEST_DIR)/src
BLASTEST_F2C_OBJS := $(sort \
$(patsubst $(BLASTEST_F2C_SRC_PATH)/%.c, \
$(BASE_OBJ_BLASTEST_PATH)/%.o, \
$(wildcard $(BLASTEST_F2C_SRC_PATH)/*.c)) \
)
BLASTEST_DRV_OBJS := $(sort \
$(patsubst $(BLASTEST_DRV_SRC_PATH)/%.c, \
$(BASE_OBJ_BLASTEST_PATH)/%.o, \
$(wildcard $(BLASTEST_DRV_SRC_PATH)/*.c)) \
)
BLASTEST_F2C_LIB_NAME := libf2c.a
BLASTEST_F2C_LIB := $(BASE_OBJ_BLASTEST_PATH)/$(BLASTEST_F2C_LIB_NAME)
BLASTEST_DRV_BASES := $(basename $(notdir $(BLASTEST_DRV_OBJS)))
BLASTEST_DRV_BINS := $(addsuffix .x,$(BLASTEST_DRV_BASES))
BLASTEST_DRV_BIN_PATHS := $(addprefix $(BASE_OBJ_BLASTEST_PATH)/,$(BLASTEST_DRV_BINS))
BLASTEST_DRV_BINS_R := $(addprefix run-,$(BLASTEST_DRV_BASES))
BLASTEST_DRV1_BASES := $(filter %1,$(BLASTEST_DRV_BASES))
BLASTEST_DRV2_BASES := $(filter %2,$(BLASTEST_DRV_BASES))
BLASTEST_DRV3_BASES := $(filter %3,$(BLASTEST_DRV_BASES))
BLAT_CFLAGS := -Wno-parentheses \
-I$(BLASTEST_F2C_SRC_PATH) \
-I. -DHAVE_BLIS_H
ifeq ($(CC_VENDOR),gcc)
BLAT_CFLAGS += -Wno-maybe-uninitialized
endif
BLASTEST_CHECK_PATH := $(DIST_PATH)/$(BLASTEST_DIR)/$(BLASTEST_CHECK)
TESTSUITE_CONF_GEN_PATH := $(DIST_PATH)/$(TESTSUITE_DIR)/$(TESTSUITE_CONF_GEN)
TESTSUITE_CONF_OPS_PATH := $(DIST_PATH)/$(TESTSUITE_DIR)/$(TESTSUITE_CONF_OPS)
TESTSUITE_FAST_GEN_PATH := $(DIST_PATH)/$(TESTSUITE_DIR)/$(TESTSUITE_FAST_GEN)
TESTSUITE_FAST_OPS_PATH := $(DIST_PATH)/$(TESTSUITE_DIR)/$(TESTSUITE_FAST_OPS)
TESTSUITE_MIXD_GEN_PATH := $(DIST_PATH)/$(TESTSUITE_DIR)/$(TESTSUITE_MIXD_GEN)
TESTSUITE_MIXD_OPS_PATH := $(DIST_PATH)/$(TESTSUITE_DIR)/$(TESTSUITE_MIXD_OPS)
TESTSUITE_SALT_GEN_PATH := $(DIST_PATH)/$(TESTSUITE_DIR)/$(TESTSUITE_SALT_GEN)
TESTSUITE_SALT_OPS_PATH := $(DIST_PATH)/$(TESTSUITE_DIR)/$(TESTSUITE_SALT_OPS)
TESTSUITE_SRC_PATH := $(DIST_PATH)/$(TESTSUITE_DIR)/src
BASE_OBJ_TESTSUITE_PATH := $(BASE_OBJ_PATH)/$(TESTSUITE_DIR)
MK_TESTSUITE_OBJS := $(sort \
$(patsubst $(TESTSUITE_SRC_PATH)/%.c, \
$(BASE_OBJ_TESTSUITE_PATH)/%.o, \
$(wildcard $(TESTSUITE_SRC_PATH)/*.c)) \
)
TESTSUITE_BIN := test_$(LIBBLIS).x
TESTSUITE_WRAPPER ?=
TESTSUITE_CHECK_PATH := $(DIST_PATH)/$(TESTSUITE_DIR)/$(TESTSUITE_CHECK)
ifeq ($(IS_CONFIGURED),yes)
UNINSTALL_OLD_LIBS :=
UNINSTALL_OLD_LIBS += $(filter-out $(INSTALL_LIBDIR)/$(LIBBLIS).$(LIBBLIS_SO_MMB_EXT),$(wildcard $(INSTALL_LIBDIR)/$(LIBBLIS_SO).?.?.?))
UNINSTALL_OLD_SYML := $(filter-out $(INSTALL_LIBDIR)/$(LIBBLIS_SO).$(SO_MAJOR),$(wildcard $(INSTALL_LIBDIR)/$(LIBBLIS_SO).?))
UNINSTALL_OLD_SYML += $(wildcard $(INSTALL_LIBDIR)/$(LIBBLIS)-*.a)
UNINSTALL_OLD_SYML += $(wildcard $(INSTALL_LIBDIR)/$(LIBBLIS)-*.$(SHLIB_EXT))
UNINSTALL_OLD_HEADERS := $(filter-out $(BLIS_H),$(filter-out $(CBLAS_H),$(wildcard $(INSTALL_INCDIR)/blis/*.h)))
endif
all: libs
libs: libblis
test: checkblis checkblas
check: checkblis-fast checkblas
install: libs install-libs install-lib-symlinks install-headers install-share
uninstall: uninstall-libs uninstall-lib-symlinks uninstall-headers uninstall-share
uninstall-old: uninstall-old-libs uninstall-old-symlinks uninstall-old-headers
clean: cleanh cleanlib
check-env: check-env-make-defs check-env-fragments check-env-mk
check-env-mk:
ifeq ($(CONFIG_MK_PRESENT),no)
$(error Cannot proceed: config.mk not detected! Run configure first)
endif
check-env-fragments: check-env-mk
ifeq ($(MAKEFILE_FRAGMENTS_PRESENT),no)
$(error Cannot proceed: makefile fragments not detected! Run configure first)
endif
check-env-make-defs: check-env-fragments
ifeq ($(ALL_MAKE_DEFS_MK_PRESENT),no)
$(error Cannot proceed: Some make_defs.mk files not found or mislabeled!)
endif
symbols: check-env $(SYM_FILE)
$(SYM_FILE): $(HEADERS_TO_INSTALL)
ifeq ($(ENABLE_VERBOSE),yes)
$(GEN_SYMS) > $(SYM_FILE)
else
@echo "Updating $(SYM_FILE)"
@$(GEN_SYMS) > $(SYM_FILE)
endif
flat-header: check-env $(BLIS_H_FLAT)
$(BLIS_H_FLAT): $(ALL_H99_FILES)
ifeq ($(ENABLE_VERBOSE),yes)
$(FLATTEN_H) -l -v1 $(BLIS_H_SRC_PATH) $@ "./$(INCLUDE_DIR)" "$(ALL_H99_DIRPATHS)"
else
@echo -n "Generating monolithic blis.h"
@$(FLATTEN_H) -l -v1 $(BLIS_H_SRC_PATH) $@ "./$(INCLUDE_DIR)" "$(ALL_H99_DIRPATHS)"
@echo "Generated $@"
endif
flat-cblas-header: check-env $(CBLAS_H_FLAT)
$(CBLAS_H_FLAT): $(FRAME_H99_FILES)
ifeq ($(ENABLE_VERBOSE),yes)
$(FLATTEN_H) -l -v1 $(CBLAS_H_SRC_PATH) $@ "./$(INCLUDE_DIR)" "$(ALL_H99_DIRPATHS)"
else
@echo -n "Generating monolithic cblas.h"
@$(FLATTEN_H) -l -v1 $(CBLAS_H_SRC_PATH) $@ "./$(INCLUDE_DIR)" "$(ALL_H99_DIRPATHS)"
@echo "Generated $@"
endif
define make-config-rule
$(BASE_OBJ_CONFIG_PATH)/$(1)/%.o: $(CONFIG_PATH)/$(1)/%.c $(BLIS_H_FLAT) $(MAKE_DEFS_MK_PATHS)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(call get-config-cflags-for,$(1)) -c $$< -o $$@
else
@echo "Compiling $$@" $(call get-config-text-for,$(1))
@$(CC) $(call get-config-cflags-for,$(1)) -c $$< -o $$@
endif
endef
define make-frame-rule
$(BASE_OBJ_FRAME_PATH)/%.o: $(FRAME_PATH)/%.c $(BLIS_H_FLAT) $(MAKE_DEFS_MK_PATHS)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(call get-frame-cflags-for,$(1)) -c $$< -o $$@
else
@echo "Compiling $$@" $(call get-frame-text-for,$(1))
@$(CC) $(call get-frame-cflags-for,$(1)) -c $$< -o $$@
endif
ifneq ($(findstring hpx,$(THREADING_MODEL)),)
$(BASE_OBJ_FRAME_PATH)/%.o: $(FRAME_PATH)/%.cpp $(BLIS_H_FLAT) $(MAKE_DEFS_MK_PATHS)
ifeq ($(ENABLE_VERBOSE),yes)
$(CXX) $(call get-frame-cxxflags-for,$(1)) -c $$< -o $$@
else
@echo "Compiling $$@" $(call get-frame-cxxtext-for,$(1))
@$(CXX) $(call get-frame-cxxflags-for,$(1)) -c $$< -o $$@
endif
endif
endef
define make-refinit-rule
$(BASE_OBJ_REFKERN_PATH)/$(1)/bli_cntx_$(1)_ref.o: $(REFKERN_PATH)/bli_cntx_ref.c $(BLIS_H_FLAT) $(MAKE_DEFS_MK_PATHS)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(call get-refinit-cflags-for,$(1)) -c $$< -o $$@
else
@echo "Compiling $$@" $(call get-refinit-text-for,$(1))
@$(CC) $(call get-refinit-cflags-for,$(1)) -c $$< -o $$@
endif
endef
define make-refkern-rule
$(BASE_OBJ_REFKERN_PATH)/$(1)/%_$(1)_ref.o: $(REFKERN_PATH)/%_ref.c $(BLIS_H_FLAT) $(MAKE_DEFS_MK_PATHS)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(call get-refkern-cflags-for,$(1)) -c $$< -o $$@
else
@echo "Compiling $$@" $(call get-refkern-text-for,$(1))
@$(CC) $(call get-refkern-cflags-for,$(1)) -c $$< -o $$@
endif
endef
define make-kernels-rule
$(BASE_OBJ_KERNELS_PATH)/$(1)/%.o: $(KERNELS_PATH)/$(1)/%.$(3) $(BLIS_H_FLAT) $(MAKE_DEFS_MK_PATHS)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(call get-kernel-cflags-for,$(2)) -c $$< -o $$@
else
@echo "Compiling $$@" $(call get-kernel-text-for,$(2))
@$(CC) $(call get-kernel-cflags-for,$(2)) -c $$< -o $$@
endif
endef
define make-c99-addon-rule
$(BASE_OBJ_ADDON_PATH)/%.o: $(ADDON_PATH)/%.$(2) $(BLIS_H_FLAT) $(ADDON_H99_FILES) $(MAKE_DEFS_MK_PATHS)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(call get-addon-c99flags-for,$(1)) -c $$< -o $$@
else
@echo "Compiling $$@" $(call get-addon-c99text-for,$(1))
@$(CC) $(call get-addon-c99flags-for,$(1)) -c $$< -o $$@
endif
endef
define make-c99-addon-kers-rule
$(BASE_OBJ_ADDON_PATH)/$(3)/$(KERNELS_DIR)/%.o: $(ADDON_PATH)/$(3)/$(KERNELS_DIR)/%.$(2) $(BLIS_H_FLAT) $(ADDON_H99_FILES) $(MAKE_DEFS_MK_PATHS)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(call get-addon-kernel-c99flags-for,$(1)) -c $$< -o $$@
else
@echo "Compiling $$@" $(call get-addon-kernel-text-for,$(1))
@$(CC) $(call get-addon-kernel-c99flags-for,$(1)) -c $$< -o $$@
endif
endef
define make-cxx-addon-rule
$(BASE_OBJ_ADDON_PATH)/%.o: $(ADDON_PATH)/%.$(2) $(BLIS_H_FLAT) $(ADDON_HXX_FILES) $(MAKE_DEFS_MK_PATHS)
ifeq ($(ENABLE_VERBOSE),yes)
$(CXX) $(call get-addon-cxxflags-for,$(1)) -c $$< -o $$@
else
@echo "Compiling $$@" $(call get-addon-cxxtext-for,$(1))
@$(CXX) $(call get-addon-cxxflags-for,$(1)) -c $$< -o $$@
endif
endef
define make-c99-sandbox-rule
$(BASE_OBJ_SANDBOX_PATH)/%.o: $(SANDBOX_PATH)/%.$(2) $(BLIS_H_FLAT) $(SANDBOX_H99_FILES) $(MAKE_DEFS_MK_PATHS)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(call get-sandbox-c99flags-for,$(1)) -c $$< -o $$@
else
@echo "Compiling $$@" $(call get-sandbox-c99text-for,$(1))
@$(CC) $(call get-sandbox-c99flags-for,$(1)) -c $$< -o $$@
endif
endef
define make-cxx-sandbox-rule
$(BASE_OBJ_SANDBOX_PATH)/%.o: $(SANDBOX_PATH)/%.$(2) $(BLIS_H_FLAT) $(SANDBOX_HXX_FILES) $(MAKE_DEFS_MK_PATHS)
ifeq ($(ENABLE_VERBOSE),yes)
$(CXX) $(call get-sandbox-cxxflags-for,$(1)) -c $$< -o $$@
else
@echo "Compiling $$@" $(call get-sandbox-cxxtext-for,$(1))
@$(CXX) $(call get-sandbox-cxxflags-for,$(1)) -c $$< -o $$@
endif
endef
get-config-for-kset = $(lastword $(subst :, ,$(filter $(1):%,$(KCONFIG_MAP))))
$(foreach conf, $(CONFIG_LIST), $(eval $(call make-config-rule,$(conf))))
$(foreach conf, $(CONFIG_NAME), $(eval $(call make-frame-rule,$(conf))))
$(foreach conf, $(CONFIG_LIST), $(eval $(call make-refinit-rule,$(conf))))
$(foreach conf, $(CONFIG_LIST), $(eval $(call make-refkern-rule,$(conf))))
$(foreach suf, $(KERNELS_SRC_SUFS), \
$(foreach kset, $(KERNEL_LIST), $(eval $(call make-kernels-rule,$(kset),$(call get-config-for-kset,$(kset)),$(suf)))))
$(foreach suf, $(ADDON_C99_SUFS), \
$(foreach conf, $(CONFIG_NAME), $(eval $(call make-c99-addon-rule,$(conf),$(suf)))))
$(foreach addon, $(ADDON_LIST), \
$(foreach suf, $(ADDON_C99_SUFS), \
$(foreach conf, $(CONFIG_NAME), $(eval $(call make-c99-addon-kers-rule,$(conf),$(suf),$(addon))))))
$(foreach suf, $(ADDON_CXX_SUFS), \
$(foreach conf, $(CONFIG_NAME), $(eval $(call make-cxx-addon-rule,$(conf),$(suf)))))
$(foreach suf, $(SANDBOX_C99_SUFS), \
$(foreach conf, $(CONFIG_NAME), $(eval $(call make-c99-sandbox-rule,$(conf),$(suf)))))
$(foreach suf, $(SANDBOX_CXX_SUFS), \
$(foreach conf, $(CONFIG_NAME), $(eval $(call make-cxx-sandbox-rule,$(conf),$(suf)))))
libblis: check-env $(MK_LIBS)
$(LIBBLIS_A_PATH): $(MK_BLIS_OBJS)
ifeq ($(ENABLE_VERBOSE),yes)
ifeq ($(ARG_MAX_HACK),yes)
$(file > $@.in,$^)
$(AR) $(ARFLAGS) $@ @$@.in
$(RM_F) $@.in
$(RANLIB) $@
else
$(AR) $(ARFLAGS) $@ $?
$(RANLIB) $@
endif
else ifeq ($(ARG_MAX_HACK),yes)
@echo "Archiving $@"
@$(file > $@.in,$^)
@$(AR) $(ARFLAGS) $@ @$@.in
@$(RM_F) $@.in
@$(RANLIB) $@
else
@echo "Archiving $@"
@$(AR) $(ARFLAGS) $@ $?
@$(RANLIB) $@
endif
endif
$(LIBBLIS_SO_PATH): $(MK_BLIS_OBJS)
ifeq ($(ENABLE_VERBOSE),yes)
ifeq ($(ARG_MAX_HACK),yes)
$(file > $@.in,$^)
$(LINKER) $(SOFLAGS) -o $(LIBBLIS_SO_OUTPUT_NAME) @$@.in $(LDFLAGS)
$(RM_F) $@.in
else
$(LINKER) $(SOFLAGS) -o $(LIBBLIS_SO_OUTPUT_NAME) $^ $(LDFLAGS)
endif
else ifeq ($(ARG_MAX_HACK),yes)
@echo "Dynamically linking $@"
@$(file > $@.in,$^)
@$(LINKER) $(SOFLAGS) -o $(LIBBLIS_SO_OUTPUT_NAME) @$@.in $(LDFLAGS)
@$(RM_F) $@.in
else
@echo "Dynamically linking $@"
@$(LINKER) $(SOFLAGS) -o $(LIBBLIS_SO_OUTPUT_NAME) $^ $(LDFLAGS)
endif
endif
$(LIBBLIS_SO_MAJ_PATH): $(LIBBLIS_SO_PATH)
ifeq ($(IS_WIN),no)
ifeq ($(ENABLE_VERBOSE),yes)
$(SYMLINK) $(<F) $(@F).loc
$(MV) $(@F).loc $(BASE_LIB_PATH)/$(@F)
else @echo "Creating symlink $@"
@$(SYMLINK) $(<F) $(@F).loc
@$(MV) $(@F).loc $(BASE_LIB_PATH)/$(@F)
endif
endif
testblas: blastest-run
blastest-f2c: check-env $(BLASTEST_F2C_LIB)
blastest-bin: check-env blastest-f2c $(BLASTEST_DRV_BIN_PATHS)
blastest-run: $(BLASTEST_DRV_BINS_R)
$(BASE_OBJ_BLASTEST_PATH)/%.o: $(BLASTEST_F2C_SRC_PATH)/%.c $(BLIS_H_FLAT)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(call get-user-cflags-for,$(CONFIG_NAME)) $(BLAT_CFLAGS) -c $< -o $@
else
@echo "Compiling $@"
@$(CC) $(call get-user-cflags-for,$(CONFIG_NAME)) $(BLAT_CFLAGS) -c $< -o $@
endif
$(BASE_OBJ_BLASTEST_PATH)/%.o: $(BLASTEST_DRV_SRC_PATH)/%.c $(BLIS_H_FLAT)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(call get-user-cflags-for,$(CONFIG_NAME)) $(BLAT_CFLAGS) -c $< -o $@
else
@echo "Compiling $@"
@$(CC) $(call get-user-cflags-for,$(CONFIG_NAME)) $(BLAT_CFLAGS) -c $< -o $@
endif
$(BLASTEST_F2C_LIB): $(BLASTEST_F2C_OBJS)
ifeq ($(ENABLE_VERBOSE),yes)
$(AR) $(ARFLAGS) $@ $?
$(RANLIB) $@
else
@echo "Archiving $@"
@$(AR) $(ARFLAGS) $@ $?
@$(RANLIB) $@
endif
$(BASE_OBJ_BLASTEST_PATH)/%.x: $(BASE_OBJ_BLASTEST_PATH)/%.o $(BLASTEST_F2C_LIB) $(LIBBLIS_LINK)
ifeq ($(ENABLE_VERBOSE),yes)
$(LINKER) $< $(BLASTEST_F2C_LIB) $(LIBBLIS_LINK) $(LDFLAGS) -o $@
else
@echo "Linking $@ against '$(notdir $(BLASTEST_F2C_LIB)) $(LIBBLIS_LINK) "$(LDFLAGS)"'"
@$(LINKER) $< $(BLASTEST_F2C_LIB) $(LIBBLIS_LINK) $(LDFLAGS) -o $@
endif
define make-run-blat1-rule
run-$(1): $(BASE_OBJ_BLASTEST_PATH)/$(1).x
ifeq ($(ENABLE_VERBOSE),yes)
$(TESTSUITE_WRAPPER) $(BASE_OBJ_BLASTEST_PATH)/$(1).x > out.$(1)
else
@echo "Running $(1).x > 'out.$(1)'"
@$(TESTSUITE_WRAPPER) $(BASE_OBJ_BLASTEST_PATH)/$(1).x > out.$(1)
endif
endef
$(foreach name, $(BLASTEST_DRV1_BASES), $(eval $(call make-run-blat1-rule,$(name))))
define make-run-blat23-rule
run-$(1): $(BASE_OBJ_BLASTEST_PATH)/$(1).x
ifeq ($(ENABLE_VERBOSE),yes)
$(TESTSUITE_WRAPPER) $(BASE_OBJ_BLASTEST_PATH)/$(1).x < $(BLASTEST_INPUT_PATH)/$(1).in
else
@echo "Running $(1).x < '$(BLASTEST_INPUT_PATH)/$(1).in' (output to 'out.$(1)')"
@$(TESTSUITE_WRAPPER) $(BASE_OBJ_BLASTEST_PATH)/$(1).x < $(BLASTEST_INPUT_PATH)/$(1).in
endif
endef
$(foreach name, $(BLASTEST_DRV2_BASES), $(eval $(call make-run-blat23-rule,$(name))))
$(foreach name, $(BLASTEST_DRV3_BASES), $(eval $(call make-run-blat23-rule,$(name))))
checkblas: blastest-run
ifeq ($(ENABLE_VERBOSE),yes)
- $(BLASTEST_CHECK_PATH)
else
@- $(BLASTEST_CHECK_PATH)
endif
testblis: testsuite
testblis-fast: testsuite-run-fast
testblis-md: testsuite-run-md
testblis-salt: testsuite-run-salt
testsuite: testsuite-run
testsuite-bin: check-env $(TESTSUITE_BIN)
$(BASE_OBJ_TESTSUITE_PATH)/%.o: $(TESTSUITE_SRC_PATH)/%.c $(BLIS_H_FLAT)
ifeq ($(ENABLE_VERBOSE),yes)
$(CC) $(call get-user-cflags-for,$(CONFIG_NAME)) -c $< -o $@
else
@echo "Compiling $@"
@$(CC) $(call get-user-cflags-for,$(CONFIG_NAME)) -c $< -o $@
endif
$(TESTSUITE_BIN): $(MK_TESTSUITE_OBJS) $(LIBBLIS_LINK)
ifeq ($(ENABLE_VERBOSE),yes)
$(LINKER) $(MK_TESTSUITE_OBJS) $(LIBBLIS_LINK) $(LDFLAGS) -o $@
else
@echo "Linking $@ against '$(LIBBLIS_LINK) "$(LDFLAGS)"'"
@$(LINKER) $(MK_TESTSUITE_OBJS) $(LIBBLIS_LINK) $(LDFLAGS) -o $@
endif
testsuite-run: testsuite-bin
ifeq ($(ENABLE_VERBOSE),yes)
$(TESTSUITE_WRAPPER) ./$(TESTSUITE_BIN) -g $(TESTSUITE_CONF_GEN_PATH) \
-o $(TESTSUITE_CONF_OPS_PATH) \
> $(TESTSUITE_OUT_FILE)
else
@echo "Running $(TESTSUITE_BIN) with output redirected to '$(TESTSUITE_OUT_FILE)'"
@$(TESTSUITE_WRAPPER) ./$(TESTSUITE_BIN) -g $(TESTSUITE_CONF_GEN_PATH) \
-o $(TESTSUITE_CONF_OPS_PATH) \
> $(TESTSUITE_OUT_FILE)
endif
testsuite-run-fast: testsuite-bin
ifeq ($(ENABLE_VERBOSE),yes)
$(TESTSUITE_WRAPPER) ./$(TESTSUITE_BIN) -g $(TESTSUITE_FAST_GEN_PATH) \
-o $(TESTSUITE_FAST_OPS_PATH) \
> $(TESTSUITE_OUT_FILE)
else
@echo "Running $(TESTSUITE_BIN) (fast) with output redirected to '$(TESTSUITE_OUT_FILE)'"
@$(TESTSUITE_WRAPPER) ./$(TESTSUITE_BIN) -g $(TESTSUITE_FAST_GEN_PATH) \
-o $(TESTSUITE_FAST_OPS_PATH) \
> $(TESTSUITE_OUT_FILE)
endif
testsuite-run-md: testsuite-bin
ifeq ($(ENABLE_VERBOSE),yes)
$(TESTSUITE_WRAPPER) ./$(TESTSUITE_BIN) -g $(TESTSUITE_MIXD_GEN_PATH) \
-o $(TESTSUITE_MIXD_OPS_PATH) \
> $(TESTSUITE_OUT_FILE)
else
@echo "Running $(TESTSUITE_BIN) (mixed dt) with output redirected to '$(TESTSUITE_OUT_FILE)'"
@$(TESTSUITE_WRAPPER) ./$(TESTSUITE_BIN) -g $(TESTSUITE_MIXD_GEN_PATH) \
-o $(TESTSUITE_MIXD_OPS_PATH) \
> $(TESTSUITE_OUT_FILE)
endif
testsuite-run-salt: testsuite-bin
ifeq ($(ENABLE_VERBOSE),yes)
$(TESTSUITE_WRAPPER) ./$(TESTSUITE_BIN) -g $(TESTSUITE_SALT_GEN_PATH) \
-o $(TESTSUITE_SALT_OPS_PATH) \
> $(TESTSUITE_OUT_FILE)
else
@echo "Running $(TESTSUITE_BIN) (salt) with output redirected to '$(TESTSUITE_OUT_FILE)'"
@$(TESTSUITE_WRAPPER) ./$(TESTSUITE_BIN) -g $(TESTSUITE_SALT_GEN_PATH) \
-o $(TESTSUITE_SALT_OPS_PATH) \
> $(TESTSUITE_OUT_FILE)
endif
checkblis: testsuite-run
ifeq ($(ENABLE_VERBOSE),yes)
- $(TESTSUITE_CHECK_PATH) $(TESTSUITE_OUT_FILE)
else
@- $(TESTSUITE_CHECK_PATH) $(TESTSUITE_OUT_FILE)
endif
checkblis-fast: testsuite-run-fast
ifeq ($(ENABLE_VERBOSE),yes)
- $(TESTSUITE_CHECK_PATH) $(TESTSUITE_OUT_FILE)
else
@- $(TESTSUITE_CHECK_PATH) $(TESTSUITE_OUT_FILE)
endif
checkblis-md: testsuite-run-md
ifeq ($(ENABLE_VERBOSE),yes)
- $(TESTSUITE_CHECK_PATH) $(TESTSUITE_OUT_FILE)
else
@- $(TESTSUITE_CHECK_PATH) $(TESTSUITE_OUT_FILE)
endif
checkblis-salt: testsuite-run-salt
ifeq ($(ENABLE_VERBOSE),yes)
- $(TESTSUITE_CHECK_PATH) $(TESTSUITE_OUT_FILE)
else
@- $(TESTSUITE_CHECK_PATH) $(TESTSUITE_OUT_FILE)
endif
install-headers: check-env $(MK_INCL_DIR_INST) install-helper-headers
$(MK_INCL_DIR_INST): $(HEADERS_TO_INSTALL) $(CONFIG_MK_FILE)
ifeq ($(ENABLE_VERBOSE),yes)
$(MKDIR) $(@)
$(INSTALL) -m 0644 $(HEADERS_TO_INSTALL) $(@)
else
@$(MKDIR) $(@)
@echo "Installing $(notdir $(HEADERS_TO_INSTALL)) into $(@)/"
@$(INSTALL) -m 0644 $(HEADERS_TO_INSTALL) $(@)
endif
install-helper-headers: check-env $(HELP_HEADERS_INSTALLED)
define make-helper-header-rule
$(INSTALL_INCDIR)/$(notdir $(1)): $(BUILD_PATH)/$(notdir $(1)) $(CONFIG_MK_FILE)
ifeq ($(ENABLE_VERBOSE),yes)
$(MKDIR) $(INSTALL_INCDIR)
$(INSTALL) -m 0644 $$(<) $$(@)
else
@$(MKDIR) $(INSTALL_INCDIR)
@echo "Installing $$(@F) helper header into $(INSTALL_INCDIR)/"
@$(INSTALL) -m 0644 $$(<) $$(@)
endif
endef
$(foreach h, $(HELP_HEADERS_TO_INSTALL), $(eval $(call make-helper-header-rule,$(h))))
install-share: check-env $(MK_SHARE_DIR_INST) $(PC_SHARE_DIR_INST)
$(MK_SHARE_DIR_INST): $(FRAGS_TO_INSTALL) $(CONFIG_MK_FILE)
ifeq ($(ENABLE_VERBOSE),yes)
$(MKDIR) $(@)
$(INSTALL) -m 0644 $(FRAGS_TO_INSTALL) $(@)
$(MKDIR) -p $(@)/$(CONFIG_DIR)/$(CONFIG_NAME)
$(INSTALL) -m 0644 $(CONFIG_DIR)/$(CONFIG_NAME)/$(MAKE_DEFS_FILE) \
$(@)/$(CONFIG_DIR)/$(CONFIG_NAME)
else
@$(MKDIR) $(@)
@echo "Installing $(notdir $(FRAGS_TO_INSTALL)) into $(@)/"
@$(INSTALL) -m 0644 $(FRAGS_TO_INSTALL) $(@)
@$(MKDIR) -p $(@)/$(CONFIG_DIR)/$(CONFIG_NAME)
@echo "Installing $(CONFIG_DIR)/$(CONFIG_NAME)/$(MAKE_DEFS_FILE) into $(@)/$(CONFIG_DIR)/$(CONFIG_NAME)"
@$(INSTALL) -m 0644 $(CONFIG_DIR)/$(CONFIG_NAME)/$(MAKE_DEFS_FILE) \
$(@)/$(CONFIG_DIR)/$(CONFIG_NAME)/
endif
$(PC_SHARE_DIR_INST): $(PC_IN_FILE)
ifeq ($(ENABLE_VERBOSE),yes)
$(MKDIR) $(@)
$(shell cat "$(PC_IN_FILE)" \
| sed -e "s#@PACKAGE_VERSION@#$(VERSION)#g" \
| sed -e "s#@prefix@#$(prefix)#g" \
| sed -e "s#@exec_prefix@#$(exec_prefix)#g" \
| sed -e "s#@libdir@#$(libdir)#g" \
| sed -e "s#@includedir@#$(includedir)#g" \
| sed -e "s#@LDFLAGS@#$(LDFLAGS)#g" \
> "$(PC_OUT_FILE)" )
$(INSTALL) -m 0644 $(PC_OUT_FILE) $(@)
else
@$(MKDIR) $(@)
@echo "Installing $(PC_OUT_FILE) into $(@)/"
@$(shell cat "$(PC_IN_FILE)" \
| sed -e "s#@PACKAGE_VERSION@#$(VERSION)#g" \
| sed -e "s#@prefix@#$(prefix)#g" \
| sed -e "s#@exec_prefix@#$(exec_prefix)#g" \
| sed -e "s#@libdir@#$(libdir)#g" \
| sed -e "s#@includedir@#$(includedir)#g" \
| sed -e "s#@LDFLAGS@#$(LDFLAGS)#g" \
> "$(PC_OUT_FILE)" )
@$(INSTALL) -m 0644 $(PC_OUT_FILE) $(@)
endif
install-libs: check-env $(MK_LIBS_INST)
$(INSTALL_LIBDIR)/%.a: $(BASE_LIB_PATH)/%.a $(CONFIG_MK_FILE)
ifeq ($(ENABLE_VERBOSE),yes)
$(MKDIR) $(@D)
$(INSTALL) -m 0644 $< $@
else
@echo "Installing $(@F) into $(INSTALL_LIBDIR)/"
@$(MKDIR) $(@D)
@$(INSTALL) -m 0644 $< $@
endif
ifeq ($(IS_WIN),no)
$(INSTALL_LIBDIR)/%.$(LIBBLIS_SO_MMB_EXT): $(BASE_LIB_PATH)/%.$(SHLIB_EXT) $(CONFIG_MK_FILE)
ifeq ($(ENABLE_VERBOSE),yes)
$(MKDIR) $(@D)
$(INSTALL) -m 0755 $< $@
else
@echo "Installing $(@F) into $(INSTALL_LIBDIR)/"
@$(MKDIR) $(@D)
@$(INSTALL) -m 0755 $< $@
endif
else
$(INSTALL_LIBDIR)/%.$(SHLIB_EXT): $(BASE_LIB_PATH)/%.$(SHLIB_EXT)
ifeq ($(ENABLE_VERBOSE),yes)
@$(MKDIR) $(@D)
@$(INSTALL) -m 0644 $(BASE_LIB_PATH)/$(@F) $@
else
@echo "Installing $(@F) into $(INSTALL_LIBDIR)/"
@$(MKDIR) $(@D)
@$(INSTALL) -m 0644 $(BASE_LIB_PATH)/$(@F) $@
endif
$(INSTALL_LIBDIR)/%.$(LIBBLIS_SO_MAJ_EXT): $(BASE_LIB_PATH)/%.$(LIBBLIS_SO_MAJ_EXT)
ifeq ($(ENABLE_VERBOSE),yes)
@$(MKDIR) $(@D)
@$(INSTALL) -m 0644 $(BASE_LIB_PATH)/$(@F) $@
else
@echo "Installing $(@F) into $(INSTALL_LIBDIR)/"
@$(MKDIR) $(@D)
@$(INSTALL) -m 0644 $(BASE_LIB_PATH)/$(@F) $@
endif
endif
install-lib-symlinks: check-env $(MK_LIBS_SYML)
ifeq ($(IS_WIN),no)
$(INSTALL_LIBDIR)/%.$(SHLIB_EXT): $(INSTALL_LIBDIR)/%.$(LIBBLIS_SO_MMB_EXT)
ifeq ($(ENABLE_VERBOSE),yes)
$(SYMLINK) $(<F) $(@F)
$(MV) $(@F) $(INSTALL_LIBDIR)/
else
@echo "Installing symlink $(@F) into $(INSTALL_LIBDIR)/"
@$(SYMLINK) $(<F) $(@F)
@$(MV) $(@F) $(INSTALL_LIBDIR)/
endif
$(INSTALL_LIBDIR)/%.$(LIBBLIS_SO_MAJ_EXT): $(INSTALL_LIBDIR)/%.$(LIBBLIS_SO_MMB_EXT)
ifeq ($(ENABLE_VERBOSE),yes)
$(SYMLINK) $(<F) $(@F)
$(MV) $(@F) $(INSTALL_LIBDIR)/
else
@echo "Installing symlink $(@F) into $(INSTALL_LIBDIR)/"
@$(SYMLINK) $(<F) $(@F)
@$(MV) $(@F) $(INSTALL_LIBDIR)/
endif
endif
showconfig: check-env
@echo "configuration family: $(CONFIG_NAME)"
@echo "sub-configurations: $(CONFIG_LIST)"
@echo "requisite kernels sets: $(KERNEL_LIST)"
@echo "kernel-to-config map: $(KCONFIG_MAP)"
@echo "-------------------------"
@echo "BLIS version string: $(VERSION)"
@echo ".so major version: $(SO_MAJOR)"
@echo ".so minor.build vers: $(SO_MINORB)"
@echo "install libdir: $(INSTALL_LIBDIR)"
@echo "install includedir: $(INSTALL_INCDIR)"
@echo "install sharedir: $(INSTALL_SHAREDIR)"
@echo "debugging status: $(DEBUG_TYPE)"
@echo "enable AddressSanitizer? $(MK_ENABLE_ASAN)"
@echo "enabled threading model(s): $(THREADING_MODEL)"
@echo "enable BLAS API? $(MK_ENABLE_BLAS)"
@echo "enable CBLAS API? $(MK_ENABLE_CBLAS)"
@echo "build static library? $(MK_ENABLE_STATIC)"
@echo "build shared library? $(MK_ENABLE_SHARED)"
@echo "ARG_MAX hack enabled? $(ARG_MAX_HACK)"
cleanmk:
ifeq ($(IS_CONFIGURED),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(FIND) $(CONFIG_FRAG_PATH) -name "$(FRAGMENT_MK)" | $(XARGS) $(RM_F)
- $(FIND) $(FRAME_FRAG_PATH) -name "$(FRAGMENT_MK)" | $(XARGS) $(RM_F)
- $(FIND) $(REFKERN_FRAG_PATH) -name "$(FRAGMENT_MK)" | $(XARGS) $(RM_F)
- $(FIND) $(KERNELS_FRAG_PATH) -name "$(FRAGMENT_MK)" | $(XARGS) $(RM_F)
ifneq ($(ADDON_LIST),)
- $(FIND) $(ADDON_FRAG_PATH) -name "$(FRAGMENT_MK)" | $(XARGS) $(RM_F)
endif
ifneq ($(SANDBOX),)
- $(FIND) $(SANDBOX_FRAG_PATH) -name "$(FRAGMENT_MK)" | $(XARGS) $(RM_F)
endif
else
@echo "Removing makefile fragments from $(CONFIG_FRAG_PATH)"
@- $(FIND) $(CONFIG_FRAG_PATH) -name "$(FRAGMENT_MK)" | $(XARGS) $(RM_F)
@echo "Removing makefile fragments from $(FRAME_FRAG_PATH)"
@- $(FIND) $(FRAME_FRAG_PATH) -name "$(FRAGMENT_MK)" | $(XARGS) $(RM_F)
@echo "Removing makefile fragments from $(REFKERN_FRAG_PATH)"
@- $(FIND) $(REFKERN_FRAG_PATH) -name "$(FRAGMENT_MK)" | $(XARGS) $(RM_F)
@echo "Removing makefile fragments from $(KERNELS_FRAG_PATH)"
@- $(FIND) $(KERNELS_FRAG_PATH) -name "$(FRAGMENT_MK)" | $(XARGS) $(RM_F)
ifneq ($(ADDON_LIST),)
@echo "Removing makefile fragments from $(ADDON_FRAG_PATH)"
@- $(FIND) $(ADDON_FRAG_PATH) -name "$(FRAGMENT_MK)" | $(XARGS) $(RM_F)
endif
ifneq ($(SANDBOX),)
@echo "Removing makefile fragments from $(SANDBOX_FRAG_PATH)"
@- $(FIND) $(SANDBOX_FRAG_PATH) -name "$(FRAGMENT_MK)" | $(XARGS) $(RM_F)
endif
endif
endif
cleanh:
ifeq ($(IS_CONFIGURED),yes)
ifeq ($(ENABLE_VERBOSE),yes)
$(RM_F) $(BLIS_H_FLAT)
$(RM_F) $(CBLAS_H_FLAT)
else
@echo "Removing flattened header files from $(BASE_INC_PATH)"
@$(RM_F) $(BLIS_H_FLAT)
@$(RM_F) $(CBLAS_H_FLAT)
endif
endif
cleanlib:
ifeq ($(IS_CONFIGURED),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(FIND) $(BASE_OBJ_PATH) -name "*.o" | $(XARGS) $(RM_F)
- $(RM_F) $(LIBBLIS_A_PATH)
- $(RM_F) $(LIBBLIS_SO_PATH)
else
@echo "Removing object files from $(BASE_OBJ_PATH)"
@- $(FIND) $(BASE_OBJ_PATH) -name "*.o" | $(XARGS) $(RM_F)
@echo "Removing libraries from $(BASE_LIB_PATH)"
@- $(RM_F) $(LIBBLIS_A_PATH)
@- $(RM_F) $(LIBBLIS_SO_PATH)
endif
endif
cleantest: cleanblastest cleanblistest
ifeq ($(BUILDING_OOT),no)
cleanblastest: cleanblastesttop cleanblastestdir
else
cleanblastest: cleanblastesttop
endif
cleanblastesttop:
ifeq ($(IS_CONFIGURED),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(RM_F) $(BLASTEST_F2C_OBJS) $(BLASTEST_DRV_OBJS)
- $(RM_F) $(BLASTEST_F2C_LIB)
- $(RM_F) $(BLASTEST_DRV_BIN_PATHS)
- $(RM_F) $(addprefix out.,$(BLASTEST_DRV_BASES))
else
@echo "Removing object files from $(BASE_OBJ_BLASTEST_PATH)"
@- $(RM_F) $(BLASTEST_F2C_OBJS) $(BLASTEST_DRV_OBJS)
@echo "Removing libf2c.a from $(BASE_OBJ_BLASTEST_PATH)"
@- $(RM_F) $(BLASTEST_F2C_LIB)
@echo "Removing binaries from $(BASE_OBJ_BLASTEST_PATH)"
@- $(RM_F) $(BLASTEST_DRV_BIN_PATHS)
@echo "Removing driver output files 'out.*'"
@- $(RM_F) $(addprefix out.,$(BLASTEST_DRV_BASES))
endif endif
cleanblastestdir:
ifeq ($(IS_CONFIGURED),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(FIND) $(BLASTEST_DIR)/$(OBJ_DIR) -name "*.o" | $(XARGS) $(RM_F)
- $(FIND) $(BLASTEST_DIR) -name "*.x" | $(XARGS) $(RM_F)
- $(RM_F) $(BLASTEST_DIR)/$(BLASTEST_F2C_LIB_NAME)
- $(RM_F) $(addprefix $(BLASTEST_DIR)/out.,$(BLASTEST_DRV_BASES))
else
@echo "Removing object files from ./$(BLASTEST_DIR)/$(OBJ_DIR)"
@- $(FIND) $(BLASTEST_DIR)/$(OBJ_DIR) -name "*.o" | $(XARGS) $(RM_F)
@echo "Removing libf2c.a from ./$(BLASTEST_DIR)"
@- $(RM_F) $(BLASTEST_DIR)/$(BLASTEST_F2C_LIB_NAME)
@echo "Removing binaries from ./$(BLASTEST_DIR)"
@- $(FIND) $(BLASTEST_DIR) -name "*.x" | $(XARGS) $(RM_F)
@echo "Removing driver output files 'out.*' from ./$(BLASTEST_DIR)"
@- $(RM_F) $(addprefix $(BLASTEST_DIR)/out.,$(BLASTEST_DRV_BASES))
endif endif
ifeq ($(BUILDING_OOT),no)
cleanblistest: cleanblistesttop cleanblistestdir
else
cleanblistest: cleanblistesttop
endif
cleanblistesttop:
ifeq ($(IS_CONFIGURED),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(RM_F) $(MK_TESTSUITE_OBJS)
- $(RM_F) $(TESTSUITE_BIN)
- $(RM_F) $(TESTSUITE_OUT_FILE)
else
@echo "Removing object files from $(BASE_OBJ_TESTSUITE_PATH)"
@- $(RM_F) $(MK_TESTSUITE_OBJS)
@echo "Removing binary $(TESTSUITE_BIN)"
@- $(RM_F) $(TESTSUITE_BIN)
@echo "Removing $(TESTSUITE_OUT_FILE)"
@- $(RM_F) $(TESTSUITE_OUT_FILE)
endif endif
cleanblistestdir:
ifeq ($(IS_CONFIGURED),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(FIND) $(TESTSUITE_DIR)/$(OBJ_DIR) -name "*.o" | $(XARGS) $(RM_F)
- $(RM_F) $(TESTSUITE_DIR)/$(TESTSUITE_BIN)
else
@echo "Removing object files from $(TESTSUITE_DIR)/$(OBJ_DIR)"
@- $(FIND) $(TESTSUITE_DIR)/$(OBJ_DIR) -name "*.o" | $(XARGS) $(RM_F)
@echo "Removing binary $(TESTSUITE_DIR)/$(TESTSUITE_BIN)"
@- $(RM_F) $(TESTSUITE_DIR)/$(TESTSUITE_BIN)
endif endif
distclean: cleanmk cleanh cleanlib cleantest
ifeq ($(IS_CONFIGURED),yes)
ifeq ($(ENABLE_VERBOSE),yes)
- $(RM_F) $(BLIS_ADDON_H)
- $(RM_F) $(BLIS_CONFIG_H)
- $(RM_F) $(CONFIG_MK_FILE)
- $(RM_F) $(PC_OUT_FILE)
- $(RM_RF) $(OBJ_DIR)
- $(RM_RF) $(LIB_DIR)
- $(RM_RF) $(INCLUDE_DIR)
else
@echo "Removing $(BLIS_ADDON_H)"
@$(RM_F) $(BLIS_ADDON_H)
@echo "Removing $(BLIS_CONFIG_H)"
@$(RM_F) $(BLIS_CONFIG_H)
@echo "Removing $(CONFIG_MK_FILE)"
@- $(RM_F) $(CONFIG_MK_FILE)
@echo "Removing $(PC_OUT_FILE)"
@- $(RM_F) $(PC_OUT_FILE)
@echo "Removing $(OBJ_DIR)"
@- $(RM_RF) $(OBJ_DIR)
@echo "Removing $(LIB_DIR)"
@- $(RM_RF) $(LIB_DIR)
@echo "Removing $(INCLUDE_DIR)"
@- $(RM_RF) $(INCLUDE_DIR)
endif
endif
changelog:
@echo "Updating '$(DIST_PATH)/$(CHANGELOG)' via '$(GIT_LOG)'"
@$(GIT_LOG) > $(DIST_PATH)/$(CHANGELOG)
uninstall-libs: check-env
ifeq ($(ENABLE_VERBOSE),yes)
- $(RM_F) $(MK_LIBS_INST)
else
@echo "Uninstalling libraries $(notdir $(MK_LIBS_INST)) from $(dir $(firstword $(MK_LIBS_INST)))"
@- $(RM_F) $(MK_LIBS_INST)
endif
uninstall-lib-symlinks: check-env
ifeq ($(ENABLE_VERBOSE),yes)
- $(RM_F) $(MK_LIBS_SYML)
else
@echo "Uninstalling symlinks $(notdir $(MK_LIBS_SYML)) from $(dir $(firstword $(MK_LIBS_SYML)))"
@- $(RM_F) $(MK_LIBS_SYML)
endif
uninstall-headers: check-env
ifeq ($(ENABLE_VERBOSE),yes)
- $(RM_RF) $(MK_INCL_DIR_INST)
- $(RM_RF) $(HELP_HEADERS_INSTALLED)
else
@echo "Uninstalling directory '$(notdir $(MK_INCL_DIR_INST))' from $(dir $(MK_INCL_DIR_INST))"
@- $(RM_RF) $(MK_INCL_DIR_INST)
@echo "Uninstalling $(notdir $(HELP_HEADERS_INSTALLED)) from $(dir $(INSTALL_INCDIR))"
@- $(RM_RF) $(HELP_HEADERS_INSTALLED)
endif
uninstall-share: check-env
ifeq ($(ENABLE_VERBOSE),yes)
- $(RM_RF) $(MK_SHARE_DIR_INST)
else
@echo "Uninstalling directory '$(notdir $(MK_SHARE_DIR_INST))' from $(dir $(MK_SHARE_DIR_INST))"
@- $(RM_RF) $(MK_SHARE_DIR_INST)
endif
uninstall-old-libs: $(UNINSTALL_OLD_LIBS) check-env
uninstall-old-symlinks: $(UNINSTALL_OLD_SYML) check-env
uninstall-old-headers: $(UNINSTALL_OLD_HEADERS) check-env
$(UNINSTALL_OLD_LIBS) $(UNINSTALL_OLD_SYML) $(UNINSTALL_OLD_HEADERS): check-env
ifeq ($(ENABLE_VERBOSE),yes)
- $(RM_F) $@
else
@echo "Uninstalling $(@F) from $(@D)/"
@- $(RM_F) $@
endif