Merge branch 'hotfix-0.1alpha2.2'
[platform/upstream/openblas.git] / Makefile
1 TOPDIR  = .
2 include ./Makefile.system
3
4 BLASDIRS = interface driver/level2 driver/level3 driver/others
5
6 ifndef DYNAMIC_ARCH
7 BLASDIRS += kernel 
8 endif
9
10 ifdef UTEST_CHECK
11 SANITY_CHECK = 1
12 endif
13
14 ifdef SANITY_CHECK
15 BLASDIRS += reference
16 endif
17
18 ifndef PREFIX
19 PREFIX = /opt/OpenBLAS
20 endif
21
22 SUBDIRS = $(BLASDIRS)
23 ifneq ($(NO_LAPACK), 1)
24 SUBDIRS += lapack
25 endif
26
27 SUBDIRS_ALL = $(SUBDIRS) test ctest utest exports benchmark ../laswp ../bench
28
29 .PHONY : all libs netlib test ctest shared install 
30 .NOTPARALLEL : all libs prof lapack-test install
31
32 all :: libs netlib tests shared
33         @echo
34         @echo " OpenBLAS build complete."
35         @echo
36         @echo "  OS               ... $(OSNAME)             "
37         @echo "  Architecture     ... $(ARCH)               "
38 ifndef BINARY64
39         @echo "  BINARY           ... 32bit                 "
40 else
41         @echo "  BINARY           ... 64bit                 "
42 endif
43 ifdef INTERFACE64
44         @echo "  Use 64 bits int    (equivalent to \"-i8\" in Fortran)      "
45 endif
46         @echo "  C compiler       ... $(C_COMPILER)  (command line : $(CC))"
47         @echo "  Fortran compiler ... $(F_COMPILER)  (command line : $(FC))"
48 ifneq ($(OSNAME), AIX)
49         @echo -n "  Library Name     ... $(LIBNAME)"
50 else
51         @echo "  Library Name     ... $(LIBNAME)"
52 endif
53
54 ifndef SMP
55         @echo " (Single threaded)  "
56 else
57         @echo " (Multi threaded; Max num-threads is $(NUM_THREADS))"
58 endif
59         @echo
60
61 shared :
62 ifeq ($(OSNAME), Linux)
63         $(MAKE) -C exports so
64         -ln -fs $(LIBSONAME) libopenblas.so
65 endif
66 ifeq ($(OSNAME), FreeBSD)
67         $(MAKE) -C exports so
68         -ln -fs $(LIBSONAME) libopenblas.so
69 endif
70 ifeq ($(OSNAME), NetBSD)
71         $(MAKE) -C exports so
72         -ln -fs $(LIBSONAME) libopenblas.so
73 endif
74 ifeq ($(OSNAME), Darwin)
75         $(MAKE) -C exports dyn
76         -ln -fs $(LIBDYNNAME) libopenblas.dylib
77 endif
78 ifeq ($(OSNAME), WINNT)
79         $(MAKE) -C exports dll
80         -ln -fs $(LIBDLLNAME) libopenblas.dll
81 endif
82 ifeq ($(OSNAME), CYGWIN_NT)
83         $(MAKE) -C exports dll
84         -ln -fs $(LIBDLLNAME) libopenblas.dll
85 endif
86
87 tests :
88 ifndef NOFORTRAN
89 ifndef TARGET
90 ifndef CROSS
91         touch $(LIBNAME)
92 ifndef NO_FBLAS
93         $(MAKE) -C test all
94 ifdef UTEST_CHECK
95         $(MAKE) -C utest all
96 endif
97 endif
98 ifndef NO_CBLAS
99         $(MAKE) -C ctest all
100 endif
101 endif
102 endif
103 endif
104
105 libs :
106 ifeq ($(CORE), UNKOWN)
107         $(error OpenBLAS: Detecting CPU failed. Please set TARGET explicitly, e.g. make TARGET=your_cpu_target. Please read README for the detail.)
108 endif
109 ifeq ($(NOFORTRAN), 1)
110         $(error OpenBLAS: Detecting fortran compiler failed. Please install fortran compiler, e.g. gfortran, ifort, openf90.)
111 endif
112         -ln -fs $(LIBNAME) libopenblas.$(LIBSUFFIX)
113         for d in $(SUBDIRS) ; \
114         do if test -d $$d; then \
115           $(MAKE) -C $$d $(@F) || exit 1 ; \
116         fi; \
117         done
118 #Save the config files for installation
119         cp Makefile.conf Makefile.conf_last
120         cp config.h config_last.h
121 ifdef DYNAMIC_ARCH
122           $(MAKE) -C kernel commonlibs || exit 1
123         for d in $(DYNAMIC_CORE) ; \
124         do  $(MAKE) GOTOBLAS_MAKEFILE= -C kernel TARGET_CORE=$$d kernel || exit 1 ;\
125         done
126         echo DYNAMIC_ARCH=1 >> Makefile.conf_last
127 endif
128         touch lib.grd
129
130 prof : prof_blas prof_lapack
131
132 prof_blas :
133         ln -fs $(LIBNAME_P) libopenblas_p.$(LIBSUFFIX)
134         for d in $(SUBDIRS) ; \
135         do if test -d $$d; then \
136           $(MAKE) -C $$d prof || exit 1 ; \
137         fi; \
138         done
139 ifdef DYNAMIC_ARCH
140           $(MAKE) -C kernel commonprof || exit 1
141 endif
142
143 blas :
144         ln -fs $(LIBNAME) libopenblas.$(LIBSUFFIX)
145         for d in $(BLASDIRS) ; \
146         do if test -d $$d; then \
147           $(MAKE) -C $$d libs || exit 1 ; \
148         fi; \
149         done
150
151 hpl : 
152         ln -fs $(LIBNAME) libopenblas.$(LIBSUFFIX)
153         for d in $(BLASDIRS) ../laswp exports ; \
154         do if test -d $$d; then \
155           $(MAKE) -C $$d $(@F) || exit 1 ; \
156         fi; \
157         done
158 ifdef DYNAMIC_ARCH
159           $(MAKE) -C kernel commonlibs || exit 1
160         for d in $(DYNAMIC_CORE) ; \
161         do  $(MAKE) GOTOBLAS_MAKEFILE= -C kernel TARGET_CORE=$$d kernel || exit 1 ;\
162         done
163 endif
164
165 hpl_p :
166         ln -fs $(LIBNAME_P) libopenblas_p.$(LIBSUFFIX)
167         for d in $(SUBDIRS) ../laswp exports ; \
168         do if test -d $$d; then \
169           $(MAKE) -C $$d $(@F) || exit 1 ; \
170         fi; \
171         done
172
173 ifeq ($(NO_LAPACK), 1)
174 netlib : 
175
176 else
177 netlib : lapack-3.1.1 patch.for_lapack-3.1.1 lapack-3.1.1/make.inc
178 ifndef NOFORTRAN
179         -@$(MAKE) -C lapack-3.1.1 lapacklib
180 endif
181 endif
182
183 prof_lapack : lapack-3.1.1 lapack-3.1.1/make.inc
184         -@$(MAKE) -C lapack-3.1.1 lapack_prof
185
186 lapack-3.1.1/make.inc :
187 ifndef NOFORTRAN
188         -@echo "FORTRAN   = $(FC)" > lapack-3.1.1/make.inc
189         -@echo "OPTS      = $(FFLAGS)" >> lapack-3.1.1/make.inc
190         -@echo "POPTS     = $(FPFLAGS)" >> lapack-3.1.1/make.inc
191         -@echo "NOOPT     = $(FFLAGS) -O0" >> lapack-3.1.1/make.inc
192         -@echo "PNOOPT     = $(FPFLAGS) -O0" >> lapack-3.1.1/make.inc
193         -@echo "LOADOPTS  = $(FFLAGS) $(EXTRALIB)" >> lapack-3.1.1/make.inc
194         -@echo "ARCH      = $(AR)" >> lapack-3.1.1/make.inc
195         -@echo "RANLIB    = $(RANLIB)" >> lapack-3.1.1/make.inc
196         -@echo "LAPACKLIB = ../$(LIBNAME)" >> lapack-3.1.1/make.inc
197         -@echo "LAPACKLIB_P = ../$(LIBNAME_P)" >> lapack-3.1.1/make.inc
198         -@echo "SUFFIX     = $(SUFFIX)" >> lapack-3.1.1/make.inc
199         -@echo "PSUFFIX    = $(PSUFFIX)" >> lapack-3.1.1/make.inc
200 #       -@echo "CEXTRALIB  = $(CEXTRALIB)" >> lapack-3.1.1/make.inc
201         -@cat  make.inc >> lapack-3.1.1/make.inc
202 endif
203
204 lapack-3.1.1 : lapack-3.1.1.tgz
205 ifndef NOFORTRAN
206         @if test `$(MD5SUM) lapack-3.1.1.tgz | $(AWK) '{print $$1}'` = 00b21551a899bcfbaa7b8443e1faeef9; then \
207                 echo $(TAR) zxf $< ;\
208                 $(TAR) zxf $< && (cd lapack-3.1.1; $(PATCH) -p1 < ../patch.for_lapack-3.1.1) ;\
209         else \
210                 echo "  lapack-3.1.1.tgz check sum is wrong (Please use orignal)." ;\
211                 rm -rf lapack-3.1.1 ;\
212         fi
213 endif
214
215 lapack-3.1.1.tgz :
216 ifndef NOFORTRAN
217         -wget http://www.netlib.org/lapack/lapack-3.1.1.tgz
218 endif
219
220 large.tgz : 
221 ifndef NOFORTRAN
222         -wget http://www.netlib.org/lapack/timing/large.tgz
223 endif
224
225 timing.tgz :
226 ifndef NOFORTRAN
227         -wget http://www.netlib.org/lapack/timing/timing.tgz
228 endif
229
230 lapack-timing : lapack-3.1.1 large.tgz timing.tgz
231 ifndef NOFORTRAN
232         (cd lapack-3.1.1; $(TAR) zxf ../timing.tgz TIMING)
233         (cd lapack-3.1.1/TIMING; $(TAR) zxf ../../large.tgz )
234         make -C lapack-3.1.1 tmglib
235         make -C lapack-3.1.1/TIMING
236 endif
237
238
239 lapack-test :
240         $(MAKE) -C lapack-3.1.1 tmglib
241         $(MAKE) -C lapack-3.1.1/TESTING xeigtstc xeigtstd xeigtsts xeigtstz xlintstc xlintstd xlintstds xlintsts xlintstz xlintstzc
242         @rm     -f lapack-3.1.1/TESTING/*.out
243         $(MAKE) -j 1 -C lapack-3.1.1/TESTING
244         $(GREP) failed lapack-3.1.1/TESTING/*.out
245
246 dummy :
247
248 install :
249         $(MAKE) -f Makefile.install install
250
251 clean ::
252         @for d in $(SUBDIRS_ALL) ; \
253         do if test -d $$d; then \
254           $(MAKE) -C $$d $(@F) || exit 1 ; \
255         fi; \
256         done
257 #ifdef DYNAMIC_ARCH
258         @$(MAKE) -C kernel clean
259 #endif
260         @rm -f *.$(LIBSUFFIX) *.so *~ *.exe getarch getarch_2nd *.dll *.lib *.$(SUFFIX) *.dwf libopenblas.$(LIBSUFFIX) libopenblas_p.$(LIBSUFFIX) *.lnk myconfig.h
261         @rm -f Makefile.conf config.h Makefile_kernel.conf config_kernel.h st* *.dylib
262         @if test -d lapack-3.1.1; then \
263         echo deleting lapack-3.1.1; \
264         rm -rf lapack-3.1.1 ;\
265         fi
266         @rm -f *.grd Makefile.conf_last config_last.h
267         @echo Done.