Avoid truncating cblas.h when compiling gencblas target
[platform/upstream/openblas.git] / Makefile
index 2cf5955..27923aa 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -4,11 +4,7 @@ include ./Makefile.system
 BLASDIRS = interface driver/level2 driver/level3 driver/others
 
 ifneq ($(DYNAMIC_ARCH), 1)
-BLASDIRS += kernel 
-endif
-
-ifdef UTEST_CHECK
-SANITY_CHECK = 1
+BLASDIRS += kernel
 endif
 
 ifdef SANITY_CHECK
@@ -20,10 +16,12 @@ ifneq ($(NO_LAPACK), 1)
 SUBDIRS        += lapack
 endif
 
+LAPACK_NOOPT := $(filter-out -O0 -O1 -O2 -O3 -Ofast,$(LAPACK_FFLAGS))
+
 SUBDIRS_ALL = $(SUBDIRS) test ctest utest exports benchmark ../laswp ../bench
 
 .PHONY : all libs netlib test ctest shared install
-.NOTPARALLEL : all libs prof lapack-test install
+.NOTPARALLEL : all libs prof lapack-test install blas-test
 
 all :: libs netlib tests shared
        @echo
@@ -36,9 +34,13 @@ ifndef BINARY64
 else
        @echo "  BINARY           ... 64bit                 "
 endif
+
 ifdef INTERFACE64
+ifneq ($(INTERFACE64), 0)
        @echo "  Use 64 bits int    (equivalent to \"-i8\" in Fortran)      "
 endif
+endif
+
        @echo "  C compiler       ... $(C_COMPILER)  (command line : $(CC))"
 ifndef NOFORTRAN
        @echo "  Fortran compiler ... $(F_COMPILER)  (command line : $(FC))"
@@ -57,7 +59,7 @@ endif
 
 ifeq ($(USE_OPENMP), 1)
        @echo
-       @echo " Use OpenMP in the multithreading. Becasue of ignoring OPENBLAS_NUM_THREADS and GOTO_NUM_THREADS flags, "
+       @echo " Use OpenMP in the multithreading. Because of ignoring OPENBLAS_NUM_THREADS and GOTO_NUM_THREADS flags, "
        @echo " you should use OMP_NUM_THREADS environment variable to control the number of threads."
        @echo
 endif
@@ -79,22 +81,22 @@ endif
 
 shared :
 ifndef NO_SHARED
-ifeq ($(OSNAME), Linux)
+ifeq ($(OSNAME), $(filter $(OSNAME),Linux SunOS Android))
        @$(MAKE) -C exports so
-       @-ln -fs $(LIBSONAME) $(LIBPREFIX).so
-       @-ln -fs $(LIBSONAME) $(LIBPREFIX).so.$(MAJOR_VERSION)
+       @ln -fs $(LIBSONAME) $(LIBPREFIX).so
+       @ln -fs $(LIBSONAME) $(LIBPREFIX).so.$(MAJOR_VERSION)
 endif
 ifeq ($(OSNAME), FreeBSD)
        @$(MAKE) -C exports so
-       @-ln -fs $(LIBSONAME) $(LIBPREFIX).so
+       @ln -fs $(LIBSONAME) $(LIBPREFIX).so
 endif
 ifeq ($(OSNAME), NetBSD)
        @$(MAKE) -C exports so
-       @-ln -fs $(LIBSONAME) $(LIBPREFIX).so
+       @ln -fs $(LIBSONAME) $(LIBPREFIX).so
 endif
 ifeq ($(OSNAME), Darwin)
        @$(MAKE) -C exports dyn
-       @-ln -fs $(LIBDYNNAME) $(LIBPREFIX).dylib
+       @ln -fs $(LIBDYNNAME) $(LIBPREFIX).dylib
 endif
 ifeq ($(OSNAME), WINNT)
        @$(MAKE) -C exports dll
@@ -106,28 +108,27 @@ endif
 
 tests :
 ifndef NOFORTRAN
-ifndef TARGET
-ifndef CROSS
        touch $(LIBNAME)
 ifndef NO_FBLAS
        $(MAKE) -C test all
-ifdef UTEST_CHECK
        $(MAKE) -C utest all
 endif
-endif
 ifndef NO_CBLAS
        $(MAKE) -C ctest all
 endif
 endif
-endif
-endif
 
 libs :
 ifeq ($(CORE), UNKOWN)
        $(error OpenBLAS: Detecting CPU failed. Please set TARGET explicitly, e.g. make TARGET=your_cpu_target. Please read README for the detail.)
 endif
 ifeq ($(NOFORTRAN), 1)
-       $(error OpenBLAS: Detecting fortran compiler failed. Please install fortran compiler, e.g. gfortran, ifort, openf90.)
+       $(info OpenBLAS: Detecting fortran compiler failed. Cannot compile LAPACK. Only compile BLAS.)
+endif
+ifeq ($(NO_STATIC), 1)
+ifeq ($(NO_SHARED), 1)
+       $(error OpenBLAS: neither static nor shared are enabled.)
+endif
 endif
        @-ln -fs $(LIBNAME) $(LIBPREFIX).$(LIBSUFFIX)
        @for d in $(SUBDIRS) ; \
@@ -144,7 +145,7 @@ endif
 ifeq ($(EXPRECISION), 1)
        @echo "#define EXPRECISION">> config_last.h
 endif
-## 
+##
 ifeq ($(DYNAMIC_ARCH), 1)
        @$(MAKE) -C kernel commonlibs || exit 1
        @for d in $(DYNAMIC_CORE) ; \
@@ -178,7 +179,7 @@ blas :
        fi; \
        done
 
-hpl : 
+hpl :
        ln -fs $(LIBNAME) $(LIBPREFIX).$(LIBSUFFIX)
        for d in $(BLASDIRS) ../laswp exports ; \
        do if test -d $$d; then \
@@ -201,12 +202,13 @@ hpl_p :
        done
 
 ifeq ($(NO_LAPACK), 1)
-netlib : 
+netlib :
 
 else
 netlib : lapack_prebuild
 ifndef NOFORTRAN
        @$(MAKE) -C $(NETLIB_LAPACK_DIR) lapacklib
+       @$(MAKE) -C $(NETLIB_LAPACK_DIR) tmglib
 endif
 ifndef NO_LAPACKE
        @$(MAKE) -C $(NETLIB_LAPACK_DIR) lapackelib
@@ -219,10 +221,10 @@ prof_lapack : lapack_prebuild
 lapack_prebuild :
 ifndef NOFORTRAN
        -@echo "FORTRAN     = $(FC)" > $(NETLIB_LAPACK_DIR)/make.inc
-       -@echo "OPTS        = $(FFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc
-       -@echo "POPTS       = $(FPFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc
-       -@echo "NOOPT       = $(FFLAGS) -O0" >> $(NETLIB_LAPACK_DIR)/make.inc
-       -@echo "PNOOPT      = $(FPFLAGS) -O0" >> $(NETLIB_LAPACK_DIR)/make.inc
+       -@echo "OPTS        = $(LAPACK_FFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc
+       -@echo "POPTS       = $(LAPACK_FPFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc
+       -@echo "NOOPT       = -O0 $(LAPACK_NOOPT)" >> $(NETLIB_LAPACK_DIR)/make.inc
+       -@echo "PNOOPT      = $(LAPACK_FPFLAGS) -O0" >> $(NETLIB_LAPACK_DIR)/make.inc
        -@echo "LOADOPTS    = $(FFLAGS) $(EXTRALIB)" >> $(NETLIB_LAPACK_DIR)/make.inc
        -@echo "CC          = $(CC)" >> $(NETLIB_LAPACK_DIR)/make.inc
        -@echo "override CFLAGS      = $(LAPACK_CFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc
@@ -230,46 +232,35 @@ ifndef NOFORTRAN
        -@echo "ARCHFLAGS   = -ru" >> $(NETLIB_LAPACK_DIR)/make.inc
        -@echo "RANLIB      = $(RANLIB)" >> $(NETLIB_LAPACK_DIR)/make.inc
        -@echo "LAPACKLIB   = ../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
+       -@echo "TMGLIB      = ../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
+       -@echo "BLASLIB     = ../../../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
        -@echo "LAPACKELIB  = ../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
        -@echo "LAPACKLIB_P = ../$(LIBNAME_P)" >> $(NETLIB_LAPACK_DIR)/make.inc
        -@echo "SUFFIX      = $(SUFFIX)" >> $(NETLIB_LAPACK_DIR)/make.inc
        -@echo "PSUFFIX     = $(PSUFFIX)" >> $(NETLIB_LAPACK_DIR)/make.inc
        -@echo "CEXTRALIB   = $(EXTRALIB)" >> $(NETLIB_LAPACK_DIR)/make.inc
-       -@cat  make.inc >> $(NETLIB_LAPACK_DIR)/make.inc
-endif
-
-lapack-3.4.2 : lapack-3.4.2.tgz
-ifndef NOFORTRAN
-ifndef NO_LAPACK
-       @if test `$(MD5SUM) $< | $(AWK) '{print $$1}'` = 61bf1a8a4469d4bdb7604f5897179478; then \
-               echo $(TAR) zxf $< ;\
-               $(TAR) zxf $< && (cd $(NETLIB_LAPACK_DIR); $(PATCH) -p1 < ../patch.for_lapack-3.4.2) ;\
-               rm -f $(NETLIB_LAPACK_DIR)/lapacke/make.inc ;\
-       else \
-               rm -rf $(NETLIB_LAPACK_DIR) ;\
-               echo "  Cannot download lapack-3.4.2.tgz or the MD5 check sum is wrong (Please use orignal)."; \
-               exit 1; \
-       fi
-endif
+ifeq ($(F_COMPILER), GFORTRAN)
+       -@echo "TIMER       = INT_ETIME" >> $(NETLIB_LAPACK_DIR)/make.inc
+ifdef SMP
+ifeq ($(OSNAME), WINNT)
+       -@echo "LOADER      = $(FC)" >> $(NETLIB_LAPACK_DIR)/make.inc
+else
+       -@echo "LOADER      = $(FC) -pthread" >> $(NETLIB_LAPACK_DIR)/make.inc
 endif
-
-LAPACK_URL=http://www.netlib.org/lapack/lapack-3.4.2.tgz
-
-lapack-3.4.2.tgz :
-ifndef NOFORTRAN
-#http://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or
-ifeq ($(OSNAME), $(filter $(OSNAME),Darwin NetBSD))
-       curl -O $(LAPACK_URL);
 else
-ifeq ($(OSNAME), FreeBSD)
-       fetch $(LAPACK_URL);
+       -@echo "LOADER      = $(FC)" >> $(NETLIB_LAPACK_DIR)/make.inc
+endif
 else
-       wget -O $@ $(LAPACK_URL);
+       -@echo "TIMER       = NONE" >> $(NETLIB_LAPACK_DIR)/make.inc
+       -@echo "LOADER      = $(FC)" >> $(NETLIB_LAPACK_DIR)/make.inc
 endif
+ifeq ($(BUILD_LAPACK_DEPRECATED), 1)
+       -@echo "BUILD_DEPRECATED      = 1" >> $(NETLIB_LAPACK_DIR)/make.inc
 endif
+       -@cat  make.inc >> $(NETLIB_LAPACK_DIR)/make.inc
 endif
 
-large.tgz : 
+large.tgz :
 ifndef NOFORTRAN
        if [ ! -a $< ]; then
        -wget http://www.netlib.org/lapack/timing/large.tgz;
@@ -287,17 +278,30 @@ lapack-timing : large.tgz timing.tgz
 ifndef NOFORTRAN
        (cd $(NETLIB_LAPACK_DIR); $(TAR) zxf ../timing.tgz TIMING)
        (cd $(NETLIB_LAPACK_DIR)/TIMING; $(TAR) zxf ../../large.tgz )
-       make -C $(NETLIB_LAPACK_DIR) tmglib
-       make -C $(NETLIB_LAPACK_DIR)/TIMING
+       $(MAKE) -C $(NETLIB_LAPACK_DIR)/TIMING
 endif
 
 
 lapack-test :
-       $(MAKE) -C $(NETLIB_LAPACK_DIR) tmglib
-       $(MAKE) -C $(NETLIB_LAPACK_DIR)/TESTING xeigtstc xeigtstd xeigtsts xeigtstz xlintstc xlintstd xlintstds xlintsts xlintstz xlintstzc
-       @rm     -f $(NETLIB_LAPACK_DIR)/TESTING/*.out
-       $(MAKE) -j 1 -C $(NETLIB_LAPACK_DIR)/TESTING
-       $(GREP) failed $(NETLIB_LAPACK_DIR)/TESTING/*.out
+       (cd $(NETLIB_LAPACK_DIR)/TESTING && rm -f x* *.out)
+       $(MAKE) -j 1 -C $(NETLIB_LAPACK_DIR)/TESTING xeigtstc  xeigtstd  xeigtsts  xeigtstz  xlintstc  xlintstd  xlintstds  xlintstrfd  xlintstrfz  xlintsts  xlintstz  xlintstzc xlintstrfs xlintstrfc
+ifneq ($(CROSS), 1)
+       ( cd $(NETLIB_LAPACK_DIR)/INSTALL; ./testlsame; ./testslamch; ./testdlamch; \
+        ./testsecond; ./testdsecnd; ./testieee; ./testversion )
+       (cd $(NETLIB_LAPACK_DIR); ./lapack_testing.py -r )
+endif
+
+lapack-runtest:
+       ( cd $(NETLIB_LAPACK_DIR)/INSTALL; ./testlsame; ./testslamch; ./testdlamch; \
+        ./testsecond; ./testdsecnd; ./testieee; ./testversion )
+       (cd $(NETLIB_LAPACK_DIR); ./lapack_testing.py -r )
+
+
+blas-test:
+       (cd $(NETLIB_LAPACK_DIR)/BLAS && rm -f x* *.out)
+       $(MAKE) -j 1 -C $(NETLIB_LAPACK_DIR) blas_testing
+       (cd $(NETLIB_LAPACK_DIR)/BLAS && cat *.out)
+
 
 dummy :
 
@@ -318,9 +322,15 @@ clean ::
 ifeq ($(OSNAME), Darwin)
        @rm -rf getarch.dSYM getarch_2nd.dSYM
 endif
-       @rm -f Makefile.conf config.h cblas_noconst.h Makefile_kernel.conf config_kernel.h st* *.dylib
+       @rm -f Makefile.conf config.h Makefile_kernel.conf config_kernel.h st* *.dylib
        @touch $(NETLIB_LAPACK_DIR)/make.inc
        @$(MAKE) -C $(NETLIB_LAPACK_DIR) clean
        @rm -f $(NETLIB_LAPACK_DIR)/make.inc $(NETLIB_LAPACK_DIR)/lapacke/include/lapacke_mangling.h
        @rm -f *.grd Makefile.conf_last config_last.h
+       @(cd $(NETLIB_LAPACK_DIR)/TESTING && rm -f x* *.out testing_results.txt)
        @echo Done.
+
+# Makefile debugging trick:
+# call print-VARIABLE to see the runtime value of any variable
+print-%:
+       @echo '$*=$($*)'