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 6.5 kB

13 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. TOPDIR = ..
  2. include ../Makefile.system
  3. ifndef EXPRECISION
  4. EXPRECISION = 0
  5. endif
  6. ifndef NO_CBLAS
  7. NO_CBLAS = 0
  8. endif
  9. ifndef NO_LAPACK
  10. NO_LAPACK = 0
  11. endif
  12. ifndef NO_LAPACKE
  13. NO_LAPACKE = 0
  14. endif
  15. ifeq ($(OSNAME), WINNT)
  16. ifeq ($(F_COMPILER), GFORTRAN)
  17. EXTRALIB += -lgfortran
  18. endif
  19. ifeq ($(USE_OPENMP), 1)
  20. ifeq ($(C_COMPILER), GCC)
  21. EXTRALIB += -lgomp
  22. endif
  23. endif
  24. endif
  25. ifeq ($(OSNAME), CYGWIN_NT)
  26. ifeq ($(F_COMPILER), GFORTRAN)
  27. EXTRALIB += -lgfortran
  28. endif
  29. endif
  30. all::
  31. libs::
  32. prof::
  33. hpl:: libgoto_hpl.$(LIBSUFFIX)
  34. hpl_p:: libgoto_hpl_p.$(LIBSUFFIX)
  35. libgoto_hpl.$(LIBSUFFIX) : ../$(LIBNAME)
  36. rm -f $(@F)
  37. $(LD) -r $(LDFLAGS) -o goto.$(SUFFIX) --whole-archive $< --no-whole-archive
  38. $(AR) cq $(@F) goto.$(SUFFIX)
  39. $(RANLIB) libgoto_hpl.$(LIBSUFFIX)
  40. libgoto_hpl_p.$(LIBSUFFIX) : ../$(LIBNAME_P)
  41. rm -f $(@F)
  42. $(LD) -r $(LDFLAGS) -o goto.$(PSUFFIX) --whole-archive $< --no-whole-archive
  43. $(AR) cq $(@F) goto.$(PSUFFIX)
  44. $(RANLIB) libgoto_hpl_p.$(LIBSUFFIX)
  45. libgoto_hpl.dll : libgoto_hpl.$(LIBSUFFIX) dllinit.$(SUFFIX) libgoto_hpl.def
  46. $(DLLWRAP) -o $(@F) --def libgoto_hpl.def --entry _dllinit -s dllinit.$(SUFFIX) --dllname libgoto_hpl.dll libgoto_hpl.$(LIBSUFFIX)
  47. lib /machine:X64 /def:libgoto_hpl.def
  48. dyn : $(LIBDYNNAME)
  49. zip : dll
  50. zip $(LIBZIPNAME) $(LIBDLLNAME) $(LIBNAME)
  51. dll : ../$(LIBDLLNAME)
  52. #libgoto2.dll
  53. dll2 : libgoto2_shared.dll
  54. # On Windows, we only generate a DLL without a version suffix. This is because
  55. # applications which link against the dynamic library reference a fixed DLL name
  56. # in their import table. By instead using a stable name it is possible to
  57. # upgrade between library versions, without needing to re-link an application.
  58. # For more details see: https://github.com/xianyi/OpenBLAS/issues/127.
  59. ../$(LIBDLLNAME) : ../$(LIBNAME) libopenblas.def dllinit.$(SUFFIX)
  60. $(RANLIB) ../$(LIBNAME)
  61. ifeq ($(BINARY32), 1)
  62. $(DLLWRAP) -o ../$(LIBDLLNAME) --def libopenblas.def \
  63. --entry _dllinit@12 -s dllinit.$(SUFFIX) --dllname $(@F) ../$(LIBNAME) $(EXTRALIB)
  64. -lib /machine:i386 /def:libopenblas.def
  65. else
  66. $(DLLWRAP) -o ../$(LIBDLLNAME) --def libopenblas.def \
  67. --entry $(FU)dllinit -s dllinit.$(SUFFIX) --dllname $(@F) ../$(LIBNAME) $(EXTRALIB)
  68. -lib /machine:X64 /def:libopenblas.def
  69. endif
  70. libgoto2_shared.dll : ../$(LIBNAME) libgoto2_shared.def
  71. $(CC) $(LDFLAGS) libgoto2_shared.def -shared -o $(@F) \
  72. -Wl,--whole-archive ../$(LIBNAME) -Wl,--no-whole-archive \
  73. -Wl,--out-implib,libgoto2_shared.lib $(FEXTRALIB)
  74. libopenblas.def : gensymbol
  75. perl ./gensymbol win2k $(ARCH) dummy $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) > $(@F)
  76. libgoto2_shared.def : gensymbol
  77. perl ./gensymbol win2k $(ARCH) dummy $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) > $(@F)
  78. libgoto_hpl.def : gensymbol
  79. perl ./gensymbol win2khpl $(ARCH) dummy $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) > $(@F)
  80. $(LIBDYNNAME) : ../$(LIBNAME) osx.def
  81. $(CC) $(CFLAGS) -all_load -headerpad_max_install_names -install_name $(CURDIR)/../$(LIBDYNNAME) -dynamiclib -o ../$(LIBDYNNAME) $< -Wl,-exported_symbols_list,osx.def $(FEXTRALIB)
  82. symbol.$(SUFFIX) : symbol.S
  83. $(CC) $(CFLAGS) -c -o $(@F) $^
  84. dllinit.$(SUFFIX) : dllinit.c
  85. $(CC) $(CFLAGS) -c -o $(@F) -s $<
  86. ifeq ($(OSNAME), Linux)
  87. so : ../$(LIBSONAME)
  88. ../$(LIBSONAME) : ../$(LIBNAME) linux.def linktest.c
  89. $(CC) $(LDFLAGS) -shared -o ../$(LIBSONAME) \
  90. -Wl,--whole-archive ../$(LIBNAME) -Wl,--no-whole-archive \
  91. -Wl,--retain-symbols-file=linux.def -Wl,-soname,$(LIBPREFIX).so.$(MAJOR_VERSION) $(EXTRALIB)
  92. ifneq ($(C_COMPILER), LSB)
  93. $(CC) $(CFLAGS) $(LDFLAGS) -w -o linktest linktest.c ../$(LIBSONAME) $(FEXTRALIB) && echo OK.
  94. else
  95. #Use FC on LSB
  96. $(FC) $(FFLAGS) $(LDFLAGS) -w -o linktest linktest.c ../$(LIBSONAME) $(FEXTRALIB) && echo OK.
  97. endif
  98. rm -f linktest
  99. endif
  100. #http://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or
  101. ifeq ($(OSNAME), $(filter $(OSNAME),FreeBSD NetBSD))
  102. so : ../$(LIBSONAME)
  103. ../$(LIBSONAME) : ../$(LIBNAME) linux.def linktest.c
  104. $(CC) $(LDFLAGS) -shared -o ../$(LIBSONAME) \
  105. -Wl,--whole-archive ../$(LIBNAME) -Wl,--no-whole-archive \
  106. -Wl,--retain-symbols-file=linux.def $(FEXTRALIB) $(EXTRALIB)
  107. $(CC) $(CFLAGS) $(LDFLAGS) -w -o linktest linktest.c ../$(LIBSONAME) $(FEXTRALIB) && echo OK.
  108. rm -f linktest
  109. endif
  110. ifeq ($(OSNAME), OSF1)
  111. so : ../$(LIBSONAME)
  112. ../$(LIBSONAME) :
  113. $(CC) $(LDFLAGS) -shared -o ../$(LIBSONAME) ../$(LIBNAME)
  114. endif
  115. ifeq ($(OSNAME), SunOS)
  116. so : ../$(LIBSONAME)
  117. $(CC) $(LDFLAGS) -shared -o ../$(LIBSONAME) \
  118. -Wl,--whole-archive ../$(LIBNAME) -Wl,--no-whole-archive $(EXTRALIB)
  119. $(CC) $(LDFLAGS) -w -o linktest linktest.c ../$(LIBSONAME) $(FEXTRALIB) && echo OK.
  120. rm -f linktest
  121. endif
  122. ifeq ($(OSNAME), AIX)
  123. ifeq ($(COMPILER_F77), xlf)
  124. goto32.$(SUFFIX) : ../$(LIBNAME) aix.def
  125. ld -o $(@F) ../$(LIBNAME) -bE:aix.def -bM:SRE -bnoexpall -bnoentry -L$(HOME)/misc/lib -lxlf90 -lc -lm -lpthread
  126. goto64.$(SUFFIX) : ../$(LIBNAME) aix.def
  127. ld -b64 -o $(@F) ../$(LIBNAME) -bE:aix.def -bM:SRE -bnoexpall -bnoentry -L$(HOME)/misc/lib/ppc64 -lxlf90 -lc -lm -lpthread
  128. else
  129. goto32.$(SUFFIX) : ../$(LIBNAME) aix.def
  130. ld -o $(@F) ../$(LIBNAME) -bE:aix.def -bM:SRE -bnoexpall -bnoentry -L$(HOME)/misc/lib -lg2c -lc -lm
  131. goto64.$(SUFFIX) : ../$(LIBNAME) aix.def
  132. ld -b64 -o $(@F) ../$(LIBNAME) -bE:aix.def -bM:SRE -bnoexpall -bnoentry -L$(HOME)/misc/lib/ppc64 -lg2c -lc -lm
  133. endif
  134. endif
  135. static : ../$(LIBNAME)
  136. $(LD) $(LDFLAGS) -r -o goto.$(SUFFIX) \
  137. --whole-archive ../$(LIBNAME) --no-whole-archive
  138. rm -f ../$(LIBNAME)
  139. $(AR) -cq ../$(LIBNAME) goto.$(SUFFIX)
  140. rm -f goto.$(SUFFIX)
  141. linux.def : gensymbol ../Makefile.system ../getarch.c
  142. perl ./gensymbol linux $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) > $(@F)
  143. osx.def : gensymbol ../Makefile.system ../getarch.c
  144. perl ./gensymbol osx $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) > $(@F)
  145. aix.def : gensymbol ../Makefile.system ../getarch.c
  146. perl ./gensymbol aix $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) > $(@F)
  147. symbol.S : gensymbol
  148. perl ./gensymbol win2kasm noarch dummy $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) > symbol.S
  149. test : linktest.c
  150. $(CC) $(CFLAGS) $(LDFLAGS) -w -o linktest linktest.c ../$(LIBSONAME) -lm && echo OK.
  151. rm -f linktest
  152. linktest.c : gensymbol ../Makefile.system ../getarch.c
  153. perl ./gensymbol linktest $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) > linktest.c
  154. clean ::
  155. @rm -f *.def *.dylib __.SYMDEF*
  156. include ../Makefile.tail