Added DSP-only dgemm example.
[dense-linear-algebra-libraries/linalg.git] / make.inc
2 CPP   = g++
3 CL6X  = cl6x -mv6600 --abi=eabi $(DSP_INCLUDE)
4 CLOCL = clocl
6 LIBS  = -lOpenCL -locl_util #-lstdc++ -lrt 
8 UNAME_M :=$(shell uname -m)
10 OBJCOPY = arm-linux-gnueabihf-objcopy
12 ifneq (,$(findstring 86, $(UNAME_M)))
13     .DEFAULT_GOAL := cross
15     # In a cross compile environment we are assuming that the EVM file system
16     # is located on the build host and necessary ARM libraries are installed
17     # on that file system. 
18     ifneq ($(MAKECMDGOALS),clean)
19       ifneq ($(LIBOS),LIB_RTOS)
20         ifeq ($(TARGET_ROOTDIR),)
21           $(error Environment variable TARGET_ROOTDIR must be defined. Set it to point at the EVM root file system)
22         endif
23       endif
24           
25       ifeq ($(OMP_DIR),)
26         $(error Environment variable OMP_DIR must be defined. Set it to point at the OpenMP for DSP Installation Directory, or run the setup_hpc_env script available in the MCSDK-HPC installation)
27       endif
28     endif
30     # gcc ARM cross compiler will not, by default, search the host's
31     # /usr/include.  Explicitly specify here to find dependent vendor headers
32     cross: override CPP = arm-linux-gnueabihf-g++
33     cross: CPP_FLAGS += -I$(TARGET_ROOTDIR)/usr/include -idirafter /usr/include
34     #cross: CL6X_FLAGS += -I$(OMP_DIR)/packages/ti/runtime/openmp
36     # If cross-compilineg, provide path to dependent ARM libraries on the 
37     # target filesystem
38     cross: LD_FLAGS = -L$(TARGET_ROOTDIR)/lib -L$(TARGET_ROOTDIR)/usr/lib -Wl,-rpath-link,$(TARGET_ROOTDIR)/lib -Wl,-rpath-link,$(TARGET_ROOTDIR)/usr/lib 
39 endif
41 define FIND_DSP_PKG
42   export $(1)?=$$(patsubst %/$(3),%,$$(lastword $$(sort $$(wildcard $$(TI_SEARCH_PATH)/$(2)/$(3)))))
43   ifeq ($$($(1)),)
44     $$(error ERROR - $(1) is not defined and could not be found in $(TI_SEARCH_PATH)/ )
45   else
46     ifeq ($$(wildcard $$($(1))/$(3)),)
47       $$(error ERROR - "$(1) = $$($(1))" Is not valid!)
48     endif
49   endif
50   $$(info Using $(1) = $$($(1)))
51 endef
53 # CBLAS and BLIS directories
54 CBLAS_DSP_LIB = ../../cblas/lib/C66/libcblas_C66.ae66 
55 TICBLAS_DSP_LIB = ../../ticblas/lib/libticblas.ae66
56 CBLAS_ARM_LIB = ../../cblas/lib/ARM/libcblas_ARM.a
57 LIBARCH_LIB = $(LIBARCH_DIR)/lib/libArch.a66x
59 ifeq ($(MEM_MODEL),Large)
60 BLIS_DSP_LIB  = ../../blis/install/c66xLarge/lib/libblis.ae66
61 else ifeq ($(MEM_MODEL),Medium)
62 BLIS_DSP_LIB = ../../blis/install/c66xMedium/lib/libblis.ae66
63 else ifeq ($(MEM_MODEL),Small)
64 BLIS_DSP_LIB = ../../blis/install/c66xSmall/lib/libblis.ae66
65 #else ifeq ($(MEM_MODEL),Tiny)
66 endif
68 %.o: %.cpp
69         @echo Compiling $<
70         $(CPP) -c $(CPP_FLAGS) $<
72 %.o: %.c
73         @echo Compiling $<
74         $(CPP) -c $(CPP_FLAGS) $<
76 %.obj: %.c
77         @echo Compiling $<
78         $(CL6X) -c $(CL6X_FLAGS) $<
80 %.out: %.cl
81         @echo Compiling $< 
82         @$(CLOCL) $(CLOCL_FLAGS) $^
84 %.dsp_h: %.cl
85         @echo Compiling $< 
86         @$(CLOCL) -t $(CLOCL_FLAGS) $^
88 $(EXE):
90 cross: $(EXE)
92 clean::
93         @rm -f $(EXE) *.o *.obj *.out *.asm *.if *.opt *.bc *.objc *.map *.bin *.dsp_h
95 test: clean $(EXE)
96         @echo Running   $(EXE)
97         @./$(EXE) >> /dev/null
98         @if [ $$? -ne 0 ] ; then echo "FAILED !!!" ; fi