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.x86_64 5.6 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. # CCOMMON_OPT += -DFASTCPU
  2. ifeq ($(OSNAME), SunOS)
  3. ifdef BINARY64
  4. ifeq ($(F_COMPILER), SUN)
  5. FCOMMON_OPT += -m64
  6. endif
  7. endif
  8. endif
  9. ifdef HAVE_SSE3
  10. CCOMMON_OPT += -msse3
  11. FCOMMON_OPT += -msse3
  12. endif
  13. ifdef HAVE_SSSE3
  14. CCOMMON_OPT += -mssse3
  15. FCOMMON_OPT += -mssse3
  16. endif
  17. ifdef HAVE_SSE4_1
  18. CCOMMON_OPT += -msse4.1
  19. FCOMMON_OPT += -msse4.1
  20. endif
  21. ifdef HAVE_AVX
  22. CCOMMON_OPT += -mavx
  23. FCOMMON_OPT += -mavx
  24. endif
  25. ifdef HAVE_AVX2
  26. CCOMMON_OPT += -mavx2
  27. FCOMMON_OPT += -mavx2
  28. endif
  29. ifdef HAVE_FMA3
  30. CCOMMON_OPT += -mfma
  31. FCOMMON_OPT += -mfma
  32. endif
  33. ifeq ($(CORE), SKYLAKEX)
  34. ifndef DYNAMIC_ARCH
  35. ifndef NO_AVX512
  36. CCOMMON_OPT += -march=skylake-avx512
  37. FCOMMON_OPT += -march=skylake-avx512
  38. ifeq ($(OSNAME), CYGWIN_NT)
  39. CCOMMON_OPT += -fno-asynchronous-unwind-tables
  40. FCOMMON_OPT += -fno-asynchronous-unwind-tables
  41. endif
  42. ifeq ($(OSNAME), WINNT)
  43. ifeq ($(C_COMPILER), GCC)
  44. CCOMMON_OPT += -fno-asynchronous-unwind-tables
  45. FCOMMON_OPT += -fno-asynchronous-unwind-tables
  46. endif
  47. endif
  48. endif
  49. endif
  50. endif
  51. ifeq ($(CORE), COOPERLAKE)
  52. ifndef DYNAMIC_ARCH
  53. ifndef NO_AVX512
  54. ifeq ($(C_COMPILER), GCC)
  55. # cooperlake support was added in 10.1
  56. ifeq ($(GCCVERSIONGTEQ10)$(GCCMINORVERSIONGTEQ1), 11)
  57. CCOMMON_OPT += -march=cooperlake
  58. FCOMMON_OPT += -march=cooperlake
  59. endif
  60. endif
  61. ifeq ($(OSNAME), CYGWIN_NT)
  62. CCOMMON_OPT += -fno-asynchronous-unwind-tables
  63. FCOMMON_OPT += -fno-asynchronous-unwind-tables
  64. endif
  65. ifeq ($(OSNAME), WINNT)
  66. ifeq ($(C_COMPILER), GCC)
  67. CCOMMON_OPT += -fno-asynchronous-unwind-tables
  68. FCOMMON_OPT += -fno-asynchronous-unwind-tables
  69. endif
  70. endif
  71. endif
  72. endif
  73. endif
  74. ifdef HAVE_AVX2
  75. ifndef NO_AVX2
  76. ifeq ($(C_COMPILER), GCC)
  77. # AVX2 support was added in 4.7.0
  78. GCCVERSIONCHECK := $(GCCVERSIONGT4)$(GCCVERSIONGTEQ4)$(GCCMINORVERSIONGTEQ7)
  79. ifeq ($(GCCVERSIONCHECK), $(filter $(GCCVERSIONCHECK), 011 110 111))
  80. CCOMMON_OPT += -mavx2
  81. endif
  82. else
  83. ifeq ($(C_COMPILER), CLANG)
  84. CCOMMON_OPT += -mavx2
  85. endif
  86. endif
  87. ifeq ($(F_COMPILER), GFORTRAN)
  88. # AVX2 support was added in 4.7.0
  89. GCCVERSIONGTEQ4 := $(shell expr `$(FC) -dumpversion | cut -f1 -d.` \>= 4)
  90. GCCVERSIONGTEQ5 := $(shell expr `$(FC) -dumpversion | cut -f1 -d.` \>= 5)
  91. GCCMINORVERSIONGTEQ7 := $(shell expr `$(FC) -dumpversion | cut -f2 -d.` \>= 7)
  92. GCCVERSIONCHECK := $(GCCVERSIONGTEQ5)$(GCCVERSIONGTEQ4)$(GCCMINORVERSIONGTEQ7)
  93. ifeq ($(GCCVERSIONCHECK), $(filter $(GCCVERSIONCHECK), 011 110 111))
  94. FCOMMON_OPT += -mavx2
  95. endif
  96. else
  97. ifeq ($(F_COMPILER), FLANG)
  98. FCOMMON_OPT += -mavx2
  99. endif
  100. endif
  101. endif
  102. endif
  103. ifeq ($(OSNAME), Interix)
  104. ARFLAGS = -m x64
  105. endif
  106. ifeq ($(OSNAME), Darwin)
  107. ifndef SMP
  108. LIBMKL = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lguide -lpthread -lm
  109. else
  110. LIBMKL = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lguide -lpthread -lm
  111. endif
  112. else
  113. ifndef SMP
  114. LIBMKL = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -Wl,--start-group -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -Wl,--end-group -lguide -lpthread -lm
  115. else
  116. LIBMKL = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -Wl,--start-group -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -Wl,--end-group -lguide -lpthread -lm
  117. endif
  118. endif
  119. ifndef SMP
  120. LIBATLAS = -L$(ATLASPATH)64 -llapack -lcblas -lf77blas -latlas -lm
  121. else
  122. LIBATLAS = -L$(ATLASPATH)64 -llapack -lptcblas -lptf77blas -latlas -lpthread -lm
  123. endif
  124. LIBFLAME = -L$(FLAMEPATH) -llapack2flame -lflame $(TOPDIR)/$(LIBNAME) -lgfortran -lpthread -lm
  125. ifeq ($(F_COMPILER), g77)
  126. LIBACML = -L$(ACMLPATH)/gnu64/lib -Wl,-rpath,$(ACMLPATH)/gnu64/lib -lacml -lacml_mv -lg2c -lm
  127. endif
  128. ifeq ($(F_COMPILER), GFORTRAN)
  129. ifndef SMP
  130. LIBACML = -L$(ACMLPATH)/gfortran64/lib -Wl,-rpath,$(ACMLPATH)/gfortran64/lib -lacml -lacml_mv -lgfortran -lm
  131. else
  132. LIBACML = -L$(ACMLPATH)/gfortran64_mp/lib -Wl,-rpath,$(ACMLPATH)/gfortran64_mp/lib -lacml_mp -lacml_mv -lgfortran -lgomp -lm
  133. endif
  134. endif
  135. ifeq ($(F_COMPILER), INTEL)
  136. ifndef SMP
  137. LIBACML = -L$(ACMLPATH)/ifort64/lib -Wl,-rpath,$(ACMLPATH)/ifort64/lib -lacml -lacml_mv -lifcoremt_pic -lirc -lm -lpthread -ldl
  138. else
  139. LIBACML = -L$(ACMLPATH)/ifort64_mp/lib -Wl,-rpath,$(ACMLPATH)/ifort64_mp/lib -lacml_mp -lacml_mv -lifcoremt_pic -liomp5 -lirc -lm -lpthread -ldl
  140. endif
  141. endif
  142. ifeq ($(F_COMPILER), OPEN64)
  143. ifndef SMP
  144. LIBACML = -L$(ACMLPATH)/open64/lib -Wl,-rpath,$(ACMLPATH)/open64/lib -lacml -lacml_mv -lm
  145. else
  146. LIBACML = -L$(ACMLPATH)/open64_mp/lib -Wl,-rpath,$(ACMLPATH)/open64_mp/lib -lacml_mp -lacml_mv -lm -lpthread
  147. endif
  148. endif
  149. ifeq ($(F_COMPILER), pgf77)
  150. ifndef SMP
  151. LIBACML = -L$(ACMLPATH)/pgi64/lib -Wl,-rpath,$(ACMLPATH)/pgi64/lib -lacml -lacml_mv -L$(PGIPATH) -Wl,-rpath,$(PGIPATH) -lpgftnrtl -lnspgc -lpgmp -lpgc
  152. else
  153. LIBACML = -L$(ACMLPATH)/pgi64_mp/lib -Wl,-rpath,$(ACMLPATH)/pgi64_mp/lib -lacml -lacml_mv -L$(PGIPATH) -Wl,-rpath,$(PGIPATH) -lpgftnrtl -lnspgc -lpgmp -lpgc
  154. endif
  155. endif
  156. ifeq ($(F_COMPILER), PATHSCALE)
  157. ifndef SMP
  158. LIBACML = -L$(ACMLPATH)/pathscale64/lib -Wl,-rpath,$(ACMLPATH)/pathscale64/lib -lacml -lacml_mv -Wl,-rpath,$(PATHSCALEPATH) -L$(PATHSCALEPATH) -lpathfortran -lm
  159. else
  160. LIBACML = -L$(ACMLPATH)/pathscale64_mp/lib -Wl,-rpath,$(ACMLPATH)/pathscale64_mp/lib -lacml_mp -lacml_mv -Wl,-rpath,$(PATHSCALEPATH) -L$(PATHSCALEPATH) -lopenmp -lpathfortran -lm
  161. endif
  162. endif
  163. ifeq ($(F_COMPILER), f90)
  164. LIBACML = -L$(ACMLPATH)/sun64/lib -Wl,-R,$(ACMLPATH)/sun64/lib -L$(SUNPATH)/lib/amd64 -Wl,-R,$(SUNPATH)/lib/amd64 -lacml -lacml_mv -lfsu
  165. endif
  166. LIBSUNPERF = -L$(SUNPATH)/lib/amd64 -L$(SUNPATH)/rtlibs/amd64 -Wl,-R,$(SUNPATH)/lib/amd64 -Wl,-R,$(SUNPATH)/rtlibs/amd64 -lsunperf -lfui -lfsu -lmtsk
  167. LIBVECLIB = /System/Library/Frameworks/vecLib.framework/Versions/Current/vecLib