2 # Include user definition
5 # TO suppress recursive includes
12 NETLIB_LAPACK_DIR = $(TOPDIR)/lapack-netlib
15 # - Only set if not specified on the command line or inherited from the environment.
16 # - CC is an implicit variable so neither '?=' or 'ifndef' can be used.
17 # http://stackoverflow.com/questions/4029274/mingw-and-make-variables
18 # - Default value is 'cc' which is not always a valid command (e.g. MinGW).
19 ifeq ($(origin CC),default)
21 # Check if $(CC) refers to a valid command and set the value to gcc if not
22 ifneq ($(findstring cmd.exe,$(SHELL)),)
23 ifeq ($(shell where $(CC) 2>NUL),)
27 ifeq ($(shell command -v $(CC) 2>/dev/null),)
28 ifeq ($(shell uname -s),Darwin)
30 # EXTRALIB += -Wl,-no_compact_unwind
37 endif # CC is set to default
39 # Default Fortran compiler (FC) is selected by f_check.
42 include $(TOPDIR)/Makefile.rule
44 include $(TOPDIR)/$(MAKEFILE_RULE)
48 # Beginning of system configuration
56 GETARCH_FLAGS := -DFORCE_$(TARGET)
59 # Force fallbacks for 32bit
62 ifeq ($(TARGET), HASWELL)
63 GETARCH_FLAGS := -DFORCE_NEHALEM
65 ifeq ($(TARGET), SKYLAKEX)
66 GETARCH_FLAGS := -DFORCE_NEHALEM
68 ifeq ($(TARGET), SANDYBRIDGE)
69 GETARCH_FLAGS := -DFORCE_NEHALEM
71 ifeq ($(TARGET), BULLDOZER)
72 GETARCH_FLAGS := -DFORCE_BARCELONA
74 ifeq ($(TARGET), PILEDRIVER)
75 GETARCH_FLAGS := -DFORCE_BARCELONA
77 ifeq ($(TARGET), STEAMROLLER)
78 GETARCH_FLAGS := -DFORCE_BARCELONA
80 ifeq ($(TARGET), EXCAVATOR)
81 GETARCH_FLAGS := -DFORCE_BARCELONA
84 GETARCH_FLAGS := -DFORCE_BARCELONA
89 #TARGET_CORE will override TARGET which is used in DYNAMIC_ARCH=1.
92 GETARCH_FLAGS := -DFORCE_$(TARGET_CORE)
95 # Force fallbacks for 32bit
98 ifeq ($(TARGET_CORE), HASWELL)
99 GETARCH_FLAGS := -DFORCE_NEHALEM
101 ifeq ($(TARGET_CORE), SKYLAKEX)
102 GETARCH_FLAGS := -DFORCE_NEHALEM
104 ifeq ($(TARGET_CORE), SANDYBRIDGE)
105 GETARCH_FLAGS := -DFORCE_NEHALEM
107 ifeq ($(TARGET_CORE), BULLDOZER)
108 GETARCH_FLAGS := -DFORCE_BARCELONA
110 ifeq ($(TARGET_CORE), PILEDRIVER)
111 GETARCH_FLAGS := -DFORCE_BARCELONA
113 ifeq ($(TARGET_CORE), STEAMROLLER)
114 GETARCH_FLAGS := -DFORCE_BARCELONA
116 ifeq ($(TARGET_CORE), EXCAVATOR)
117 GETARCH_FLAGS := -DFORCE_BARCELONA
119 ifeq ($(TARGET_CORE), ZEN)
120 GETARCH_FLAGS := -DFORCE_BARCELONA
128 ifneq ($(INTERFACE64), 0)
129 GETARCH_FLAGS += -DUSE64BITINT
133 ifndef GEMM_MULTITHREAD_THRESHOLD
134 GEMM_MULTITHREAD_THRESHOLD=4
136 GETARCH_FLAGS += -DGEMM_MULTITHREAD_THRESHOLD=$(GEMM_MULTITHREAD_THRESHOLD)
139 GETARCH_FLAGS += -DNO_AVX
143 GETARCH_FLAGS += -DNO_AVX
147 GETARCH_FLAGS += -DNO_AVX2
150 ifeq ($(NO_AVX512), 1)
151 GETARCH_FLAGS += -DNO_AVX512
158 ifeq ($(QUIET_MAKE), 1)
162 ifndef NO_PARALLEL_MAKE
165 GETARCH_FLAGS += -DNO_PARALLEL_MAKE=$(NO_PARALLEL_MAKE)
168 GETARCH_FLAGS += -DMAKE_NB_JOBS=$(MAKE_NB_JOBS)
171 ifeq ($(HOSTCC), loongcc)
172 GETARCH_FLAGS += -static
175 #if don't use Fortran, it will only compile CBLAS.
176 ifeq ($(ONLY_CBLAS), 1)
182 # This operation is expensive, so execution should be once.
183 ifndef GOTOBLAS_MAKEFILE
184 export GOTOBLAS_MAKEFILE = 1
186 # Generating Makefile.conf and config.h
187 DUMMY := $(shell $(MAKE) -C $(TOPDIR) -f Makefile.prebuild CC="$(CC)" FC="$(FC)" HOSTCC="$(HOSTCC)" CFLAGS="$(GETARCH_FLAGS)" BINARY=$(BINARY) USE_OPENMP=$(USE_OPENMP) TARGET_CORE=$(TARGET_CORE) ONLY_CBLAS=$(ONLY_CBLAS) TARGET=$(TARGET) all)
190 include $(TOPDIR)/Makefile.conf
192 include $(TOPDIR)/Makefile_kernel.conf
202 NUM_THREADS = $(NUM_CORES)
205 ifeq ($(NUM_THREADS), 1)
206 override USE_THREAD = 0
207 override USE_OPENMP = 0
211 ifeq ($(USE_THREAD), 0)
217 ifeq ($(NUM_THREAD), 1)
230 AR = $(CROSS_SUFFIX)ar
231 AS = $(CROSS_SUFFIX)as
232 LD = $(CROSS_SUFFIX)ld
233 RANLIB = $(CROSS_SUFFIX)ranlib
234 NM = $(CROSS_SUFFIX)nm
235 DLLWRAP = $(CROSS_SUFFIX)dllwrap
236 OBJCOPY = $(CROSS_SUFFIX)objcopy
237 OBJCONV = $(CROSS_SUFFIX)objconv
240 # For detect fortran failed, only build BLAS.
241 ifeq ($(NOFORTRAN), 1)
246 # OS dependent settings
249 ifeq ($(OSNAME), Darwin)
250 ifndef MACOSX_DEPLOYMENT_TARGET
251 export MACOSX_DEPLOYMENT_TARGET=10.8
256 ifneq (,$(findstring $(OSNAME), FreeBSD OpenBSD DragonFly))
260 ifeq ($(OSNAME), NetBSD)
264 ifeq ($(OSNAME), Linux)
269 ifeq ($(OSNAME), Android)
273 ifeq ($(OSNAME), AIX)
277 ifeq ($(OSNAME), WINNT)
281 EXTRALIB += -defaultlib:advapi32
287 ifeq ($(C_COMPILER), CLANG)
288 CCOMMON_OPT += -DMS_ABI
291 ifeq ($(C_COMPILER), GCC)
292 #Test for supporting MS_ABI
293 GCCVERSIONGTEQ4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 4)
294 GCCVERSIONGT4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \> 4)
295 GCCMINORVERSIONGTEQ7 := $(shell expr `$(CC) -dumpversion | cut -f2 -d.` \>= 7)
296 ifeq ($(GCCVERSIONGT4), 1)
297 # GCC Majar version > 4
298 # It is compatible with MSVC ABI.
299 CCOMMON_OPT += -DMS_ABI
302 ifeq ($(GCCVERSIONGTEQ4), 1)
303 ifeq ($(GCCMINORVERSIONGTEQ7), 1)
305 # It is compatible with MSVC ABI.
306 CCOMMON_OPT += -DMS_ABI
311 # Ensure the correct stack alignment on Win32
312 # http://permalink.gmane.org/gmane.comp.lib.openblas.general/97
314 CCOMMON_OPT += -mincoming-stack-boundary=2
315 FCOMMON_OPT += -mincoming-stack-boundary=2
320 ifeq ($(OSNAME), Interix)
324 INTERIX_TOOL_DIR = /opt/gcc.3.3/i586-pc-interix3/bin
327 ifeq ($(OSNAME), CYGWIN_NT)
333 ifneq ($(OSNAME), WINNT)
334 ifneq ($(OSNAME), CYGWIN_NT)
335 ifneq ($(OSNAME), Interix)
336 ifneq ($(OSNAME), Android)
338 EXTRALIB += -lpthread
346 ifeq ($(OSNAME), $(filter $(OSNAME),WINNT CYGWIN_NT Interix))
351 CCOMMON_OPT += -DQUAD_PRECISION
356 ifneq ($(ARCH), x86_64)
362 CCOMMON_OPT += -DUTEST_CHECK
367 CCOMMON_OPT += -DSANITY_CHECK -DREFNAME=$(*F)f$(BU)
370 MAX_STACK_ALLOC ?= 2048
371 ifneq ($(MAX_STACK_ALLOC), 0)
372 CCOMMON_OPT += -DMAX_STACK_ALLOC=$(MAX_STACK_ALLOC)
376 # Architecture dependent settings
384 ifeq ($(CORE), generic)
388 ifndef NO_EXPRECISION
389 ifeq ($(F_COMPILER), GFORTRAN)
390 # ifeq logical or. GCC or LSB
391 ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC LSB))
393 CCOMMON_OPT += -DEXPRECISION -m128bit-long-double
394 FCOMMON_OPT += -m128bit-long-double
396 ifeq ($(C_COMPILER), CLANG)
398 CCOMMON_OPT += -DEXPRECISION
399 FCOMMON_OPT += -m128bit-long-double
405 ifeq ($(ARCH), x86_64)
407 ifeq ($(CORE), generic)
411 ifndef NO_EXPRECISION
412 ifeq ($(F_COMPILER), GFORTRAN)
413 # ifeq logical or. GCC or LSB
414 ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC LSB))
416 CCOMMON_OPT += -DEXPRECISION -m128bit-long-double
417 FCOMMON_OPT += -m128bit-long-double
419 ifeq ($(C_COMPILER), CLANG)
421 CCOMMON_OPT += -DEXPRECISION
422 FCOMMON_OPT += -m128bit-long-double
428 ifeq ($(C_COMPILER), INTEL)
429 CCOMMON_OPT += -wd981
433 ifeq ($(USE_OPENMP), 1)
436 ifeq ($(USE_THREAD), 0)
437 $(error OpenBLAS: Cannot set both USE_OPENMP=1 and USE_THREAD=0. The USE_THREAD=0 is only for building single thread version.)
440 # ifeq logical or. GCC or LSB
441 ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC LSB))
442 CCOMMON_OPT += -fopenmp
445 ifeq ($(C_COMPILER), CLANG)
446 CCOMMON_OPT += -fopenmp
449 ifeq ($(C_COMPILER), INTEL)
450 CCOMMON_OPT += -fopenmp
453 ifeq ($(C_COMPILER), PGI)
457 ifeq ($(C_COMPILER), OPEN64)
459 CEXTRALIB += -lstdc++
462 ifeq ($(C_COMPILER), PATHSCALE)
468 ifeq ($(DYNAMIC_ARCH), 1)
470 DYNAMIC_CORE = KATMAI COPPERMINE NORTHWOOD PRESCOTT BANIAS \
471 CORE2 PENRYN DUNNINGTON NEHALEM ATHLON OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO
474 ifeq ($(ARCH), x86_64)
475 DYNAMIC_CORE = PRESCOTT CORE2
476 ifeq ($(DYNAMIC_OLDER), 1)
477 DYNAMIC_CORE += PENRYN DUNNINGTON
479 DYNAMIC_CORE += NEHALEM
480 ifeq ($(DYNAMIC_OLDER), 1)
481 DYNAMIC_CORE += OPTERON OPTERON_SSE3
483 DYNAMIC_CORE += BARCELONA
484 ifeq ($(DYNAMIC_OLDER), 1)
485 DYNAMIC_CORE += BOBCAT ATOM NANO
488 DYNAMIC_CORE += SANDYBRIDGE BULLDOZER PILEDRIVER STEAMROLLER EXCAVATOR
490 ifneq ($(NO_AVX2), 1)
491 DYNAMIC_CORE += HASWELL ZEN
493 ifneq ($(NO_AVX512), 1)
494 ifneq ($(NO_AVX2), 1)
495 DYNAMIC_CORE += SKYLAKEX
501 override DYNAMIC_CORE = PRESCOTT $(DYNAMIC_LIST)
502 XCCOMMON_OPT = -DDYNAMIC_LIST -DDYN_PRESCOTT
503 XCCOMMON_OPT += $(foreach dcore,$(DYNAMIC_LIST),-DDYN_$(dcore))
504 CCOMMON_OPT += $(XCCOMMON_OPT)
505 #CCOMMON_OPT += -DDYNAMIC_LIST='$(DYNAMIC_LIST)'
508 # If DYNAMIC_CORE is not set, DYNAMIC_ARCH cannot do anything, so force it to empty
510 override DYNAMIC_ARCH=
518 ifeq ($(F_COMPILER), GFORTRAN)
519 ifeq ($(C_COMPILER), GCC)
521 # CCOMMON_OPT += -DEXPRECISION
526 ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
530 ifeq ($(ARCH), alpha)
542 # If softfp abi is mentioned on the command line, force it.
543 ifeq ($(ARM_SOFTFP_ABI), 1)
544 CCOMMON_OPT += -mfloat-abi=softfp
545 FCOMMON_OPT += -mfloat-abi=softfp
548 ifeq ($(OSNAME), Android)
549 ifeq ($(ARM_SOFTFP_ABI), 1)
552 EXTRALIB += -Wl,-lm_hard
557 ifeq ($(ARCH), arm64)
566 # C Compiler dependent settings
570 # ifeq logical or. GCC or CLANG or LSB
571 # http://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or
572 ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC CLANG LSB))
574 COMMON_PROF += -fno-inline
575 NO_UNINITIALIZED_WARN = -Wno-uninitialized
577 ifeq ($(QUIET_MAKE), 1)
578 CCOMMON_OPT += $(NO_UNINITIALIZED_WARN) -Wno-unused
583 ifeq ($(ARCH), $(filter $(ARCH),mips64))
585 CCOMMON_OPT += -mabi=64
587 CCOMMON_OPT += -mabi=n32
590 else ifeq ($(ARCH), $(filter $(ARCH),mips))
591 CCOMMON_OPT += -mabi=32
595 ifeq ($(CORE), LOONGSON3A)
596 CCOMMON_OPT += -march=mips64
597 FCOMMON_OPT += -march=mips64
600 ifeq ($(CORE), LOONGSON3B)
601 CCOMMON_OPT += -march=mips64
602 FCOMMON_OPT += -march=mips64
605 ifeq ($(CORE), 1004K)
606 CCOMMON_OPT += -mips32r2 $(MSA_FLAGS)
607 FCOMMON_OPT += -mips32r2 $(MSA_FLAGS)
610 ifeq ($(CORE), P5600)
611 CCOMMON_OPT += -mips32r5 -mnan=2008 -mtune=p5600 $(MSA_FLAGS)
612 FCOMMON_OPT += -mips32r5 -mnan=2008 -mtune=p5600 $(MSA_FLAGS)
615 ifeq ($(CORE), I6400)
616 CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
617 FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
620 ifeq ($(CORE), P6600)
621 CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=p6600 $(MSA_FLAGS)
622 FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=p6600 $(MSA_FLAGS)
625 ifeq ($(CORE), I6500)
626 CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
627 FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
630 ifeq ($(OSNAME), AIX)
636 ifndef BINARY_DEFINED
637 ifneq ($(OSNAME), AIX)
648 ifeq ($(C_COMPILER), PGI)
650 CCOMMON_OPT += -tp p7-64
652 CCOMMON_OPT += -tp p7
656 ifeq ($(C_COMPILER), PATHSCALE)
665 # Fortran Compiler dependent settings
668 ifeq ($(F_COMPILER), FLANG)
669 CCOMMON_OPT += -DF_INTERFACE_FLANG
672 ifneq ($(INTERFACE64), 0)
680 ifeq ($(USE_OPENMP), 1)
681 FCOMMON_OPT += -fopenmp
685 ifeq ($(F_COMPILER), G77)
686 CCOMMON_OPT += -DF_INTERFACE_G77
688 ifndef NO_BINARY_MODE
689 ifneq ($(OSNAME), AIX)
699 ifeq ($(F_COMPILER), G95)
700 CCOMMON_OPT += -DF_INTERFACE_G95
702 ifneq ($(OSNAME), AIX)
703 ifndef NO_BINARY_MODE
713 ifeq ($(F_COMPILER), GFORTRAN)
714 CCOMMON_OPT += -DF_INTERFACE_GFORT
716 #Don't include -lgfortran, when NO_LAPACK=1 or lsbcc
717 ifneq ($(NO_LAPACK), 1)
718 EXTRALIB += -lgfortran
721 ifeq ($(ARCH), $(filter $(ARCH),mips64))
723 FCOMMON_OPT += -mabi=64
725 FCOMMON_OPT += -mabi=n32
727 else ifeq ($(ARCH), $(filter $(ARCH),mips))
728 FCOMMON_OPT += -mabi=32
732 ifneq ($(OSNAME), AIX)
736 ifneq ($(INTERFACE64), 0)
737 FCOMMON_OPT += -fdefault-integer-8
741 ifneq ($(OSNAME), AIX)
746 ifeq ($(USE_OPENMP), 1)
747 FCOMMON_OPT += -fopenmp
751 ifeq ($(F_COMPILER), INTEL)
752 CCOMMON_OPT += -DF_INTERFACE_INTEL
754 ifneq ($(INTERFACE64), 0)
758 ifeq ($(USE_OPENMP), 1)
759 FCOMMON_OPT += -fopenmp
763 ifeq ($(F_COMPILER), FUJITSU)
764 CCOMMON_OPT += -DF_INTERFACE_FUJITSU
765 ifeq ($(USE_OPENMP), 1)
766 FCOMMON_OPT += -openmp
770 ifeq ($(F_COMPILER), IBM)
771 CCOMMON_OPT += -DF_INTERFACE_IBM
772 # FCOMMON_OPT += -qarch=440
776 ifneq ($(INTERFACE64), 0)
777 FCOMMON_OPT += -qintsize=8
783 ifeq ($(USE_OPENMP), 1)
784 FCOMMON_OPT += -openmp
788 ifeq ($(F_COMPILER), PGI)
789 CCOMMON_OPT += -DF_INTERFACE_PGI
790 COMMON_PROF += -DPGICOMPILER
793 ifneq ($(INTERFACE64), 0)
797 FCOMMON_OPT += -tp p7-64
799 FCOMMON_OPT += -tp p7
801 ifeq ($(USE_OPENMP), 1)
806 ifeq ($(F_COMPILER), PATHSCALE)
807 CCOMMON_OPT += -DF_INTERFACE_PATHSCALE
810 ifneq ($(INTERFACE64), 0)
816 ifeq ($(USE_OPENMP), 1)
821 ifeq ($(F_COMPILER), OPEN64)
822 CCOMMON_OPT += -DF_INTERFACE_OPEN64
825 ifneq ($(INTERFACE64), 0)
831 ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
837 ifeq ($(CORE), LOONGSON3A)
838 FCOMMON_OPT += -loongson3 -static
841 ifeq ($(CORE), LOONGSON3B)
842 FCOMMON_OPT += -loongson3 -static
853 ifeq ($(USE_OPENMP), 1)
854 FEXTRALIB += -lstdc++
859 ifeq ($(C_COMPILER), OPEN64)
861 ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
867 ifeq ($(CORE), LOONGSON3A)
868 CCOMMON_OPT += -loongson3 -static
871 ifeq ($(CORE), LOONGSON3B)
872 CCOMMON_OPT += -loongson3 -static
885 ifeq ($(C_COMPILER), SUN)
894 ifeq ($(F_COMPILER), SUN)
895 CCOMMON_OPT += -DF_INTERFACE_SUN
901 ifeq ($(USE_OPENMP), 1)
902 FCOMMON_OPT += -xopenmp=parallel
906 ifeq ($(F_COMPILER), COMPAQ)
907 CCOMMON_OPT += -DF_INTERFACE_COMPAQ
908 ifeq ($(USE_OPENMP), 1)
909 FCOMMON_OPT += -openmp
915 ifneq ($(INTERFACE64), 0)
922 ifeq ($(NEED_PIC), 1)
923 ifeq ($(C_COMPILER), IBM)
924 CCOMMON_OPT += -qpic=large
928 ifeq ($(F_COMPILER), SUN)
935 ifeq ($(DYNAMIC_ARCH), 1)
936 CCOMMON_OPT += -DDYNAMIC_ARCH
939 ifeq ($(DYNAMIC_OLDER), 1)
940 CCOMMON_OPT += -DDYNAMIC_OLDER
943 ifeq ($(NO_LAPACK), 1)
944 CCOMMON_OPT += -DNO_LAPACK
945 #Disable LAPACK C interface
949 ifeq ($(NO_LAPACKE), 1)
950 CCOMMON_OPT += -DNO_LAPACKE
954 CCOMMON_OPT += -DNO_AVX
958 CCOMMON_OPT += -DNO_AVX
962 CCOMMON_OPT += -DNO_AVX2
965 ifeq ($(NO_AVX512), 1)
966 CCOMMON_OPT += -DNO_AVX512
970 CCOMMON_OPT += -DSMP_SERVER
972 ifeq ($(ARCH), mips64)
973 ifneq ($(CORE), LOONGSON3B)
974 USE_SIMPLE_THREADED_LEVEL3 = 1
978 ifeq ($(USE_OPENMP), 1)
979 # USE_SIMPLE_THREADED_LEVEL3 = 1
981 CCOMMON_OPT += -DUSE_OPENMP
985 CCOMMON_OPT += -DBIGNUMA
990 ifeq ($(NO_WARMUP), 1)
991 CCOMMON_OPT += -DNO_WARMUP
994 ifeq ($(CONSISTENT_FPCSR), 1)
995 CCOMMON_OPT += -DCONSISTENT_FPCSR
998 # Only for development
999 # CCOMMON_OPT += -DPARAMTEST
1000 # CCOMMON_OPT += -DPREFETCHTEST
1001 # CCOMMON_OPT += -DNO_SWITCHING
1005 CCOMMON_OPT += -DUSE_PAPI
1006 EXTRALIB += -lpapi -lperfctr
1009 ifdef DYNAMIC_THREADS
1010 CCOMMON_OPT += -DDYNAMIC_THREADS
1013 CCOMMON_OPT += -DMAX_CPU_NUMBER=$(NUM_THREADS)
1015 CCOMMON_OPT += -DMAX_PARALLEL_NUMBER=$(NUM_PARALLEL)
1017 ifdef USE_SIMPLE_THREADED_LEVEL3
1018 CCOMMON_OPT += -DUSE_SIMPLE_THREADED_LEVEL3
1022 CCOMMON_OPT += -DUSE_TLS
1033 ifndef LIBNAMESUFFIX
1034 LIBNAMEBASE = $(SYMBOLPREFIX)openblas$(SYMBOLSUFFIX)
1036 LIBNAMEBASE = $(SYMBOLPREFIX)openblas$(SYMBOLSUFFIX)_$(LIBNAMESUFFIX)
1039 ifeq ($(OSNAME), CYGWIN_NT)
1040 LIBPREFIX = cyg$(LIBNAMEBASE)
1042 LIBPREFIX = lib$(LIBNAMEBASE)
1045 KERNELDIR = $(TOPDIR)/kernel/$(ARCH)
1047 include $(TOPDIR)/Makefile.$(ARCH)
1049 CCOMMON_OPT += -DASMNAME=$(FU)$(*F) -DASMFNAME=$(FU)$(*F)$(BU) -DNAME=$(*F)$(BU) -DCNAME=$(*F) -DCHAR_NAME=\"$(*F)$(BU)\" -DCHAR_CNAME=\"$(*F)\"
1051 ifeq ($(CORE), PPC440)
1052 CCOMMON_OPT += -DALLOC_QALLOC
1055 ifeq ($(CORE), PPC440FP2)
1056 STATIC_ALLOCATION = 1
1059 ifneq ($(OSNAME), Linux)
1063 ifneq ($(ARCH), x86_64)
1064 ifneq ($(ARCH), x86)
1065 ifneq ($(CORE), LOONGSON3B)
1072 CCOMMON_OPT += -DNO_AFFINITY
1075 ifdef FUNCTION_PROFILE
1076 CCOMMON_OPT += -DFUNCTION_PROFILE
1079 ifdef HUGETLB_ALLOCATION
1080 CCOMMON_OPT += -DALLOC_HUGETLB
1083 ifdef HUGETLBFILE_ALLOCATION
1084 CCOMMON_OPT += -DALLOC_HUGETLBFILE -DHUGETLB_FILE_NAME=$(HUGETLBFILE_ALLOCATION)
1087 ifdef STATIC_ALLOCATION
1088 CCOMMON_OPT += -DALLOC_STATIC
1091 ifdef DEVICEDRIVER_ALLOCATION
1092 CCOMMON_OPT += -DALLOC_DEVICEDRIVER -DDEVICEDRIVER_NAME=\"/dev/mapper\"
1095 ifdef MIXED_MEMORY_ALLOCATION
1096 CCOMMON_OPT += -DMIXED_MEMORY_ALLOCATION
1099 ifeq ($(OSNAME), SunOS)
1116 REVISION = -r$(VERSION)
1117 MAJOR_VERSION = $(word 1,$(subst ., ,$(VERSION)))
1132 FCOMMON_OPT = -O2 -frecursive
1137 override CFLAGS += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR)
1138 override PFLAGS += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR) -DPROFILE $(COMMON_PROF)
1140 override FFLAGS += $(COMMON_OPT) $(FCOMMON_OPT)
1141 override FPFLAGS += $(FCOMMON_OPT) $(COMMON_PROF)
1144 #For LAPACK Fortran codes.
1145 #Disable -fopenmp for LAPACK Fortran codes on Windows.
1147 LAPACK_FFLAGS := $(filter-out -fopenmp -mp -openmp -xopenmp=parallel,$(FFLAGS))
1148 LAPACK_FPFLAGS := $(filter-out -fopenmp -mp -openmp -xopenmp=parallel,$(FPFLAGS))
1150 LAPACK_FFLAGS := $(FFLAGS)
1151 LAPACK_FPFLAGS := $(FPFLAGS)
1154 LAPACK_CFLAGS = $(CFLAGS)
1155 LAPACK_CFLAGS += -DHAVE_LAPACK_CONFIG_H
1157 ifneq ($(INTERFACE64), 0)
1158 LAPACK_CFLAGS += -DLAPACK_ILP64
1163 LAPACK_CFLAGS += -DOPENBLAS_OS_WINDOWS
1165 ifeq ($(C_COMPILER), LSB)
1166 LAPACK_CFLAGS += -DLAPACK_COMPLEX_STRUCTURE
1181 ifneq ($(DYNAMIC_ARCH), 1)
1183 LIBNAME = $(LIBPREFIX)_$(LIBCORE)$(REVISION).$(LIBSUFFIX)
1184 LIBNAME_P = $(LIBPREFIX)_$(LIBCORE)$(REVISION)_p.$(LIBSUFFIX)
1186 LIBNAME = $(LIBPREFIX)_$(LIBCORE)p$(REVISION).$(LIBSUFFIX)
1187 LIBNAME_P = $(LIBPREFIX)_$(LIBCORE)p$(REVISION)_p.$(LIBSUFFIX)
1191 LIBNAME = $(LIBPREFIX)$(REVISION).$(LIBSUFFIX)
1192 LIBNAME_P = $(LIBPREFIX)$(REVISION)_p.$(LIBSUFFIX)
1194 LIBNAME = $(LIBPREFIX)p$(REVISION).$(LIBSUFFIX)
1195 LIBNAME_P = $(LIBPREFIX)p$(REVISION)_p.$(LIBSUFFIX)
1200 LIBDLLNAME = $(LIBPREFIX).dll
1201 IMPLIBNAME = lib$(LIBNAMEBASE).dll.a
1202 LIBSONAME = $(LIBNAME:.$(LIBSUFFIX)=.so)
1203 LIBDYNNAME = $(LIBNAME:.$(LIBSUFFIX)=.dylib)
1204 LIBDEFNAME = $(LIBNAME:.$(LIBSUFFIX)=.def)
1205 LIBEXPNAME = $(LIBNAME:.$(LIBSUFFIX)=.exp)
1206 LIBZIPNAME = $(LIBNAME:.$(LIBSUFFIX)=.zip)
1208 LIBS = $(TOPDIR)/$(LIBNAME)
1209 LIBS_P = $(TOPDIR)/$(LIBNAME_P)
1212 LIB_COMPONENTS = BLAS
1213 ifneq ($(NO_CBLAS), 1)
1214 LIB_COMPONENTS += CBLAS
1217 ifneq ($(NO_LAPACK), 1)
1218 LIB_COMPONENTS += LAPACK
1219 ifneq ($(NO_LAPACKE), 1)
1220 LIB_COMPONENTS += LAPACKE
1222 ifeq ($(BUILD_RELAPACK), 1)
1223 LIB_COMPONENTS += ReLAPACK
1227 ifeq ($(ONLY_CBLAS), 1)
1228 LIB_COMPONENTS = CBLAS
1241 export NEED2UNDERSCORES
1246 export MAKEFILE_RULE
1277 export FUNCTION_PROFILE
1281 export SGEMM_UNROLL_M
1282 export SGEMM_UNROLL_N
1283 export DGEMM_UNROLL_M
1284 export DGEMM_UNROLL_N
1285 export QGEMM_UNROLL_M
1286 export QGEMM_UNROLL_N
1287 export CGEMM_UNROLL_M
1288 export CGEMM_UNROLL_N
1289 export ZGEMM_UNROLL_M
1290 export ZGEMM_UNROLL_N
1291 export XGEMM_UNROLL_M
1292 export XGEMM_UNROLL_N
1293 export CGEMM3M_UNROLL_M
1294 export CGEMM3M_UNROLL_N
1295 export ZGEMM3M_UNROLL_M
1296 export ZGEMM3M_UNROLL_N
1297 export XGEMM3M_UNROLL_M
1298 export XGEMM3M_UNROLL_N
1308 .SUFFIXES: .$(PSUFFIX) .$(SUFFIX) .f
1311 $(FC) $(FFLAGS) -c $< -o $(@F)
1314 $(FC) $(FPFLAGS) -pg -c $< -o $(@F)
1318 PATHSCALEPATH = /opt/pathscale/lib/3.1
1319 PGIPATH = /opt/pgi/linux86-64/7.1-5/lib
1321 PATHSCALEPATH = /opt/pathscale/lib/3.1/32
1322 PGIPATH = /opt/pgi/linux86/7.1-5/lib
1325 ACMLPATH = /opt/acml/4.3.0
1326 ifneq ($(OSNAME), Darwin)
1327 MKLPATH = /opt/intel/mkl/10.2.2.025/lib
1329 MKLPATH = /Library/Frameworks/Intel_MKL.framework/Versions/10.0.1.014/lib
1331 ATLASPATH = /opt/atlas/3.9.17/opteron
1332 FLAMEPATH = $(HOME)/flame/lib
1333 ifneq ($(OSNAME), SunOS)
1334 SUNPATH = /opt/sunstudio12.1
1336 SUNPATH = /opt/SUNWspro