ifndef COMMON_MK_INCLUDED
COMMON_MK_INCLUDED := yes
define store-var-for
$(strip $(1)).$(strip $(2)) := $($(strip $(1)))
endef
define append-var-for
$(strip $(1)).$(strip $(2)) += $($(strip $(1)))
endef
define store-make-defs
$(eval $(call store-var-for,CC, $(1)))
$(eval $(call store-var-for,CC_VENDOR, $(1)))
$(eval $(call store-var-for,CPPROCFLAGS,$(1)))
$(eval $(call store-var-for,CLANGFLAGS, $(1)))
$(eval $(call store-var-for,CXXLANGFLAGS,$(1)))
$(eval $(call store-var-for,CMISCFLAGS, $(1)))
$(eval $(call store-var-for,CPICFLAGS, $(1)))
$(eval $(call store-var-for,CWARNFLAGS, $(1)))
$(eval $(call store-var-for,CDBGFLAGS, $(1)))
$(eval $(call store-var-for,COPTFLAGS, $(1)))
$(eval $(call store-var-for,CKOPTFLAGS, $(1)))
$(eval $(call store-var-for,CKVECFLAGS, $(1)))
$(eval $(call store-var-for,CROPTFLAGS, $(1)))
$(eval $(call store-var-for,CRVECFLAGS, $(1)))
CONFIGS_INCL += $(1)
endef
define load-var-for
$($(strip $(1)).$(strip $(2)))
endef
get-noopt-cflags-for = $(strip $(CFLAGS_PRESET) \
$(call load-var-for,CDBGFLAGS,$(1)) \
$(call load-var-for,CWARNFLAGS,$(1)) \
$(call load-var-for,CPICFLAGS,$(1)) \
$(call load-var-for,CMISCFLAGS,$(1)) \
$(call load-var-for,CLANGFLAGS,$(1)) \
$(call load-var-for,CPPROCFLAGS,$(1)) \
$(CTHREADFLAGS) \
$(CINCFLAGS) \
)
get-noopt-cxxflags-for = $(strip $(CFLAGS_PRESET) \
$(call load-var-for,CDBGFLAGS,$(1)) \
$(call load-var-for,CWARNFLAGS,$(1)) \
$(call load-var-for,CPICFLAGS,$(1)) \
$(call load-var-for,CMISCFLAGS,$(1)) \
$(call load-var-for,CXXLANGFLAGS,$(1)) \
$(call load-var-for,CPPROCFLAGS,$(1)) \
$(CTHREADFLAGS) \
$(CXXTHREADFLAGS) \
$(CINCFLAGS) \
)
get-refinit-cflags-for = $(strip $(call load-var-for,COPTFLAGS,$(1)) \
$(call get-noopt-cflags-for,$(1)) \
-DBLIS_CNAME=$(1) \
$(BUILD_ASANFLAGS) \
$(BUILD_CPPFLAGS) \
$(BUILD_SYMFLAGS) \
-DBLIS_IN_REF_KERNEL=1 \
-include $(CONFIG_PATH)/$(1)/bli_kernel_defs_$(1).h \
)
get-refkern-cflags-for = $(strip $(call load-var-for,CROPTFLAGS,$(1)) \
$(call load-var-for,CRVECFLAGS,$(1)) \
$(call get-noopt-cflags-for,$(1)) \
$(COMPSIMDFLAGS) \
-DBLIS_CNAME=$(1) \
$(BUILD_ASANFLAGS) \
$(BUILD_CPPFLAGS) \
$(BUILD_SYMFLAGS) \
-DBLIS_IN_REF_KERNEL=1 \
-include $(CONFIG_PATH)/$(1)/bli_kernel_defs_$(1).h \
)
get-config-cflags-for = $(strip $(call load-var-for,COPTFLAGS,$(1)) \
$(call get-noopt-cflags-for,$(1)) \
$(BUILD_ASANFLAGS) \
$(BUILD_CPPFLAGS) \
$(BUILD_SYMFLAGS) \
)
get-frame-cflags-for = $(strip $(call load-var-for,COPTFLAGS,$(1)) \
$(call get-noopt-cflags-for,$(1)) \
$(BUILD_ASANFLAGS) \
$(BUILD_CPPFLAGS) \
$(BUILD_SYMFLAGS) \
)
get-frame-cxxflags-for = $(strip $(call load-var-for,COPTFLAGS,$(1)) \
$(call get-noopt-cxxflags-for,$(1)) \
$(BUILD_ASANFLAGS) \
$(BUILD_CPPFLAGS) \
$(BUILD_SYMFLAGS) \
)
get-kernel-cflags-for = $(strip $(call load-var-for,CKOPTFLAGS,$(1)) \
$(call load-var-for,CKVECFLAGS,$(1)) \
$(call get-noopt-cflags-for,$(1)) \
$(BUILD_CPPFLAGS) \
$(BUILD_SYMFLAGS) \
)
get-addon-c99flags-for = $(strip $(call load-var-for,COPTFLAGS,$(1)) \
$(call get-noopt-cflags-for,$(1)) \
$(CADDONINCFLAGS) \
$(BUILD_CPPFLAGS) \
$(BUILD_SYMFLAGS) \
)
get-addon-cxxflags-for = $(strip $(call load-var-for,COPTFLAGS,$(1)) \
$(call get-noopt-cxxflags-for,$(1)) \
$(CADDONINCFLAGS) \
$(BUILD_CPPFLAGS) \
$(BUILD_SYMFLAGS) \
)
get-addon-kernel-c99flags-for = $(strip $(call load-var-for,CKOPTFLAGS,$(1)) \
$(call load-var-for,CKVECFLAGS,$(1)) \
$(call get-noopt-cflags-for,$(1)) \
$(CADDONINCFLAGS) \
$(BUILD_CPPFLAGS) \
$(BUILD_SYMFLAGS) \
)
get-sandbox-c99flags-for = $(strip $(call load-var-for,COPTFLAGS,$(1)) \
$(call get-noopt-cflags-for,$(1)) \
$(CSANDINCFLAGS) \
$(BUILD_CPPFLAGS) \
$(BUILD_SYMFLAGS) \
)
get-sandbox-cxxflags-for = $(strip $(call load-var-for,COPTFLAGS,$(1)) \
$(call get-noopt-cxxflags-for,$(1)) \
$(CSANDINCFLAGS) \
$(BUILD_CPPFLAGS) \
$(BUILD_SYMFLAGS) \
)
get-user-cflags-for = $(strip $(call load-var-for,COPTFLAGS,$(1)) \
$(call get-noopt-cflags-for,$(1)) \
)
get-noopt-text = "(CFLAGS for no optimization)"
get-refinit-text-for = "('$(1)' CFLAGS for ref. kernel init)"
get-refkern-text-for = "('$(1)' CFLAGS for ref. kernels)"
get-config-text-for = "('$(1)' CFLAGS for config code)"
get-frame-text-for = "('$(1)' CFLAGS for framework code)"
get-frame-cxxtext-for = "('$(1)' CXXFLAGS for framework code)"
get-kernel-text-for = "('$(1)' CFLAGS for kernels)"
get-addon-c99text-for = "('$(1)' CFLAGS for addons)"
get-addon-cxxtext-for = "('$(1)' CXXFLAGS for addons)"
get-addon-kernel-text-for = "('$(1)' CFLAGS for addon kernels)"
get-sandbox-c99text-for = "('$(1)' CFLAGS for sandboxes)"
get-sandbox-cxxtext-for = "('$(1)' CXXFLAGS for sandboxes)"
files-that-contain = $(strip $(foreach f, $(1), $(if $(findstring $(2),$(f)),$(f),)))
files-that-dont-contain = $(strip $(foreach f, $(1), $(if $(findstring $(2),$(f)),,$(f))))
rm-dups = $(if $1,$(firstword $1) $(call rm-dups,$(filter-out $(firstword $1),$1)))
ifeq ($(strip $(SHARE_PATH)),)
SHARE_PATH := .
endif
CONFIG_MK_FILE := config.mk
BASE_SHARE_PATH := $(SHARE_PATH)
-include $(BASE_SHARE_PATH)/$(CONFIG_MK_FILE)
ifeq ($(strip $(CONFIG_MK_INCLUDED)),yes)
CONFIG_MK_PRESENT := yes
IS_CONFIGURED := yes
else
CONFIG_MK_PRESENT := no
IS_CONFIGURED := no
endif
ifeq ($(IS_CONFIGURED),no)
DIST_PATH := .
INSTALL_LIBDIR := $(HOME)/blis/lib
INSTALL_INCDIR := $(HOME)/blis/include
INSTALL_SHAREDIR := $(HOME)/blis/share
endif
VERS_CONF := $(VERSION)-$(CONFIG_NAME)
FRAGMENT_MK := .fragment.mk
BUILD_DIR := build
CONFIG_DIR := config
FRAME_DIR := frame
REFKERN_DIR := ref_kernels
KERNELS_DIR := kernels
ADDON_DIR := addon
SANDBOX_DIR := sandbox
OBJ_DIR := obj
LIB_DIR := lib
INCLUDE_DIR := include
BLASTEST_DIR := blastest
TESTSUITE_DIR := testsuite
VEND_DIR := vendor
VEND_CPP_DIR := $(VEND_DIR)/cpp
VEND_TESTCPP_DIR := $(VEND_DIR)/testcpp
REFNM := ref
CONFIG_SRC_SUFS := c
KERNELS_SRC_SUFS := c s S
ifneq ($(findstring hpx,$(THREADING_MODEL)),)
FRAME_SRC_SUFS := c cpp
else
FRAME_SRC_SUFS := c
endif
ADDON_C99_SUFS := c
ADDON_CXX_SUFS := cc cpp cxx
ADDON_SRC_SUFS := $(ADDON_C99_SUFS) $(ADDON_CXX_SUFS)
SANDBOX_C99_SUFS := c
SANDBOX_CXX_SUFS := cc cpp cxx
SANDBOX_SRC_SUFS := $(SANDBOX_C99_SUFS) $(SANDBOX_CXX_SUFS)
FRAME_H99_SUFS := h
FRAME_HDR_SUFS := $(FRAME_H99_SUFS)
ADDON_H99_SUFS := h
ADDON_HXX_SUFS := hh hpp hxx
ADDON_HDR_SUFS := $(ADDON_H99_SUFS) $(ADDON_HXX_SUFS)
SANDBOX_H99_SUFS := h
SANDBOX_HXX_SUFS := hh hpp hxx
SANDBOX_HDR_SUFS := $(SANDBOX_H99_SUFS) $(SANDBOX_HXX_SUFS)
ALL_HDR_SUFS := $(sort $(FRAME_HDR_SUFS) \
$(ADDON_HDR_SUFS) \
$(SANDBOX_HDR_SUFS) )
ALL_H99_SUFS := $(sort $(FRAME_H99_SUFS) \
$(ADDON_H99_SUFS) \
$(SANDBOX_H99_SUFS) )
BLASTEST_CHECK := check-blastest.sh
TESTSUITE_CHECK := check-blistest.sh
TESTSUITE_CONF_GEN := input.general
TESTSUITE_CONF_OPS := input.operations
TESTSUITE_FAST_GEN := input.general.fast
TESTSUITE_FAST_OPS := input.operations.fast
TESTSUITE_MIXD_GEN := input.general.mixed
TESTSUITE_MIXD_OPS := input.operations.mixed
TESTSUITE_SALT_GEN := input.general.salt
TESTSUITE_SALT_OPS := input.operations.salt
TESTSUITE_OUT_FILE := output.testsuite
CHANGELOG := CHANGELOG
SHELL := bash
CONFIG_PATH := $(DIST_PATH)/$(CONFIG_DIR)
FRAME_PATH := $(DIST_PATH)/$(FRAME_DIR)
REFKERN_PATH := $(DIST_PATH)/$(REFKERN_DIR)
KERNELS_PATH := $(DIST_PATH)/$(KERNELS_DIR)
ADDON_PATH := $(DIST_PATH)/$(ADDON_DIR)
SANDBOX_PATH := $(DIST_PATH)/$(SANDBOX_DIR)
BUILD_PATH := $(DIST_PATH)/$(BUILD_DIR)
VEND_CPP_PATH := $(DIST_PATH)/$(VEND_CPP_DIR)
VEND_TESTCPP_PATH := $(DIST_PATH)/$(VEND_TESTCPP_DIR)
CONFIG_FRAG_PATH := ./obj/$(CONFIG_NAME)/$(CONFIG_DIR)
FRAME_FRAG_PATH := ./obj/$(CONFIG_NAME)/$(FRAME_DIR)
REFKERN_FRAG_PATH := ./obj/$(CONFIG_NAME)/$(REFKERN_DIR)
KERNELS_FRAG_PATH := ./obj/$(CONFIG_NAME)/$(KERNELS_DIR)
ADDON_FRAG_PATH := ./obj/$(CONFIG_NAME)/$(ADDON_DIR)
SANDBOX_FRAG_PATH := ./obj/$(CONFIG_NAME)/$(SANDBOX_DIR)
ifeq ($(strip $(LIB_PATH)),)
LIB_PATH := $(LIB_DIR)/$(CONFIG_NAME)
endif
BASE_LIB_PATH := $(LIB_PATH)
LIBBLIS := libblis
ifeq ($(OS_NAME),Darwin)
SHLIB_EXT := dylib
else ifeq ($(IS_WIN),yes)
ifeq ($(IS_MSVC),no)
SHLIB_EXT := dll.a
else
SHLIB_EXT := lib
endif
else
SHLIB_EXT := so
endif
LIBBLIS_A := $(LIBBLIS).a
LIBBLIS_SO := $(LIBBLIS).$(SHLIB_EXT)
LIBBLIS_A_PATH := $(BASE_LIB_PATH)/$(LIBBLIS_A)
LIBBLIS_SO_PATH := $(BASE_LIB_PATH)/$(LIBBLIS_SO)
ifeq ($(OS_NAME),Darwin)
LIBBLIS_SO_MAJ_EXT := $(SO_MAJOR).$(SHLIB_EXT)
LIBBLIS_SO_MMB_EXT := $(SO_MMB).$(SHLIB_EXT)
else ifeq ($(IS_WIN),yes)
LIBBLIS_SO_MAJ_EXT := $(SO_MAJOR).dll
LIBBLIS_SO_MMB_EXT :=
else
LIBBLIS_SO_MAJ_EXT := $(SHLIB_EXT).$(SO_MAJOR)
LIBBLIS_SO_MMB_EXT := $(SHLIB_EXT).$(SO_MMB)
endif
LIBBLIS_SONAME := $(LIBBLIS).$(LIBBLIS_SO_MAJ_EXT)
LIBBLIS_SO_MAJ_PATH := $(BASE_LIB_PATH)/$(LIBBLIS_SONAME)
ifeq ($(IS_WIN),yes)
LIBBLIS_SO_OUTPUT_NAME := $(LIBBLIS_SO_MAJ_PATH)
else
LIBBLIS_SO_OUTPUT_NAME := $(LIBBLIS_SO_PATH)
endif
SH := /bin/sh
MV := mv
MKDIR := mkdir -p
RM_F := rm -f
RM_RF := rm -rf
SYMLINK := ln -sf
FIND := find
GREP := grep
EGREP := grep -E
XARGS := xargs
INSTALL := install -c
DEVNULL := /dev/null
FLATTEN_H := $(PYTHON) $(DIST_PATH)/build/flatten-headers.py
ARFLAGS := cr
GIT := git
GIT_LOG := $(GIT) log --decorate
GEN_SYMS := $(BUILD_PATH)/gen-libblis-symbols.sh
SYM_FILE := $(BUILD_PATH)/libblis-symbols.def
ifeq ($(IS_MSVC),yes)
LIBM :=
else
LIBM := -lm
endif
LIBMEMKIND := -lmemkind
LDFLAGS := $(LDFLAGS_PRESET) $(LIBM) $(LIBPTHREAD)
ifeq ($(MK_ENABLE_MEMKIND),yes)
LDFLAGS += $(LIBMEMKIND)
endif
ifeq ($(CC_VENDOR),icc)
LDFLAGS := $(filter-out $(LIBM),$(LDFLAGS))
endif
ifeq ($(DEBUG_TYPE),sde)
LDFLAGS := $(filter-out $(LIBMEMKIND),$(LDFLAGS))
endif
ifeq ($(MK_ENABLE_ASAN),yes)
LDFLAGS += -fsanitize=address
endif
ifeq ($(OS_NAME),Darwin)
SOFLAGS := -dynamiclib
ifeq ($(MK_ENABLE_RPATH),yes)
SOFLAGS += -Wl,-install_name,@rpath/$(LIBBLIS_SONAME)
else
SOFLAGS += -Wl,-install_name,$(libdir)/$(LIBBLIS_SONAME)
endif
else
SOFLAGS := -shared
ifeq ($(IS_WIN),yes)
ifeq ($(IS_MSVC),yes)
SOFLAGS += -Wl,-implib:$(BASE_LIB_PATH)/$(LIBBLIS).lib
else
SOFLAGS += -Wl,--out-implib,$(BASE_LIB_PATH)/$(LIBBLIS).dll.a
endif
else
SOFLAGS += -Wl,-soname,$(LIBBLIS_SONAME)
endif
endif
LIBBLIS_L := $(LIBBLIS_A)
LIBBLIS_LINK := $(LIBBLIS_A_PATH)
ifeq ($(MK_ENABLE_SHARED),yes)
ifeq ($(MK_ENABLE_STATIC),no)
LIBBLIS_L := $(LIBBLIS_SO)
LIBBLIS_LINK := $(LIBBLIS_SO_PATH)
ifeq ($(IS_WIN),no)
ifeq ($(OS_NAME),Darwin)
LDFLAGS += -Wl,-rpath,@executable_path/$(BASE_LIB_PATH)
LDFLAGS += -Wl,-rpath,@executable_path/../../../$(BASE_LIB_PATH)
else
LDFLAGS += -Wl,-rpath,'$$ORIGIN/$(BASE_LIB_PATH)'
LDFLAGS += -Wl,-rpath,'$$ORIGIN/../../../$(BASE_LIB_PATH)'
endif
endif
endif
ifeq ($(IS_WIN),yes)
LIBBLIS_L := $(LIBBLIS_SO)
LIBBLIS_LINK := $(LIBBLIS_SO_PATH)
endif
endif
MAKE_DEFS_FILE := make_defs.mk
CONFIG_LIST_FAM := $(sort $(strip $(CONFIG_LIST) $(CONFIG_NAME)))
CONFIG_PATHS := $(addprefix $(BASE_SHARE_PATH)/$(CONFIG_DIR)/, \
$(CONFIG_LIST_FAM))
MAKE_DEFS_MK_PATHS := $(addsuffix /$(MAKE_DEFS_FILE), $(CONFIG_PATHS))
CONFIGS_INCL :=
-include $(MAKE_DEFS_MK_PATHS)
CONFIGS_EXPECTED := $(CONFIG_LIST_FAM)
ifeq ($(sort $(strip $(CONFIGS_INCL))), \
$(sort $(strip $(CONFIGS_EXPECTED))))
ALL_MAKE_DEFS_MK_PRESENT := yes
else
ALL_MAKE_DEFS_MK_PRESENT := no
endif
ifneq ($(findstring hpx,$(THREADING_MODEL)),)
LINKER := $(CXX)
else
LINKER := $(CC)
endif
CWARNFLAGS :=
ifneq ($(CC_VENDOR),ibm)
ifneq ($(CC_VENDOR),nvc)
CWARNFLAGS += -Wall -Wno-unused-function -Wfatal-errors
else
CWARNFLAGS += -Wall -Wno-unused-function
endif
endif
ifeq ($(CC_VENDOR),clang)
CWARNFLAGS += -Wno-tautological-compare -Wno-pass-failed
endif
$(foreach c, $(CONFIG_LIST_FAM), $(eval $(call append-var-for,CWARNFLAGS,$(c))))
ifeq ($(IS_MSVC),yes)
CPICFLAGS :=
endif
$(foreach c, $(CONFIG_LIST_FAM), $(eval $(call store-var-for,CPICFLAGS,$(c))))
ifeq ($(MK_ENABLE_SHARED),yes)
ifeq ($(CC_VENDOR),gcc)
ifeq ($(IS_WIN),yes)
ifeq ($(EXPORT_SHARED),all)
BUILD_SYMFLAGS := -Wl,--export-all-symbols, -Wl,--enable-auto-import
else BUILD_SYMFLAGS := -Wl,--exclude-all-symbols
endif
else ifeq ($(EXPORT_SHARED),all)
BUILD_SYMFLAGS := -fvisibility=default
else BUILD_SYMFLAGS := -fvisibility=hidden
endif
endif
endif
ifeq ($(CC_VENDOR),icc)
ifeq ($(EXPORT_SHARED),all)
BUILD_SYMFLAGS := -fvisibility=default
else BUILD_SYMFLAGS := -fvisibility=hidden
endif
endif
ifeq ($(CC_VENDOR),clang)
ifeq ($(IS_WIN),yes)
ifeq ($(IS_MSVC),no)
ifeq ($(EXPORT_SHARED),all)
BUILD_SYMFLAGS := -Wl,--export-all-symbols, -Wl,--enable-auto-import
else BUILD_SYMFLAGS := -Wl,--exclude-all-symbols
endif
endif ifeq ($(EXPORT_SHARED),all)
BUILD_SYMFLAGS :=
else BUILD_SYMFLAGS :=
endif
else ifeq ($(EXPORT_SHARED),all)
BUILD_SYMFLAGS := -fvisibility=default
else BUILD_SYMFLAGS := -fvisibility=hidden
endif
endif
endif
else
BUILD_SYMFLAGS :=
endif
CLANGFLAGS := -std=c99
$(foreach c, $(CONFIG_LIST_FAM), $(eval $(call append-var-for,CLANGFLAGS,$(c))))
ifneq ($(findstring hpx,$(THREADING_MODEL)),)
CXXLANGFLAGS := -std=c++17
else
CXXLANGFLAGS := -std=c++11
endif
$(foreach c, $(CONFIG_LIST_FAM), $(eval $(call append-var-for,CXXLANGFLAGS,$(c))))
CPPROCFLAGS := -D_POSIX_C_SOURCE=200112L
ifeq ($(OS_NAME),Darwin)
CPPROCFLAGS += -D_DARWIN_C_SOURCE
endif
$(foreach c, $(CONFIG_LIST_FAM), $(eval $(call append-var-for,CPPROCFLAGS,$(c))))
ifeq ($(MK_ENABLE_ASAN),yes)
BUILD_ASANFLAGS := -fsanitize=address
else
BUILD_ASANFLAGS :=
endif
CTHREADFLAGS :=
CXXTHREADFLAGS :=
ifeq ($(CC_VENDOR),gcc)
ifneq ($(findstring openmp,$(THREADING_MODEL)),)
CTHREADFLAGS += -fopenmp
LDFLAGS += -fopenmp
endif
ifneq ($(findstring pthreads,$(THREADING_MODEL)),)
CTHREADFLAGS += -pthread
LDFLAGS += $(LIBPTHREAD)
endif
endif
ifeq ($(CC_VENDOR),icc)
ifneq ($(findstring openmp,$(THREADING_MODEL)),)
CTHREADFLAGS += -fopenmp
LDFLAGS += -fopenmp
endif
ifneq ($(findstring pthreads,$(THREADING_MODEL)),)
CTHREADFLAGS += -pthread
LDFLAGS += $(LIBPTHREAD)
endif
endif
ifeq ($(CC_VENDOR),clang)
ifneq ($(findstring openmp,$(THREADING_MODEL)),)
CTHREADFLAGS += -fopenmp
LDFLAGS += -fopenmp
endif
ifneq ($(findstring pthreads,$(THREADING_MODEL)),)
CTHREADFLAGS += -pthread
LDFLAGS += $(LIBPTHREAD)
endif
endif
ifneq ($(findstring hpx,$(THREADING_MODEL)),)
HPX_CXXFLAGS := $(shell pkg-config --cflags hpx_component)
HPX_LDFLAGS := $(filter-out -shared,$(shell pkg-config --libs hpx_component))
CTHREADFLAGS += $(filter-out -std=%,$(HPX_CXXFLAGS))
LDFLAGS += $(HPX_LDFLAGS)
ifeq ($(OS_NAME),Darwin)
RPATH_PREFIX := -Wl,-rpath,
LDFLAGS += $(patsubst -L%,$(RPATH_PREFIX)%,$(filter -L%,$(HPX_LDFLAGS)))
endif
endif
ifeq ($(PRAGMA_OMP_SIMD),yes)
ifeq ($(CC_VENDOR),gcc)
COMPSIMDFLAGS := -fopenmp-simd
else
ifeq ($(CC_VENDOR),clang)
COMPSIMDFLAGS := -fopenmp-simd
else
ifeq ($(CC_VENDOR),icc)
COMPSIMDFLAGS := -qopenmp-simd
endif
endif
endif
else COMPSIMDFLAGS :=
endif
ifeq ($(V),1)
ENABLE_VERBOSE := yes
BLIS_ENABLE_TEST_OUTPUT := yes
endif
ifeq ($(V),0)
ENABLE_VERBOSE := no
BLIS_ENABLE_TEST_OUTPUT := no
endif
ifeq ($(OS_NAME),Linux)
BIONIC_H_PATH := $(DIST_PATH)/build/detect/android/bionic.h
BIONIC := $(findstring bionic,$(shell $(CC) -E $(BIONIC_H_PATH)))
ifeq (,$(BIONIC))
LDFLAGS += -lrt
endif
endif
FRAGMENT_DIR_PATHS :=
MK_CONFIG_SRC :=
MK_KERNELS_SRC :=
MK_REFKERN_SRC :=
MK_FRAME_SRC :=
MK_ADDON_SRC :=
MK_SANDBOX_SRC :=
CONFIG_PATHS := $(addprefix $(CONFIG_FRAG_PATH)/, $(CONFIG_LIST_FAM))
PARENT_SRC_PATH := $(CONFIG_PATH)
PARENT_PATH := $(CONFIG_FRAG_PATH)
-include $(addsuffix /$(FRAGMENT_MK), $(CONFIG_PATHS))
KERNEL_PATHS := $(addprefix $(KERNELS_FRAG_PATH)/, $(KERNEL_LIST))
PARENT_SRC_PATH := $(KERNELS_PATH)
PARENT_PATH := $(KERNELS_FRAG_PATH)
-include $(addsuffix /$(FRAGMENT_MK), $(KERNEL_PATHS))
PARENT_SRC_PATH := $(DIST_PATH)
PARENT_PATH := $(OBJ_DIR)/$(CONFIG_NAME)
-include $(addsuffix /$(FRAGMENT_MK), $(REFKERN_FRAG_PATH))
-include $(addsuffix /$(FRAGMENT_MK), $(FRAME_FRAG_PATH))
ADDON_PATHS := $(addprefix $(ADDON_FRAG_PATH)/, $(ADDON_LIST))
PARENT_SRC_PATH := $(ADDON_PATH)
PARENT_PATH := $(ADDON_FRAG_PATH)
-include $(addsuffix /$(FRAGMENT_MK), $(ADDON_PATHS))
SANDBOX_PATHS := $(addprefix $(SANDBOX_FRAG_PATH)/, $(SANDBOX))
PARENT_SRC_PATH := $(SANDBOX_PATH)
PARENT_PATH := $(SANDBOX_FRAG_PATH)
-include $(addsuffix /$(FRAGMENT_MK), $(SANDBOX_PATHS))
MAKEFILE_FRAGMENTS := $(addsuffix /$(FRAGMENT_MK), $(FRAGMENT_DIR_PATHS))
ifeq ($(strip $(MAKEFILE_FRAGMENTS)),)
MAKEFILE_FRAGMENTS_PRESENT := no
else
MAKEFILE_FRAGMENTS_PRESENT := yes
endif
get-filepaths = $(strip $(foreach path, $(1), \
$(foreach suf, $(2), \
$(wildcard $(path)/*.$(suf)) \
) ) )
get-dirpaths = $(dir $(foreach path, $(1), \
$(firstword \
$(foreach suf, $(2), \
$(wildcard $(path)/*.$(suf)) \
) ) ) )
ALLFRAG_DIR_PATHS := . $(FRAGMENT_DIR_PATHS)
ADDON_DIR_PATHS := $(filter $(ADDON_PATH)/%,$(ALLFRAG_DIR_PATHS))
SANDBOX_DIR_PATHS := $(filter $(SANDBOX_PATH)/%,$(ALLFRAG_DIR_PATHS))
ALL_H99_FILES := $(call get-filepaths,$(ALLFRAG_DIR_PATHS),$(ALL_H99_SUFS))
FRAME_H99_FILES := $(filter-out $(ADDON_PATH)/%, \
$(filter-out $(SANDBOX_PATH)/%, \
$(ALL_H99_FILES) \
) )
ALL_H99_DIRPATHS := $(call get-dirpaths,$(ALLFRAG_DIR_PATHS),$(ALL_H99_SUFS))
ADDON_H99_FILES := $(call get-filepaths,$(ADDON_DIR_PATHS),$(ADDON_H99_SUFS))
ADDON_HXX_FILES := $(call get-filepaths,$(ADDON_DIR_PATHS),$(ADDON_HXX_SUFS))
ADDON_HDR_DIRPATHS := $(call get-dirpaths,$(ADDON_DIR_PATHS),$(ALL_HDR_SUFS))
SANDBOX_H99_FILES := $(call get-filepaths,$(SANDBOX_DIR_PATHS),$(SANDBOX_H99_SUFS))
SANDBOX_HXX_FILES := $(call get-filepaths,$(SANDBOX_DIR_PATHS),$(SANDBOX_HXX_SUFS))
SANDBOX_HDR_DIRPATHS := $(call get-dirpaths,$(SANDBOX_DIR_PATHS),$(ALL_HDR_SUFS))
ifeq ($(strip $(INC_PATH)),)
INC_PATH := $(INCLUDE_DIR)/$(CONFIG_NAME)
endif
BASE_INC_PATH := $(INC_PATH)
BLIS_H := blis.h
BLIS_H_SRC_PATH := $(filter %/$(BLIS_H), $(FRAME_H99_FILES))
BLIS_H_FLAT := $(BASE_INC_PATH)/$(BLIS_H)
HELP_BLIS_H_PATH := $(BUILD_DIR)/$(BLIS_H)
CBLAS_H := cblas.h
CBLAS_H_SRC_PATH := $(filter %/$(CBLAS_H), $(FRAME_H99_FILES))
CBLAS_H_DIRPATH := $(dir $(CBLAS_H_SRC_PATH))
CBLAS_H_FLAT := $(BASE_INC_PATH)/$(CBLAS_H)
HELP_CBLAS_H_PATH := $(BUILD_DIR)/$(CBLAS_H)
ifeq ($(strip $(SHARE_PATH)),.)
REF_KER_SRC := $(DIST_PATH)/$(REFKERN_DIR)/bli_cntx_ref.c
REF_KER_HEADERS := $(shell $(GREP) "\#include" $(REF_KER_SRC) 2> $(DEVNULL) | sed -e "s/\#include [\"<]\([a-zA-Z0-9\_\.\/\-]*\)[\">].*/\1/g" | $(GREP) -v $(BLIS_H))
endif
REF_KER_H_PATHS := $(call rm-dups,$(strip \
$(foreach header, $(REF_KER_HEADERS), \
$(dir $(filter %/$(header), \
$(FRAME_H99_FILES))))))
REF_KER_I_PATHS := $(strip $(patsubst %, -I%, $(REF_KER_H_PATHS)))
REF_KER_I_PATHS += -I$(DIST_PATH)/frame/include
CINCFLAGS := -I$(BASE_INC_PATH) $(REF_KER_I_PATHS)
ifeq ($(MK_ENABLE_CBLAS),yes)
CINCFLAGS += -I$(CBLAS_H_DIRPATH)
endif
CADDONINCFLAGS := $(strip $(patsubst %, -I%, $(ADDON_HDR_DIRPATHS)))
CSANDINCFLAGS := $(strip $(patsubst %, -I%, $(SANDBOX_HDR_DIRPATHS)))
BLIS_ADDON_H := ./bli_addon.h
BLIS_CONFIG_H := ./bli_config.h
BUILD_CPPFLAGS := -DBLIS_IS_BUILDING_LIBRARY
endif