Skip CBLAS DSP initializtion if OFFLOAD is disabled.
[dense-linear-algebra-libraries/linalg.git] / src / ti / linalg / Makefile
2 .PHONY: clean ARMonly linalg cleanall install build prebuild
4 LINALG_BLIS_DIR     = blis
5 LINALG_CBLAS_DIR    = cblas
6 LINALG_TICBLAS_DIR  = ticblas
7 LINALG_BLASACC_DIR  = blasblisacc
8 LINALG_CLAPACK_DIR  = clapack
9 BLIS_VERSION = $(shell cat $(LINALG_BLIS_DIR)/version)
11 CBLAS_HEADERS  =$(LINALG_CBLAS_DIR)/include/cblas.h
12 CLAPACK_HEADERS =$(LINALG_CLAPACK_DIR)/INCLUDE/blaswrap.h  
13 CLAPACK_HEADERS+=$(LINALG_CLAPACK_DIR)/INCLUDE/clapack.h  
14 CLAPACK_HEADERS+=$(LINALG_CLAPACK_DIR)/INCLUDE/f2c.h  
16 ifneq (,$(findstring DSP,$(MAKECMDGOALS)))
18 ifeq ($(LIBOS),LIB_RTOS)
19 CBLAS_HEADERS +=$(LINALG_TICBLAS_DIR)/ticblas.h
20 endif
22 ifeq ($(TARGET),SOC_K2H)
23 NUM_ARM_CORES=4
24 NUM_DSP_CORES=8
25 else ifeq ($(TARGET),SOC_C6678)
26 NUM_DSP_CORES=8
27 else ifeq ($(TARGET),SOC_AM572x)
28 NUM_ARM_CORES=2
29 NUM_DSP_CORES=2
30 else
31 $(call error, ERROR - TARGET NOT DEFINED. Must specify one of: TARGET=SOC_K2H, TARGET=SOC_C6678, TARGET=SOC_AM572x)
32 endif
34 endif
36 # MEM_MODEL needs to be defined for both build and clean
37 ifeq ($(MEM_MODEL),Large)
38 BLIS_CFG   = c66xLarge
39 else ifeq ($(MEM_MODEL),Medium)
40 BLIS_CFG   = c66xMedium
41 else ifeq ($(MEM_MODEL),Small)
42 BLIS_CFG   = c66xSmall
43 else
44 $(call error, ERROR - MEM_MODEL NOT DEFINED. Must specify one of: MEM_MODEL=Large, MEM_MODEL=Medium, MEM_MODEL=Small)
45 endif
47 # Build DSP code for DSP-only platforms and for ARM+DSP platforms. 
48 # All object binaries are added to a singl archive: lib/libcblas.ae66, which includes:
49 #    - CBLAS 
50 #    - BLIS for specified TARGET, MEM_MODEL, LIBOS (BIOS or OPENCL), NUM_DSP_CORES
51 #    - TICBLAS for specified TARGET, MEM_MODEL, LIBOS (BIOS or OPENCL)
52 DSPlibs:
53         cd $(LINALG_CBLAS_DIR); make arch=C66 alllib  || exit 1; \
54         cd ../$(LINALG_BLIS_DIR); ./configure -p install/$(BLIS_CFG) c66x; \
55         make -j8 MEM_MODEL=$(MEM_MODEL) TARGET=$(TARGET) LIBOS=$(LIBOS) NUM_DSP_CORES=$(NUM_DSP_CORES) || exit 1; make install; \
56         cd ../$(LINALG_TICBLAS_DIR)/src; make MEM_MODEL=$(MEM_MODEL) TARGET=$(TARGET) LIBOS=$(LIBOS) NUM_DSP_CORES=$(NUM_DSP_CORES) || exit 1; cd ../lib; \
57         echo "combining BLIS, CBLAS, and TICBLAS libraries into one: libcblas.ae66"; \
58         rm -rf blas_objs blis_objs; mkdir blas_objs blis_objs; cd blis_objs; ar x ../../../blis/install/$(BLIS_CFG)/lib/libblis.ae66; chmod +rw *; \
59         cd ../blas_objs; ar -x ../../../cblas/lib/C66/libcblas.ae66; ar -x ../libticblas.ae66; chmod +rw *; cd ../../..; \
60         rm -rf lib; mkdir lib; cd lib; ar -cr libcblas.ae66 ../ticblas/lib/blas_objs/*; ar -q libcblas.ae66 ../ticblas/lib/blis_objs/*; cd ..; \
61         rm -rf include; mkdir include; cp $(CBLAS_HEADERS) include
63 # Build ARM code for ARM+DSP platforms
64 ARMlibs:
65         cd $(LINALG_CBLAS_DIR); make arch=ARM alllib || exit 1; \
66         cd ../$(LINALG_BLIS_DIR); ./configure -p install/arm cortex-a15; make -j8 NUM_ARM_CORES=$(NUM_ARM_CORES) || exit 1; make install; \
67         cd ../$(LINALG_CLAPACK_DIR); make f2clib || exit 1; make cblaswrap || exit 1; cd SRC; make -j8 || exit 1; cd ..
69 # Build host-callable libraries for ARM+DSP platforms. 
70 # BLAS has a single archive: libcblas_armplusdsp.a, which includes:
71 #    - CBLAS ARM code
72 #    - BLIS ARM code for specified NUM_ARM_CORES
73 #    - BLAS wrapper (accelerator) code
74 #    - DSP code built by DSPlibs
75 # LAPACK has 3 archives: 
76 #    - liblapack.a: CLAPACK ARM library
77 #    - libcblaswr.a: CBLAS wrapper library used by CLAPACK
78 #    - libf2c.a: F2C library used by CLAPACK
79 ARMplusDSP: DSPlibs ARMlibs
80         cd $(LINALG_BLASACC_DIR)/src; make MEM_MODEL=$(MEM_MODEL) TARGET=$(TARGET) || exit 1; cd ../..; \
81         cd lib; rm -rf *; mkdir blis_objs blas_acc_objs; \
82         cp ../$(LINALG_BLASACC_DIR)/lib/libcblas_armplusdsp.a blas_acc_objs; \
83         cp ../$(LINALG_BLIS_DIR)/install/arm/lib/libblis.a blis_objs; \
84         cd blis_objs; ar -x libblis.a; cd ../blas_acc_objs; ar -x libcblas_armplusdsp.a; cd ../; \
85         ar -cr libcblas_armplusdsp.a blas_acc_objs/*.o; ar -q libcblas_armplusdsp.a blis_objs/*.o; rm -r blas_acc_objs blis_objs; cd ..; \
86         cp $(LINALG_CLAPACK_DIR)/lapack_ARM.a ./lib/liblapack.a; \
87         cp $(LINALG_CLAPACK_DIR)/libcblaswr_ARM.a ./lib/libcblaswr.a; \
88         cp $(LINALG_CLAPACK_DIR)/F2CLIBS/libf2c_ARM.a ./lib/libf2c.a; \
89         cp $(CLAPACK_HEADERS) include
91 cleanDSPlibs:
92         rm -f lib/*
93         cd $(LINALG_CBLAS_DIR); make arch=C66 clean; \
94         cd ../$(LINALG_BLIS_DIR); ./configure -p install/$(BLIS_CFG) c66x; make -j8 clean; rm -r install/$(BLIS_CFG); \
95         cd ../$(LINALG_TICBLAS_DIR)/src; make clean; 
97 cleanARMlibs:
98         cd $(LINALG_CBLAS_DIR); make arch=ARM clean; \
99         cd ../$(LINALG_BLIS_DIR); ./configure -p install/arm cortex-a15; make clean; rm -r install/arm; \
100         cd ../$(LINALG_BLASACC_DIR); make clean; \
101         cd ../$(LINALG_BLIS_DIR)/testsuite; make clean; \
102         cd ../../$(LINALG_CLAPACK_DIR); make clean
104 BLIStest:
105         cd $(LINALG_BLIS_DIR); ./configure -p install/arm cortex-a15; \
106         cd testsuite; make lib=OpenCLCBLAS -j8 
108 BLIStestDSP:
109         cd $(LINALG_BLIS_DIR); ./configure -p install/$(BLIS_CFG) c66x; \
110         cd testsuite/dsponly; make MEM_MODEL=$(MEM_MODEL) TARGET=$(TARGET) LIBOS=$(LIBOS) NUM_DSP_CORES=$(NUM_DSP_CORES)
112 BLAStest:
113         cd $(LINALG_CLAPACK_DIR)/BLAS/TESTING; make -f Makeblat1; make -f Makeblat2; make -f Makeblat3
115 CLAPACKtest:
116         cd $(LINALG_CLAPACK_DIR)/TESTING/MATGEN; make 
117         cd $(LINALG_CLAPACK_DIR)/TESTING/LIN; make
118         cd $(LINALG_CLAPACK_DIR)/TESTING/EIG; make
121 cleanARMplusDSP: cleanDSPlibs cleanARMlibs
123 docs: doxygen/doxycfg.txt doxygen/mainpage.dox
124         doxygen ./docs/doxygen/doxycfg.txt
126 installDSPlib:
127         install -m 755 -d ${DESTDIR}/include
128         install -m 755 -d ${DESTDIR}/lib
129         cp include/* ${DESTDIR}/include
130         cp ./lib/libcblas.ae66 ${DESTDIR}/lib
131         cp -r docs ${DESTDIR}
133 installARMplusDSPlib:
134         install -m 755 -d ${DESTDIR}/include
135         install -m 755 -d ${DESTDIR}/lib
136         cp include/* ${DESTDIR}/include
137         cp ./lib/libcblas_armplusdsp.a ${DESTDIR}/lib
138         cp ./lib/liblapack.a ${DESTDIR}/lib
139         cp ./lib/libcblaswr.a ${DESTDIR}/lib
140         cp ./lib/libf2c.a ${DESTDIR}/lib
141         cp -r docs ${DESTDIR}