You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

Makefile 4.9 kB

7 years ago
7 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. ifdef TARGET_CORE
  2. TARGET = $(TARGET_CORE)
  3. endif
  4. TOPDIR = ..
  5. include $(TOPDIR)/Makefile.system
  6. ifeq ($(C_COMPILER), GCC)
  7. GCCVERSIONGTEQ9 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 9)
  8. endif
  9. ifeq ($(ARCH), power)
  10. ifeq ($(C_COMPILER), CLANG)
  11. override CFLAGS += -fno-integrated-as
  12. endif
  13. endif
  14. AVX2OPT =
  15. ifeq ($(C_COMPILER), GCC)
  16. # AVX2 support was added in 4.7.0
  17. GCCVERSIONGTEQ4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 4)
  18. GCCMINORVERSIONGTEQ7 := $(shell expr `$(CC) -dumpversion | cut -f2 -d.` \>= 7)
  19. ifeq ($(GCCVERSIONGTEQ4)$(GCCMINORVERSIONGTEQ7), 11)
  20. AVX2OPT = -mavx2
  21. endif
  22. endif
  23. ifeq ($(C_COMPILER), CLANG)
  24. # Any clang posing as gcc 4.2 should be new enough (3.4 or later)
  25. GCCVERSIONGTEQ4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 4)
  26. GCCMINORVERSIONGTEQ2 := $(shell expr `$(CC) -dumpversion | cut -f2 -d.` \>= 2)
  27. ifeq ($(GCCVERSIONGTEQ4)$(GCCMINORVERSIONGTEQ2), 11)
  28. AVX2OPT = -mavx2
  29. endif
  30. endif
  31. ifdef NO_AVX2
  32. AVX2OPT=
  33. endif
  34. ifdef TARGET_CORE
  35. ifeq ($(TARGET_CORE), SKYLAKEX)
  36. override CFLAGS += -DBUILD_KERNEL -DTABLE_NAME=gotoblas_$(TARGET_CORE) -march=skylake-avx512
  37. ifeq ($(OSNAME), CYGWIN_NT)
  38. override CFLAGS += -fno-asynchronous-unwind-tables
  39. endif
  40. ifeq ($(OSNAME), WINNT)
  41. ifeq ($(C_COMPILER), GCC)
  42. override CFLAGS += -fno-asynchronous-unwind-tables
  43. endif
  44. endif
  45. else ifeq ($(TARGET_CORE), HASWELL)
  46. override CFLAGS += -DBUILD_KERNEL -DTABLE_NAME=gotoblas_$(TARGET_CORE) $(AVX2OPT)
  47. else
  48. override CFLAGS += -DBUILD_KERNEL -DTABLE_NAME=gotoblas_$(TARGET_CORE)
  49. endif
  50. BUILD_KERNEL = 1
  51. KDIR =
  52. TSUFFIX = _$(TARGET_CORE)
  53. else
  54. TARGET_CORE = $(CORE)
  55. KDIR =
  56. TSUFFIX =
  57. endif
  58. -include $(KERNELDIR)/KERNEL.$(TARGET_CORE)
  59. include $(KERNELDIR)/KERNEL
  60. include Makefile.L1
  61. include Makefile.L2
  62. include Makefile.L3
  63. include Makefile.LA
  64. HPLOBJS = \
  65. dgemm_kernel.$(SUFFIX) \
  66. $(DGEMMINCOPYOBJ) $(DGEMMITCOPYOBJ) \
  67. $(DGEMMONCOPYOBJ) $(DGEMMOTCOPYOBJ) \
  68. dtrsm_kernel_LN.$(SUFFIX) dtrsm_kernel_LT.$(SUFFIX) \
  69. dtrsm_kernel_RN.$(SUFFIX) dtrsm_kernel_RT.$(SUFFIX) \
  70. daxpy_k.$(SUFFIX) dcopy_k.$(SUFFIX) ddot_k.$(SUFFIX) \
  71. dger_k.$(SUFFIX) dscal_k.$(SUFFIX) idamax_k.$(SUFFIX) \
  72. dgemv_n.$(SUFFIX) dgemv_t.$(SUFFIX) dgemm_beta.$(SUFFIX) \
  73. dtrsm_iunucopy.$(SUFFIX) dtrsm_iunncopy.$(SUFFIX) \
  74. dtrsm_ilnucopy.$(SUFFIX) dtrsm_ilnncopy.$(SUFFIX) \
  75. dtrsm_iutucopy.$(SUFFIX) dtrsm_iutncopy.$(SUFFIX) \
  76. dtrsm_iltucopy.$(SUFFIX) dtrsm_iltncopy.$(SUFFIX) \
  77. dtrsm_ounucopy.$(SUFFIX) dtrsm_ounncopy.$(SUFFIX) \
  78. dtrsm_olnucopy.$(SUFFIX) dtrsm_olnncopy.$(SUFFIX) \
  79. dtrsm_outucopy.$(SUFFIX) dtrsm_outncopy.$(SUFFIX) \
  80. dtrsm_oltucopy.$(SUFFIX) dtrsm_oltncopy.$(SUFFIX)
  81. COMMONOBJS += lsame.$(SUFFIX) scabs1.$(SUFFIX) dcabs1.$(SUFFIX)
  82. ifeq ($(DYNAMIC_ARCH), 1)
  83. SBLASOBJS += setparam$(TSUFFIX).$(SUFFIX)
  84. CCOMMON_OPT += -DTS=$(TSUFFIX)
  85. endif
  86. KERNEL_INTERFACE = ../common_level1.h ../common_level2.h ../common_level3.h
  87. ifneq ($(NO_LAPACK), 1)
  88. KERNEL_INTERFACE += ../common_lapack.h
  89. endif
  90. ifeq ($(ARCH), x86)
  91. COMMONOBJS += cpuid.$(SUFFIX)
  92. endif
  93. ifdef EXPRECISION
  94. COMMONOBJS += qconjg.$(SUFFIX) qcabs1.$(SUFFIX)
  95. endif
  96. ifdef QUAD_PRECISION
  97. COMMONOBJS += qconjg.$(SUFFIX) qcabs1.$(SUFFIX)
  98. endif
  99. all : libs
  100. scabs1.$(SUFFIX): $(KERNELDIR)/$(SCABS_KERNEL)
  101. $(CC) -c $(CFLAGS) -DCOMPLEX -UDOUBLE -DF_INTERFACE $< -o $(@F)
  102. dcabs1.$(SUFFIX): $(KERNELDIR)/$(DCABS_KERNEL)
  103. $(CC) -c $(CFLAGS) -DCOMPLEX -DDOUBLE -DF_INTERFACE $< -o $(@F)
  104. qcabs1.$(SUFFIX): $(KERNELDIR)/$(QCABS_KERNEL)
  105. $(CC) -c $(CFLAGS) -DCOMPLEX -DXDOUBLE -DF_INTERFACE $< -o $(@F)
  106. qconjg.$(SUFFIX): $(KERNELDIR)/qconjg.S
  107. $(CC) -c $(CFLAGS) -DCOMPLEX -DXDOUBLE -DF_INTERFACE $< -o $(@F)
  108. lsame.$(SUFFIX): $(KERNELDIR)/$(LSAME_KERNEL)
  109. $(CC) -c $(CFLAGS) -DF_INTERFACE $< -o $(@F)
  110. setparam$(TSUFFIX).$(SUFFIX): setparam$(TSUFFIX).c kernel$(TSUFFIX).h
  111. ifeq ($(USE_GEMM3M), 1)
  112. $(CC) -c $(CFLAGS) -DUSE_GEMM3M $< -o $@
  113. else
  114. $(CC) -c $(CFLAGS) $< -o $@
  115. endif
  116. setparam$(TSUFFIX).c : setparam-ref.c
  117. sed 's/TS/$(TSUFFIX)/g' $< > $(@F)
  118. kernel$(TSUFFIX).h : $(KERNEL_INTERFACE)
  119. sed 's/\ *(/$(TSUFFIX)(/g' $^ > $(@F)
  120. cpuid.$(SUFFIX): $(KERNELDIR)/cpuid.S
  121. $(CC) -c $(CFLAGS) $< -o $(@F)
  122. scabs1.$(PSUFFIX): $(KERNELDIR)/$(SCABS_KERNEL)
  123. $(CC) -c $(PFLAGS) -DCOMPLEX -UDOUBLE -DF_INTERFACE $< -o $(@F)
  124. dcabs1.$(PSUFFIX): $(KERNELDIR)/$(DCABS_KERNEL)
  125. $(CC) -c $(PFLAGS) -DCOMPLEX -DDOUBLE -DF_INTERFACE $< -o $(@F)
  126. qcabs1.$(PSUFFIX): $(KERNELDIR)/$(QCABS_KERNEL)
  127. $(CC) -c $(PFLAGS) -DCOMPLEX -DXDOUBLE -DF_INTERFACE $< -o $(@F)
  128. qconjg.$(PSUFFIX): $(KERNELDIR)/qconjg.S
  129. $(CC) -c $(PFLAGS) -DCOMPLEX -DXDOUBLE -DF_INTERFACE $< -o $(@F)
  130. lsame.$(PSUFFIX): $(KERNELDIR)/$(LSAME_KERNEL)
  131. $(CC) -c $(PFLAGS) -DF_INTERFACE $< -o $(@F)
  132. cpuid.$(PSUFFIX): $(KERNELDIR)/cpuid.S
  133. $(CC) -c $(PFLAGS) $< -o $(@F)
  134. #ifdef DYNAMIC_ARCH
  135. clean ::
  136. @rm -f setparam_*.c kernel_*.h setparam.h kernel.h
  137. #endif
  138. include $(TOPDIR)/Makefile.tail